{"id":18223759,"url":"https://github.com/ZiRunHua/LeapLedger","last_synced_at":"2025-04-03T05:30:33.583Z","repository":{"id":260189872,"uuid":"688086497","full_name":"ZiRunHua/LeapLedger","owner":"ZiRunHua","description":"The back-end part of an accounting tool based on Flutter and Gin's front-end separation","archived":false,"fork":false,"pushed_at":"2024-11-16T11:29:56.000Z","size":901,"stargazers_count":110,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-16T12:25:50.845Z","etag":null,"topics":["accounting","dead-letter-queue","docker","event-driven","gin","gorm","jwt","ledger","mysql","nats","outbox","redis","swagger","web","websocket"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ZiRunHua.png","metadata":{"files":{"readme":"README.en.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-06T16:11:48.000Z","updated_at":"2024-11-14T16:06:43.000Z","dependencies_parsed_at":"2024-11-16T12:22:07.849Z","dependency_job_id":"762bcba9-5fc6-44bd-9a36-c29571e8ff94","html_url":"https://github.com/ZiRunHua/LeapLedger","commit_stats":null,"previous_names":["zirunhua/leapledger"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZiRunHua%2FLeapLedger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZiRunHua%2FLeapLedger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZiRunHua%2FLeapLedger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZiRunHua%2FLeapLedger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZiRunHua","download_url":"https://codeload.github.com/ZiRunHua/LeapLedger/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246944377,"owners_count":20858773,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accounting","dead-letter-queue","docker","event-driven","gin","gorm","jwt","ledger","mysql","nats","outbox","redis","swagger","web","websocket"],"created_at":"2024-11-04T01:02:14.672Z","updated_at":"2025-04-03T05:30:33.571Z","avatar_url":"https://github.com/ZiRunHua.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"![GitHub License](https://img.shields.io/github/license/ZiRunHua/LeapLedger)\n![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/ZiRunHua/LeapLedger)\n![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/ZiRunHua/LeapLedger/CI.yml)\n![GitHub Release](https://img.shields.io/github/v/release/ZiRunHua/LeapLedger)\n![Docker Pulls](https://img.shields.io/docker/pulls/xiaozirun/leap-ledger)\n[![Go Report Card](https://goreportcard.com/badge/github.com/ZiRunHua/LeapLedger)](https://goreportcard.com/report/github.com/ZiRunHua/LeapLedger)\n![GitHub stars](https://img.shields.io/github/stars/ZiRunHua/LeapLedger?style=social)\n\n\u003ch1 align=\"center\"\u003eLeapLedger\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"docs/README.en.md\"\u003eEnglish\u003c/a\u003e | \u003ca href=\"README.md\"\u003e简体中文\u003c/a\u003e\n\u003c/p\u003e\n\n`LeapLedger` is a free and open-source accounting software with a decoupled front-end and back-end. Powered by `Flutter`, it provides a smooth and seamless user experience, easily extending to iOS, Mac, and Windows in the future. The server is built using the `Gin` framework, implemented with `NATS`, `MySQL`, and `Redis`, offering fast responses and stable services. Deployment and building of client installation packages can be quickly achieved using `Docker`.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"https://github.com/user-attachments/assets/e5151e7a-6b1f-4903-b4f1-8ffdc20c1b46\" alt=\"Description\" width=\"150\"\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"https://github.com/user-attachments/assets/03dce625-a340-4aa5-92fd-ac4e59ee18b9\" alt=\"Description\" width=\"150\"\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"https://github.com/user-attachments/assets/fd19053c-a469-4fcd-9d1e-9371c094039c\" alt=\"Description\" width=\"150\"\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"https://github.com/user-attachments/assets/4d605f41-18fc-41b0-bbdf-d50ae1ecc550\" alt=\"Description\" width=\"150\"\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"https://github.com/user-attachments/assets/0579110f-66b5-4739-9cc7-bcaeef4e246f\" alt=\"Description\" width=\"150\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Client\nFlutter client project transfer: [LeapLedger-App](https://github.com/ZiRunHua/LeapLedger-App)\n\nDownload the latest Android installation package: [v1.0.0](https://github.com/ZiRunHua/LeapLedger-App/releases/tag/v1.0.0). Data is periodically deleted, please deploy the server for usage.\n\n## Table of Contents\n\n- [What We Have](#what-we-have)\n    - [Features](#features)\n    - [API Services](#api-services)\n- [Running/Deployment](#runningdeployment)\n    - [Build Image](#build-image)\n- [API Documentation](#api-documentation)\n- [Protocol](#protocol)\n- [Contributions](#contributions)\n- [Contact Me](#contact-me)\n- [Acknowledgements](#acknowledgements)\n\n## What We Have\n* :iphone: A powerful architecture based on Flutter, providing a smooth user experience, easily extendable to iOS, Mac, and Windows in the future.\n\n* :whale: Whether it's server deployment or client packaging, everything is handled through Docker. :parasol_on_ground:\n\n### Features\n* :family_man_woman_girl_boy: Shared ledgers that sync records with your partner and family while maintaining independent bookkeeping.\n\n* :timer_clock: Scheduled bookkeeping for fixed monthly expenses like rent and communication fees—no more manual entry hassle!\n\n* :credit_card: Only want to handle the accounts once a month? No problem, we can import bills from Alipay and WeChat.\n\nIn addition to these, we also have:\n* :books: Multi-ledger management and :earth_africa: timezone-ledgers.\n* Clear views to understand recent situations.\n* Easily browse records and charts. :bar_chart:\n\n### API Services\nWe have a fast, responsive, and stable API service.\n\n* :shield: Ledger authentication based on the Gin middleware and JWT identity verification ensures security.\n\n* :zap: Asynchronous and event-driven architecture based on NATS provides faster responses.\n\n* :mailbox: The Outbox pattern ensures data consistency while operating asynchronously. :dart:\n\n* :floppy_disk: Dead-letter queues guarantee message retention, enhancing system stability.\n\n* :arrows_counterclockwise: Database updates and initialization based on `Gorm` ensure seamless API service upgrades.\n\n## Running/Deployment\nClone the project:\n```bash\ngit clone https://github.com/ZiRunHua/LeapLedger.git\n```\nFirst, start MySQL:\n```bash\ndocker-compose up -d leap-ledger-mysql\n```\nCheck the MySQL logs and wait for ready for connections before executing `docker-compose up -d`:\n```bash\ndocker-compose logs -f leap-ledger-mysql\n```\n```bash\ndocker-compose up -d\n```\nAccess http://localhost:8080/public/health to verify the service.\n\nIf you don't want to rely on Docker, you can modify the request addresses of mysql, nats, and redis in the [./config.yaml](./config.yaml) file and run it locally\n\nFor client packaging details, visit: https://github.com/ZiRunHua/LeapLedger-App\n\n### Build Image\n\nThe `docker/Dockerfile` can build an image with a Go compilation environment. However, since Go only needs the binary files to run, you can build a minimal image.\n\nMinimal image:\n```bash\ndocker build -t xiaozirun/leap-ledger:build -f docker/Dockerfile.build .\n```\nRemote debugging image on port 2345:\n```bash\ndocker build -t xiaozirun/leap-ledger:debug -f docker/Dockerfile.debug .\n```\nTesting image:\n```bash\ndocker build -t xiaozirun/leap-ledger:test -f docker/Dockerfile.test .\n```\nPlease note the differences in image tags.\n## API Documentation\n\nAdopting a RESTful API design style, you can choose to view the documentation in the following formats:\n* [ApiFox Documentation](https://apifox.com/apidoc/shared-df940a71-63e8-4af7-9090-1be77ba5c3df)\n* [swagger.json](docs/swagger.json)\n* [swagger.yaml](docs/swagger.yaml)\n\n## Protocol\nThe [License](LICENSE) is [GNU Affero General Public License v3](https://www.gnu.org/licenses/agpl-3.0.html)\n\nIt can be used for learning or personal purposes, but not for commercial use.\n## Contributions\nThe LeapLedger project is still in its early development stage, and many features and details are continuously being refined.\n\nWe welcome contributions in any form, including but not limited to:\n\n* Code contributions: fixing bugs, developing new features, optimizing code, writing tests, etc.\n* Issue feedback: submitting bug reports, suggesting improvements, etc.\nIf you're interested in LeapLedger, feel free to join our community and contribute to its development.\n\nWe will develop and adjust features in the `develop` branch, while the `main` branch is for releasing stable versions.\n\n## Contact Me\nEmail: \u003ca href=\"mailto:zeng807046079@gmail.com\"\u003ezeng807046079@gmail.com\u003c/a\u003e\n\n## Acknowledgements\nThanks to my friend You for testing, which saved me a lot of effort. I really appreciate it!\n\n## Stargazers over time\n[![Stargazers over time](https://starchart.cc/ZiRunHua/LeapLedger.svg?variant=adaptive)](https://starchart.cc/ZiRunHua/LeapLedger)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZiRunHua%2FLeapLedger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FZiRunHua%2FLeapLedger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZiRunHua%2FLeapLedger/lists"}