Coder Social home page Coder Social logo

doughfin_fe's Introduction

DoughFin_FE

Introduction

DoughFin is a user-friendly financial management app designed to help individuals effortlessly track their income, categorize expenses, and create budgets. With DoughFin, managing your finances becomes intuitive, empowering you to make informed decisions about your money.

alt text

Features

Income Tracking: Automatically track your income from various sources to see how much you're earning.
Expense Categorization: Automatically categorize your expenses for a clearer understanding of your spending habits.
Budget Creation: Set up personalized budgets to control your spending and achieve your financial goals.
Insightful Reports: Get detailed reports and insights into your financial health, helping you make better financial decisions.
Light & Dark Mode Use the toggle on the left hand navbar to toggle between light and dark mode!
CSV Export: Export transaction information into CSV for your own use!

Setup & Installation

Get DoughFin running on your machine:

  1. Clone the repository from: [email protected]:DoughFin/DoughFin_FE.git
  2. Move to the project directory:
cd DoughFin_FE
  1. Grab the dependencies: npm install
npm install
  1. Install the react-switch for dark mode: npm install react-switch --save
npm install react-switch --save
  1. Fire up the app: npm start
npm start

To Run Tests

npm cypress open

Configuration

  • port deconfliction
    • react app localhost:3003
    • rails api localhost:3000

Environments Required

NodeJS

Packages Required

apollo mui graphql cypress

Further Details

CashFlow Widget

Users can track their expenses and incomes over the course of the past year. CashFlows are the total incomes and expenses for each month, displayed in a Bar Chart. They are handled by a GraphQL query to the Back-End application in the following format:

query GetUserCashflow($userId: ID!) {
  cashFlow(userId: $userId) {
      username
      years {
          year
          months {
              month
              income
              expenses
          }
     }
  }
}

Transactions Widget

Users can track all expenses and incomes within this widget. Transactions include Name (company name), Category (either income or budget category), Date, Amount (in USD), and Status (Credited for incomes, Debited for expenses). Users can also search within any of these parameters using the search function.

query getTransactions($email: String!) {
  user(email: $email) {
      id
      transactions {
          id
          amount
          date
          category
          vendor
          status
      }
  }
}

Total Income and Expenses Widget

Users can view their total incomes and expenses over all time within this widget, which uses the following GraphQL queries for income and expense, respectively:

query GetIncomes($email: String!) {
  user(email: $email) {
      currentIncomes {
          amount
          pctChange
      }
  }
}
query GetExpenses($email: String!) {
  user(email: $email) {
      currentExpenses {
          amount
          pctChange
      }
  }
}

Income and Expense Creation

Users can create incomes and expenses by clicking on the '+' icon next to each total income and expense. Incomes include the following parameters: Source, Date, and Amount, while Expenses include Vendor, Category, Date and Amount. Amount will only allow numeric inputs. The GraphQL mutations are as follows:

mutation CreateIncome($userId: ID!, $source: String!, $amount: Float!, $date: String!) {
    createIncome(input: {
        userId: $userId,
        source: $source,
        amount: $amount,
        date: $date
    }) {
        userId
        income {
            source
            amount
            date
        }
    }
}
mutation CreateExpense($userId: ID!, $vendor: String!, $category: String!, $amount: Float!, $date: String!) {
    createExpense(input: {
        userId: $userId,
        vendor: $vendor,
        category: $category,
        amount: $amount,
        date: $date
    }) {
        userId
        expense {
            id
            vendor
            category
            amount
            date
        }
    }
}

Budget Widget

Users can set custom budgets, which will track the remaining amount left to spend within that budget, which is updated when an expense is made in a particular category. Budget categories are provided using the first GraphQL query, while budget data per budget is handled with the second query.

query GetBudgetCategories($email: String!) {
    user(email: $email) {
        budgetCategories
    }
}
query GetBudgetsByParams($month: String!, $category: String!, $email: String!) {
  user(email: $email) {
      id
      budgets(month: $month, category: $category) {
          id
          month
          category
          amount
          pctRemaining
          amountRemaining
      }
      expenses(category: $category, month: $month) {
          id
          amount
          date
          category
      }
  }
}

Acknowledgments

Thank you to all the contributors who have helped shape DoughFin. Special thanks to our users for trusting us with their financial management needs.

Shawn Carpenter: Email LinkedIn

Joseph Lee: Email

Mary Bruff: Email

Taylor Pubins: Email

Anthea Yur: Email

Ben Rosner: Email

doughfin_fe's People

Contributors

ben-rosner-williamsburg avatar chispmama avatar josephlee702 avatar marybruff avatar shawndcarpenter avatar trpubz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.