Skip to content

Latest commit

 

History

History
142 lines (108 loc) · 6.71 KB

README.en.md

File metadata and controls

142 lines (108 loc) · 6.71 KB

GitHub License GitHub go.mod Go version GitHub Actions Workflow Status GitHub Release Docker Pulls Go Report Card GitHub stars

LeapLedger

English | 简体中文

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.

Description Description Description Description Description

Client

Flutter client project transfer: LeapLedger-App

Download the latest Android installation package: v1.0.0. Data is periodically deleted, please deploy the server for usage.

Table of Contents

What We Have

  • 📱 A powerful architecture based on Flutter, providing a smooth user experience, easily extendable to iOS, Mac, and Windows in the future.

  • 🐳 Whether it's server deployment or client packaging, everything is handled through Docker. ⛱️

Features

  • 👨‍👩‍👧‍👦 Shared ledgers that sync records with your partner and family while maintaining independent bookkeeping.

  • ⏲️ Scheduled bookkeeping for fixed monthly expenses like rent and communication fees—no more manual entry hassle!

  • 💳 Only want to handle the accounts once a month? No problem, we can import bills from Alipay and WeChat.

In addition to these, we also have:

  • 📚 Multi-ledger management and 🌍 timezone-ledgers.
  • Clear views to understand recent situations.
  • Easily browse records and charts. 📊

API Services

We have a fast, responsive, and stable API service.

  • 🛡️ Ledger authentication based on the Gin middleware and JWT identity verification ensures security.

  • ⚡ Asynchronous and event-driven architecture based on NATS provides faster responses.

  • 📫 The Outbox pattern ensures data consistency while operating asynchronously. 🎯

  • 💾 Dead-letter queues guarantee message retention, enhancing system stability.

  • 🔄 Database updates and initialization based on Gorm ensure seamless API service upgrades.

Running/Deployment

Clone the project:

git clone https://github.com/ZiRunHua/LeapLedger.git

First, start MySQL:

docker-compose up -d leap-ledger-mysql

Check the MySQL logs and wait for ready for connections before executing docker-compose up -d:

docker-compose logs -f leap-ledger-mysql
docker-compose up -d

Access http://localhost:8080/public/health to verify the service.

If you don't want to rely on Docker, you can modify the request addresses of mysql, nats, and redis in the ./config.yaml file and run it locally

For client packaging details, visit: https://github.com/ZiRunHua/LeapLedger-App

Build Image

The 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.

Minimal image:

docker build -t xiaozirun/leap-ledger:build -f docker/Dockerfile.build .

Remote debugging image on port 2345:

docker build -t xiaozirun/leap-ledger:debug -f docker/Dockerfile.debug .

Testing image:

docker build -t xiaozirun/leap-ledger:test -f docker/Dockerfile.test .

Please note the differences in image tags.

API Documentation

Adopting a RESTful API design style, you can choose to view the documentation in the following formats:

Protocol

The License is GNU Affero General Public License v3

It can be used for learning or personal purposes, but not for commercial use.

Contributions

The LeapLedger project is still in its early development stage, and many features and details are continuously being refined.

We welcome contributions in any form, including but not limited to:

  • Code contributions: fixing bugs, developing new features, optimizing code, writing tests, etc.
  • Issue feedback: submitting bug reports, suggesting improvements, etc. If you're interested in LeapLedger, feel free to join our community and contribute to its development.

We will develop and adjust features in the develop branch, while the main branch is for releasing stable versions.

Contact Me

Email: zeng807046079@gmail.com

Acknowledgements

Thanks to my friend You for testing, which saved me a lot of effort. I really appreciate it!

Stargazers over time

Stargazers over time