This project is live here https://money-io.vercel.app
Money.io is a financing app that allows users to keep track of their spendings as well as debts and loans.
Users can signup using money.io or login with their google accounts for faster access
Once logged in, users can keep track of their spendings from the transactions page
Once logged in, users can keep track of debts due and lowned by adding them from the debts page
Money.io uses a react frontend to build an application that is componentalized. The application was converted to the new hooks api to reduce codebase by more than 50% The application was converted to a next js application for faster and free hosting on vercel Redux was used to manage state, allowing stateful and stateless components to only focus on connected state Authentication was provided with react-google-login to get the user's access token An avataar is randomly generated using the username as seed
Authentication is provided using 2 patterns:
- Using local signup/signin
- User signs up by providing their details on the signup page
- An email is sent to the user with a token to verify the user
- Once the user verifies by clicking the email link, they can login
- Upon signin, a redis session is started using passport.js and the user is redirected to transaction
- Using google's signin flow Google signin
- User logsin with their google details and provides consent
- Google returns a token for the user
- The token is sent to the backend using the authorization header
- Upon token verificationA redis session is started using passport.js and the user is redirected to transaction
Money.IO is built using the following libraries to provide a safe, easy to use and easy to maintain user and development experience.
Frontend:
- Next.js which provides faster loads time using server side rendering
- React.js which provides a safer, scalable viewing experience , as well as much shorter code using the new React hooks api
- Redux.js which stores state in a much more manageable layout
- react-google-login which provides an easy to use login button based on google's signin recommended practice
- Vercel which provides a free and easy way to host nextjs apps
- avataaars which allows for an easy way to generate avataaars
Backend:
- Node.js which provides javascript runtime bult using V8 to run javascript
- Express.js which provides a web application framework to help build a server
- MYSQL which provides a database to store user's information, transactions, and debts
- Passport.js which provides an authentication framework
- Redis.io which provides a datastore to hold user session data
- passport-local which provides a local passport strategy to start a server-side session on successful authentication
- passport-google-strategy which provides a google strategy to start a server-side session on successful token verification
- Heroku which allows easy deployment through git
Project was rewritten by Humaid Khan
original Team:
- Product Owner: Jonathan Wu
- Scrum Master: Humaid Khan
- Development Team Members: Dunstan Zheng, Chris Lu