💰
🔥        Personal Finance Tracker                                                      🔥
      A personal finance tracker is a software application that helps users keep track of their
      income, expenses, and savings. It allows users to categorize their expenses, set up a
      budget, track investments, and generate reports on their financial situation. With a
      personal finance tracker, users can gain better control over their finances and make
      informed decisions to achieve their financial goals.
      🎯 Product Backlog
      Following User Stories are categorized with the perspective of experienced developer;
      to you easy might be difficult or difficult might be easy. Consider difficulty as per your
      discretion i.e. You are free to change, difficulty level; given level is just a guide line.
      You need to implement any 10 to complete this project.
      😝 Easy, 🙂 Moderate, 🙃 Difficult
        Sr               User Story                                                  Level
                         As a user, I want to be able to create an account on the
        1                application, so that I can track my income, expenses, and   😝
                         savings.
🔥 Personal Finance Tracker 🔥                                                                        1
        Sr               User Story                                                      Level
                         As a user, I want to be able to enter my income sources
        2                into the application, so that I can track my total income       😝
                         over time.
        3
                         As a user, I want to be able to enter my expenses into the
                         application, so that I can track where my money is going.
                                                                                         😝
                         As a user, I want to be able to categorize my expenses on
        4
                         the application, so that I can see how much I'm spending
                         on different categories like groceries, rent, and
                                                                                         😝
                         entertainment.
                         As a user, I want to be able to set up a budget on the
        5                application, so that I can track my spending against my         😝
                         budgeted amounts.
                         As a user, I want to be able to view my expenses and
        6                income in a visual format like tables, so that I can easily     🙂
                         understand my financial situation.
                         As a user, I want to be able to set savings goals on the
        7                application, so that I can track my progress towards those      🙂
                         goals.
                         As a user, I want to be able to link my bank accounts and
                         credit cards to the application, so that my transactions are
        8                automatically imported and tracked. Just Add bank details       🙂
                         and credit card details, actual communication is not
                         required.
                         As a user, I want to be able to receive alerts and
        9                notifications from the application, so that I can stay on top   🙂
                         of my finances.
        10
                         As a user, I want to be able to set reminders on the
                         application, so that I can stay on top of bills and payments.
                                                                                         🙂
                         As a user, I want to be able to generate reports on my
        11
                         finances, such as income statements and balance sheets,
                         so that I can get a comprehensive view of my financial
                                                                                         🙃
                         situation.
                         As a user, I want to be able to track my investments on the
        12               application, so that I can see how they're performing over      🙃
                         time.
🔥 Personal Finance Tracker 🔥                                                                     2
        Sr               User Story                                                       Level
                         As a user, I want to be able to set up recurring expenses
        13               on the application, so that I can track them over time           🙃
                         without having to manually enter them each time.
                         As a user, I want to be able to customize the categories
        14               and labels used on the application, so that I can tailor it to   🙃
                         my specific financial needs.
                         As a user, I want to be able to export my financial data
        15               from the application, so that I can use it in other              🙃
                         applications and software tools.
       ⚠  Hints given below are for understanding purpose only, you
      might need to add/modify certain things, or you might need to do
      every thing from scratch. Do not consider hints as final/polished
      requirements, use your logic before you work on it. Hints might be
      useless to you. Again remember, hints are just guidelines, use it
      for understanding purpose only.
      🎯 Hint for Database Structure
      Users Table
        Column Name      Data Type           Description
        user_id          INTEGER             Primary key
        username         VARCHAR(255)        Unique username
        email            VARCHAR(255)        User's email address
        password         VARCHAR(255)        Hashed password
      Income Table
        Column Name      Data Type           Description
        income_id        INTEGER             Primary key
        user_id          INTEGER             Foreign key referencing Users.user_id
        source           VARCHAR(255)        Source of income
        amount           DECIMAL             Amount of income
🔥 Personal Finance Tracker 🔥                                                                      3
        date             DATE           Date of income
      Expense Table
        Column Name      Data Type      Description
        expense_id       INTEGER        Primary key
        user_id          INTEGER        Foreign key referencing Users.user_id
        category_id      INTEGER        Foreign key referencing Category.category_id
        merchant         VARCHAR(255)   Name of merchant
        amount           DECIMAL        Amount of expense
        date             DATE           Date of expense
      Category Table
        Column Name      Data Type      Description
        category_id      INTEGER        Primary key
        user_id          INTEGER        Foreign key referencing Users.user_id
        name             VARCHAR(255)   Name of category
      Budget Table
        Column Name      Data Type      Description
        budget_id        INTEGER        Primary key
        user_id          INTEGER        Foreign key referencing Users.user_id
        category_id      INTEGER        Foreign key referencing Category.category_id
        amount           DECIMAL        Budgeted amount for the category
      Savings Table
        Column Name      Data Type      Description
        savings_id       INTEGER        Primary key
        user_id          INTEGER        Foreign key referencing Users.user_id
        goal             VARCHAR(255)   Name of savings goal
        target_amount    DECIMAL        Target amount for the goal
        current_amount   DECIMAL        Current amount saved for the goal
