An open-source small business accounting platform designed to provide powerful accounting functionality in a user friendly format.
The source is licensed under GPLv3 to ensure it remains open to anyone that wants to modify or extend it.
Get started quickly by cloning this repository and creating a .env
file in the root directory containing the following (replace your_db_username and your_db_password):
# MySQL Database
DB_HOST=localhost
DB_PORT=3306
DB_USER=openbooksapi
DB_PASSWORD={your_db_password}
DB_DATABASE=openbooks
Then run:
yarn
# For dev
npm start
# For Docker
docker-compose up
By default the API is available on port 4000
.
Double Entry Accounting | Expense/Revenue Tracking | Invoicing |
Bank Import/Reconciliation | Reports | Financial Statements |
Web/Mobile Apps | Dashboards | Open API |
Customers/Vendors | Mileage Tracking | Employees/Payroll |
This platform is separated into several distinct layers forming an n-tier architecture to ensure it can be extended and deployed in many different environments.
It is composed of a GraphQL API exposing core business logic (this repo) backed by a standard data model. This serves to simplify extensibility and provide a clear guide for future development. There is also a pre-built front-end over at OpenBooksUI but custom implementations are encouraged.
The goal is to offer this platform in a format that can be easily deployed by users without technical skill. A SaaS offering may also be considered if it is deemed beneficial for end users and can be justified given the costs.
The core business logic layer is written in NodeJS using Apollo Server.
The browser UI is written in ReactJS (OpenBooksUI) to enable powerful, responsive client-side functionality. However, as mentioned in Architecture, the platform is designed to be extended easily. The web API provides all the core functionality in a format that can be implemented by other UI frameworks and languages and mobile applications.
As this project is in its early stages, we are in need of contributors. Much work is to be done from design to coding to documentation; all of these areas require special attention and will benefit from your input. Feel free to make suggestions, open issues and submit pull requests to improve the platform.
Git Flow is used to keep track of branches and the various stages of development that they represent.
Branch Pattern | Purpose |
---|---|
master | Contains release history |
release | Contains a specific release version (e.g. release/1.0.0 ) |
develop | Contains "next release" actively in development |
feature | Contains work for a specific feature (e.g. feature/do-something ) |
bugfix | Contain fixes for a bug (e.g. bugfix/uh-oh ) |
Run git flow init
to enable Git Flow when you clone this repository and accept all of the default values for the
branch names. All commits should be done via a branch and submitted in a pull request.
The standard flow from feature to release should look like:
feature -> develop -> release -> master
where each arrow represents a pull request and merge.