William Brawner
2a7d674204
The previous implementation only checked that at least one month had passed between the last run date and now by subtracting the ordinal values. If it were February (month 2) and the previous run date were in January (month 1), then 2 - 1 would equal 1, so it would have been one month since the previous run and we would create the recurring transaction. If it were December however (month 12), the following month would be January (month 1), and 1 - 12 would be -11, so it would appear that we had already created a transaction 11 months in the future. The new implementation also takes the year into account to avoid this situation. |
||
---|---|---|
.github/workflows | ||
api | ||
app | ||
core | ||
db | ||
gradle/wrapper | ||
storage | ||
testhelpers | ||
web | ||
.gitignore | ||
build.gradle.kts | ||
captain-definition | ||
docker-compose.yml | ||
Dockerfile | ||
gradlew | ||
gradlew.bat | ||
LICENSE | ||
README.md | ||
settings.gradle.kts |
Twigs Server
This is the backend application that powers the Android, iOS, and web applications for Twigs, a personal finance/budgeting app. None of these apps are complete, so expect bugs, and they are all in various stages of development, so expect some feature disparity between platforms.
Prerequisites
- JDK 14 or newer
- PostgreSQL 13 or newer
- (optional) Docker
Running
Prior to running the app, make sure you have a PostgreSQL server running, with a database and user ready to go. To avoid the hassle of figuring out how to get it installed locally, using Docker is recommended, and a sample docker-compose.yml
file is included in the root of the repository. If you already have a PostgreSQL server running, you can run the app from the command line with gradle:
./gradlew run
Configuration
Some parameters of Twigs can be configured via environment variables:
Environment Variable | Default Value | Note |
---|---|---|
TWIGS_PORT |
8080 |
Port for web server to listen on |
TWIGS_DB_HOST |
localhost |
PostgreSQL server host |
TWIGS_DB_PORT |
5432 |
PostgreSQL server port |
TWIGS_DB_NAME |
twigs |
PostgreSQL database name |
TWIGS_DB_USER |
twigs |
PostgreSQL database user |
TWIGS_DB_PASS |
twigs |
PostgreSQL database password |
TWIGS_PW_SALT |
Salt to use for password, generated if empty or null |
Building
Building the app is also handled with gradle:
./gradlew shadowJar