Table of Contents
- The purpose of this web app is to record and manage your money.
- The HTML files (templ files here) are currently only in french.
- The deployment consist of 3 things :
- the binary built which contains the front-end and back-end code
- an asset folder with all the images, icons and fonts
- a SQLite database file
- This application is a monolith with some endpoints for the API and others for the UI. Both uses the same functions, but return JSON for the API and HTML for the UI.
- basic features for users
- onboarding checklist to discover basics features
- record expenses per user, account and category
- edit / update your records
- stats:
- year by year with current balance available per account
- year by year or month by month per category
- advanced features for users
- ways to handle recurrent records
- use URL shortcuts with default values in forms to speed up data entries (like groceries)
/record/insert/{account}/{category}/{product}/{priceDirection}/{price}
/record/insert/LA/Epargne/designation/+/56.78
- space =
%20
/record/insert/LA/Epargne/designation%20avec%20espace/+/56.78
- manage recurrent expenses or gains in a specific tab with a schedule
- use URL shortcuts with default values in forms to speed up data entries (like groceries)
- handle multiple categories per user and allow budgeting for each, 2 budgeting options:
- reset the budget each period
- keep the rest of the last budget period and add it to the next
- handle multiple bank accounts per user and allow transfer between them
- validate or cancel each record
- lend / borrow with registered tiers
- ways to handle recurrent records
- bulk data operation for users
- import CSV files to insert / update / delete records
- export CSV files to keep / use all the data with other apps or update your data in bulk
- generic features in app
- create users
- auth with 1 active session per user
- save general parameters preferences per user
- smartphone first front-end
- tested on the viewport:
- Screen Width: 360 pixels
- Screen Height: 640 pixels
- screen viewport on viewportsizer
- tested on Chrome for Android and Chrome for Windows Desktop
- if you have any visual trouble on a different Browser/OS combination, submit an issue
- tested on the viewport:
- admin features
- shutdown the application with SQLite checkpoint, which clean the
db-shm
anddb-wal
files
- shutdown the application with SQLite checkpoint, which clean the
To get a local copy up and running follow these simple example steps.
- test the app :
# generate environment variables : export SQLITE_DB_FILENAME="test.db" export COOKIE_LENGTH=64 export EXE_PATH="/gofi" export ADMIN_EMAIL="[email protected]" export ADMIN_EMAIL_B="[email protected]" export NOTIFICATION_FLAG=0 export NOTIFICATION_URL="https://notification.server/example" export HEADER_IP="header-IP-test" # run the tests (create a new DB named test.db) : cd /gofi go clean -testcache go test ./data/dbscripts/initDB go test ./back/api/test/users go test ./back/api/test/params go test ./back/api/test/records go test ./back/api/test/csv go test ./back/api/test/save go test ./back/api/test/shutdown
- run the app with the real database :
# only the first time. # exec initDB first to create DB file with required tables export SQLITE_DB_FILENAME="gofi.db" export EXE_PATH="/gofi" cd /gofi go run ./data/dbscripts/initDB # the DB is created in the "dbscripts" folder, move it under: "data/dbFiles"
export SQLITE_DB_FILENAME="gofi.db" export COOKIE_LENGTH=64 export EXE_PATH="/gofi" export ADMIN_EMAIL="[email protected]" export ADMIN_EMAIL_B="[email protected]" export NOTIFICATION_FLAG=1 export NOTIFICATION_URL="https://notification.server/example" export HEADER_IP="header-IP" cd /gofi templ generate go run .
- on Windows Powershell:
- replace
export
with$Env:
- replace
cd /gofi
withcd c:\gofi\
- replace
- more informations on the structure of this app can be found in infos.md
- Distributed under the MPL-2.0 License. See
LICENSE
file for more information. - Link to the original template of the license: https://www.mozilla.org/en-US/MPL/2.0/
©2024 Benjamin MARY
- Benjamin MARY - [email protected]
- Project Link: https://github.com/BenjaminMary/gofi
Join the community on (limited to 100 invitations, contact me if used):