- About The Project
- Getting Started
- API Documentation
- Roadmap
- Contributing
- License
- Maintainers
- Contact
- Acknowledgments
Pronounced: Cash-Share
A full-stack application designed to help users track shared expenses and split bills easily. The app features a Flutter mobile client and a Go backend with PostgreSQL database.
To set up the project locally, follow these instructions for both the client and server components.
- Go >= 1.25.3 (test for lower)
- PostgreSQL database
- Flutter SDK >= 3.9.2 (test for lower)
- Dart SDK (included with Flutter)
-
Clone the repo
git clone https://github.com/pranaovs/qashare.git
-
Switch to the directory
cd qashare
-
Switch to the project directory
cd server -
Install the dependencies
go get
-
Run the app
go run .
-
Download and edit the
docker-compose.ymlfile to set your environment variables. -
Run Docker Compose
docker compose up
-
Switch to the project directory
cd client -
Install the dependencies
flutter pub get
-
Run the app
flutter run
The Qashare API is documented using Swagger/OpenAPI. You can access the Swagger UI by navigating to: https://qashare.pranaovs.me/swagger/index.html
The Swagger UI provides:
- Complete API endpoint documentation
- Request/response schemas for all operations
- Interactive testing capability (try out API calls directly from the browser)
- Authentication using JWT Bearer tokens
- Set up Flutter client structure
- Set up Go backend with Gin framework
- Implement PostgreSQL database integration
- User authentication and authorization
- Expense tracking and management
- Proper logout flow
- Create frontend (not the vibe-coded slop)
- Payment settlement
- Frontend integration
- Settlements in db
- Settlement verification
- Bill splitting algorithms
- Group management features
- User spending reports
- Guest Users
- Permission management
- Edit history
- Data import/export
- Statements generation
- Bundle server in client for fully-local usage
- Upload to cloud option
- Open embedded server to LAN
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the AGPL-3.0 License. See LICENSE for more information.
- Sasvat S R (client/) - @sasvat007
- Pranaov S (server/) - @pranaovs
Pranaov S - @pranaovs
Repo Link: https://github.com/pranaovs/qashare