Budgety
is an opensource platform to create budgets with an easy-to- interface. You can create incomes and expenses and keep track of your spending.
Budgety
comes with a bundle of features already. You can do the followings with it:
- Users can create an account, log in, log out, and have all of their user info saved to their account.
- Users can create, read, update, and delete income entries.
- Users can create, read, update, and delete expense entries.
- MongoDB and Mongoose are playing a large role in this feature.
- Use
Budgety
seamlessly from any device.
You can run Budgety locally with a few easy steps.
- Clone the repository
git clone https://github.com/bretpeters3n/seal-team-3.git
- Change the working directory
cd seal-team-3
- Change the working directory again
cd client
- Install dependencies (frontend)
npm install
- Back out one directory
cd ..
- Change the working directory yet again
cd server
- Install dependencies (backend)
npm install
- Create
.env
file in 'server' and add a variable
SECRET_KEY='whatever secret key here'
- Start running the backend (this requires Mongo to be locally installed and running)
nest start
- Back out of 'server' directory
cd ..
- Enter 'client' directory again
cd client
- Start running the frontend
npm run start
That's All!!! Now open localhost:3000 to see the app.
Backend
- Nest JS: A progressive Node.js framework for building efficient, reliable and scalable server-side applications.
- @nestjs/common
- @nestjs/config: Configuration module for Nest based on the dotenv (to load process environment variables) package.
- @nestjs/core
- @nestjs/jwt: JWT utilities module for Nest based on the jsonwebtoken package.
- @nestjs/mongoose: Mongoose module for Nest.
- @nestjs/passport: Passport utilities module for Nest.
- @nestjs/platform-express
- @types/mongodb
- bcrypt: A library to help you hash passwords.
- dayjs: Fast 2kB alternative to Moment.js with the same modern API
- dotenv: Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env
- mongoose: Mongoose is a MongoDB object modeling tool designed to work in an asynchronous environment. Mongoose supports both promises and callbacks.
- passport: Passport is Express-compatible authentication middleware for Node.js.
- passport-jwt: A Passport strategy for authenticating with a JSON Web Token.
- reflect-metadata
- rimraf: The UNIX command rm -rf for node.
- rxjs: Reactive Extensions Library for JavaScript.
Frontend
- @hookform/resolvers: Performant, flexible and extensible forms with easy to use validation.
- @testing-library/jest-dom: Custom jest matchers to test the state of the DOM
- @testing-library/react: Simple and complete React DOM testing utilities that encourage good testing practices.
- @testing-library/user-event: Fire events the same way the user does
- @types/jest: TypeScript definitions for Jest
- @types/node: TypeScript definitions for Node.js
- @types/react: TypeScript definitions for React
- @types/react-dom: TypeScript definitions for React (react-dom)
- @types/react-router: TypeScript definitions for React Router
- @types/react-router-dom: TypeScript definitions for react-router-dom
- @types/styled-components: TypeScript definitions for styled-components
- axios: Promise based HTTP client for the browser and node.js
- framer-motion: A simple and powerful React animation library
- react: React is a JavaScript library for building user interfaces.
- react-confetti: React component to draw confetti for your party.
- react-dom: React package for working with the DOM.
- react-hook-form: Performant, flexible and extensible forms library for React Hooks
- react-icons: SVG React icons of popular icon packs using ES6 imports
- react-router: Declarative routing for React
- react-router-dom: Declarative routing for React web applications
- react-scripts: Configuration and scripts for Create React App.
- styled-components: Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress
- sweetalert2: A beautiful, responsive, customizable and accessible (WAI-ARIA) replacement for JavaScript's popup boxes, supported fork of sweetalert
- typescript: TypeScript is a language for application scale JavaScript development
- web-vitals: Easily measure performance metrics in JavaScript
- yup: Dead simple Object schema validation
This project is licensed under the MIT License - see the LICENSE
file for details.
Budgety
has all the potential to grow further. Here are some of the upcoming features planned(not in any order),
- ✔️ Common budget categories that can be selected when inputing an expense
- ✔️ Basic CRUD Capabilities for budget categories
- ✔️ Ability to set budget goals on weekly/monthly basis
- ✔️ Unit testing
- ✔️ Saving & Investing (no specific details here yet)
- ✔️ Connect to a fake bank account API that automatically generates expenses and income
- ✔️ Predict future spending based on previous habits
- ✔️ Send out low balance information to email or by text message
- ✔️ Investing advice (possible pull from API and serve as a between screen when loading data)
Thanks goes to these wonderful people:
Bret Petersen | Jonathan Martinez | Benjamin Cho | Mack N |