Acronym for Where is my money, a web app for expenses tracking. This is a monorepo. For frontend I'm using React, and on backend, Node express.js with an sqlite database.
touch database.sqlite
docker-compose up
- Node.js >= 13, I'm using 14.15.4
- python to build sqlite3 package using node-pre-gyp (sudo apt install python)
ADMIN_EMAIL=admin@gmail.com
ADMIN_PASS=xxxxxxxx
LOG_LEVEL=
# secret for encryption of jwt signature
JWT_SECRET=yoursecret
# number of rounds for Blowfish algorithm for hashing user password
BCRYPT_ROUNDS=12
# lifetime of the token (in seconds)
JWT_LIFETIME=86400
# algorithm used in token signing
JWT_ALGORITHM=HS256
# passphrase used to encrypt access password
AES_PASSPHRASE=xxxxxxx
# Resync frequency in minutes
RESYNC_FREQ=10
UPLOAD_MAX_SIZE=10
UPLOAD_MAX_RESOLUTION=1920
# Vapid keys for web push notifications
# generate using npx web-push generate-vapid-keys
PRIVATE_VAPID_KEY=xxxxxxxxx
WEB_PUSH_EMAIL=xxxx@xxx.com
REACT_APP_PUBLIC_VAPID_KEY=yyyyyyyyyy
REACT_APP_API_HOST=http://localhost:3001
REACT_APP_NOTIFIER_HOST=http://localhost:3002
Creates user account Fields:
- email (required)
- password (required)
- name
Generates jwt valid token Fields:
- email (required)
- password (required)
Retrieves users
Creates user Fields:
- email (required)
- password (required)
- level
Updates user
Deletes user
Retrieves banks accounts
Creates bank account Fields:
- name (required)
- number (required)
- description
- accessId
- accessPassword
Updates bank account Fields:
- name (required)
- number (required)
- description
- accessId
- accessPassword
Deletes bank account
Retrieves transactions
Creates transaction Fields:
- amount (required)
- emitter (required)
- emitterName
- description
- tags <Array(numbers)>
Updates transaction
Deletes transaction
Retrieves tags
Creates tag Fields:
- name
- rules <Array(number)>: Arrays of rule ids
Updates tag
Deletes tags
Retrieves tagging rules
Creates tagging rule Fields:
- name
- type
- value
Updates tagging rule
Deletes tagging rule
Retrieves recurrent payments
Creates recurrent payment Fields:
- name (required)
- emitter (required)
- amount (required)
- transactionId
Updates recurrent payment
Deletes recurrent payment