feat: auto-generate recurring expenses, tagging system, expense indicators#6
Merged
Merged
Conversation
…ators - Server-side recurring processor runs on startup and on a configurable interval (RECURRING_INTERVAL_MS, default 1h). Idempotent — uses a Set<"recurringId|date"> to prevent duplicates. Only generates expenses for today onward (no historical backfill). Timezone-aware via TZ env var (default Asia/Kolkata). - Tags: user-created tags table with junction tables for both expenses and recurring expenses. Tags on a recurring rule are auto-inherited by generated expenses. Full CRUD via /api/tags. - Expense list shows an "Auto" badge (RefreshCw icon) for expenses generated from a recurring rule, plus tag pills and a tag filter. - Add/edit dialogs for expenses and recurring expenses include a tag multi-select. The recurring dialog labels tags as "auto-applied to generated expenses". - Vite config updated to load root .env via loadEnv() so VITE_* vars and PORT are available at config evaluation time. - Server dev script uses --env-file=../.env to pick up root .env. - docker-compose.yml passes TZ env var (default Asia/Kolkata).
Introduces server/src/logger.ts — a minimal [timestamp] [LEVEL] [tag] logger that routes to console.log/warn/error by level. - HTTP middleware logs every request: METHOD /path → STATUS (Xms), using warn for 4xx and error for 5xx - Startup events: DB init, recurring interval, server listen address - Recurring processor: logs the target date, number of active rules, each generated expense, and a final created/nothing-to-do summary - All route files log mutations (POST/PUT/DELETE) with key identifiers and notable errors (404, 409 conflict, validation rejections)
- New release.yml triggers on v* tag pushes (e.g. v1.0, v1.2.3) and builds/pushes the Docker image tagged with the git tag name to GHCR - docker.yml cleanup step now ignores v* tags in addition to 'latest', so versioned releases are never pruned by the rolling-3 cleanup job
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.