🔥 Personal Finance Tracker 🔥                                                           4
      Investment Table
        Column Name       Data Type        Description
        investment_id     INTEGER          Primary key
        user_id           INTEGER          Foreign key referencing Users.user_id
        name              VARCHAR(255)     Name of investment
        type              VARCHAR(255)     Type of investment
        value             DECIMAL          Current value of investment
        date              DATE             Date of investment
      Transaction Table
        Column Name       Data Type                   Description
        transaction_id    INTEGER                     Primary key
        user_id           INTEGER                     Foreign key referencing Users.user_id
        type              ENUM('income', 'expense')   Type of transaction (income or expense)
        category_id       INTEGER                     Foreign key referencing Category.category_id
        merchant          VARCHAR(255)                Name of merchant
        amount            DECIMAL                     Amount of transaction
        date              DATE                        Date of transaction
      🎯 Hints REST API
           POST /api/users: Create a new user account
           GET /api/users/{user_id}: Retrieve user information
           PUT /api/users/{user_id}: Update user information
           DELETE /api/users/{user_id}: Delete user account
           POST /api/income: Add new income
           GET /api/income: Retrieve all income for a user
           GET /api/income/{income_id}: Retrieve income by ID
           PUT /api/income/{income_id}: Update income by ID
🔥 Personal Finance Tracker 🔥                                                                         5
           DELETE /api/income/{income_id}: Delete income by ID
           POST /api/expenses: Add new expense
           GET /api/expenses: Retrieve all expenses for a user
           GET /api/expenses/{expense_id}: Retrieve expense by ID
           PUT /api/expenses/{expense_id}: Update expense by ID
           DELETE /api/expenses/{expense_id}: Delete expense by ID
           GET /api/categories: Retrieve all categories for a user
           POST /api/categories: Add new category
           PUT /api/categories/{category_id}: Update category by ID
           DELETE /api/categories/{category_id}: Delete category by ID
           POST /api/budgets: Add new budget item
           GET /api/budgets: Retrieve all budget items for a user
           GET /api/budgets/{budget_id}: Retrieve budget item by ID
           PUT /api/budgets/{budget_id}: Update budget item by ID
           DELETE /api/budgets/{budget_id}: Delete budget item by ID
           POST /api/savings: Add new savings goal
           GET /api/savings: Retrieve all savings goals for a user
           GET /api/savings/{savings_id}: Retrieve savings goal by ID
           PUT /api/savings/{savings_id}: Update savings goal by ID
           DELETE /api/savings/{savings_id}: Delete savings goal by ID
           POST /api/investments: Add new investment
           GET /api/investments: Retrieve all investments for a user
           GET /api/investments/{investment_id}: Retrieve investment by ID
           PUT /api/investments/{investment_id}: Update investment by ID
           DELETE /api/investments/{investment_id}: Delete investment by ID
🔥 Personal Finance Tracker 🔥                                                  6
      🎯 Hints for Screens
        1. Sign up/login screen: This screen will allow users to create a new account or log
           into an existing one.
        2. Dashboard screen displaying an overview of finances: This screen will provide
           users with an overview of their finances, including their income, expenses, budget
           progress, and savings goals.
        3. Income entry screen: This screen will allow users to add their sources of income,
           such as their salary or freelance earnings.
        4. Expense entry screen with options for categorization: This screen will allow users to
           add their expenses and categorize them, such as groceries, rent, and
           entertainment.
        5. Budget setup screen: This screen will allow users to set up a budget by setting
           limits for different expense categories.
        6. Budget tracking screen: This screen will show users their progress towards their
           budget goals and highlight areas where they may be overspending.
        7. Savings goal setup screen: This screen will allow users to set up savings goals,
           such as for a vacation or a down payment on a house.
        8. Savings goal tracking screen: This screen will show users their progress towards
           their savings goals and suggest ways to reach them faster.
        9. Investments tracking screen: This screen will allow users to track the performance
           of their investments over time.
      10. Transaction import screen for linking bank accounts and credit cards: This screen
          will allow users to link their bank accounts and credit cards to the app to
           automatically import transactions.
      11. Alert/notification settings screen: This screen will allow users to set up alerts and
          notifications for things like upcoming bills or overspending in a particular category.
      12. Report generation screen: This screen will allow users to generate reports on their
           finances, such as income statements or balance sheets.
      13. Recurring expenses setup screen: This screen will allow users to set up recurring
          expenses, such as rent or subscriptions.
🔥 Personal Finance Tracker 🔥                                                                       7
      14. Reminders setup screen: This screen will allow users to set up reminders for things
          like bill payments or savings contributions.
      15. Settings screen for customizing categories and labels: This screen will allow users
           to customize the categories and labels used in the app to match their specific
           needs.
🔥 Personal Finance Tracker 🔥                                                                    8