Riddy21 / Riddy21/Friday_Budgeting_Pro

feat(savings): savings goals — set targets with deadlines and track progress

Open
#249 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1
Forks
1
PR merge metrics
No merged PRs in 30d

Description

Summary

Allow users to define savings goals (target amount + optional deadline) and track progress toward them via chat.

Data model

CREATE TABLE savings_goals (
    id          TEXT PRIMARY KEY,
    user_id     TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    name        TEXT NOT NULL,              -- e.g. "Emergency Fund"
    target      REAL NOT NULL,             -- e.g. 10000.00
    deadline    TEXT,                      -- ISO date, optional
    line_item_id TEXT,                     -- optional: tie to a specific savings line item
    created_at  INTEGER,
    updated_at  INTEGER
);

Goal progress calculation

  • Linked to a line item: progress = cumulative savings entries for that line item
  • Unlinked: progress is tracked via manual add_to_savings_goal() updates or inferred from total savings

Example

Emergency Fund
Target:   $10,000
Deadline: December 2026
Saved:    $4,200  (42%)
Monthly needed to hit target: $633
On track: ✅ (saving $750/mo avg)

Acceptance criteria

  • Goals can be created, updated, and deleted
  • Progress calculated automatically from linked savings line items
  • "Monthly needed" field computed from remaining + deadline
  • Deadline optional — shows open-ended progress when absent
  • Unit tests

Part of Epic #247

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the savings and chat entry points, the savings line-item handling, and any existing database migration patterns. Use the proposed savings_goals schema and the add_to_savings_goal() path as the starting points, then add unit tests for creation, updates, deletion, linked progress, deadlines, and open-ended goals. Done means all acceptance criteria are covered by tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, sql
Domain
backend, databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.