- Group No: 24
- Date Created: 13 May 2022
- Last Modification Date: 15 JUL 2022
- Website URL: http://group24-expensetracker-dev.us-east-1.elasticbeanstalk.com/
- Git URL: https://git.cs.dal.ca/ayushv/group24_expensetracker
- Benny Tharigopala (bn489600@dal.ca)
- Abhishek Uppe (ab577089@dal.ca)
- Vatsal Yadav (vatsal.yadav@dal.ca)
- Devarshi Vyas (dv459527@dal.ca)
- Ayush Verma (ayush.verma@dal.ca)
- Smit Thakkar (sm928548@dal.ca)
-
Group Expense Tracking
-
Payment Reminder
-
Categorial Expense (Tags)
-
User management
-
Expense Tracker
-
In-App Payment Integration
-
Coupon Management
-
Notifications
-
Analytics
-
Group Expense Tracking
- Create Group
- Edit Group
- View Group
- Delete Group
-
Payment Reminder
- Create Payment Reminder
- Modify Payment Reminder
- Delete Payment Reminder
- View Payment Reminder
-
Categorical Expense (Tags)
- Create Tag
- Edit Tag
- View Tag Details (an individual tag)
- View Tags (per user)
- Delete Tag
-
User Management
- SignIn
- SignUp
- Change Password
- Logout
-
Expense Tracker
- Add Expense
- Edit Expense
- Settle Uppe
- Delete Expense
-
In-App Payment Integration
- Initiate Payment
- Input Payment Method Details
- View Payment Status
- View Payment History
-
Coupon Management
- View Coupons
- Redeem Coupons
- Coupon Redeemed
-
Notifications
- Notification Settings
- Email Notification
- View Notification
-
Analytics
- Analytics
- Expense Analytics
- Spending Trends
- Expense Tracking
https://git.cs.dal.ca/ayushv/group24_expensetracker/-/tree/abhishek-uppe-b00885768
https://git.cs.dal.ca/ayushv/group24_expensetracker/-/tree/vatsal-yadav-b00893030
https://git.cs.dal.ca/ayushv/group24_expensetracker/-/tree/devarshi-vyas-b00878443
https://git.cs.dal.ca/ayushv/group24_expensetracker/-/tree/ayush-verma-b00893024
https://git.cs.dal.ca/ayushv/group24_expensetracker/-/tree/smit-thakkar-b00896215
https://git.cs.dal.ca/ayushv/group24_expensetracker/-/tree/benny-tharigopala-b00899629
Feature: Group Expense Tracking Frontend
- frontend/src/components/group/CreateGroup.jsx
- frontend/src/components/group/DeleteGroup.jsx
- frontend/src/components/group/EditGroup.jsx
- frontend/src/components/group/GroupHomePage.jsx
- frontend/src/components/group/helpers.js
- frontend/src/components/group/ViewGroup.jsx
- frontend/src/components/Heading/Heading.jsx
- frontend/src/components/SideBar/index.js
- frontend/src/components/notifications/EmailNotification.jsx
- frontend/src/components/notifications/NotificationSettings.jsx
- frontend/src/components/notifications/ViewNotification.jsx
- frontend/src/redux/actions/group.js
- frontend/src/redux/actions/index.js
- frontend/src/redux/reducers/group.js
- frontend/src/redux/reducers/index.js
- frontend/src/redux/sagas/group.js
- frontend/src/redux/sagas/index.js
- frontend/src/redux/store.js
- frontend/src/App.js (Partial)
- frontend/src/constants.js (Partial)
- frontend/src/App.css (Partial)
- frontend/src/css/group.css
- frontend/src/css/heading.css
Backend
- backend/controllers/group.js
- backend/controllers/notification.js
- backend/routes/index.js (Partial)
- backend/index.js
- backend/utils.js
Feature: Payment Reminder Frontend
- frontend\src\components\paymentReminders\RemindersGrid.js
- frontend\src\components\paymentReminders\CreateReminder.js
- frontend\src\redux\actions\reminder.js
- frontend\src\redux\reducers\reminder.js
- frontend\src\redux\sagas\reminder.js
- frontend/src/components/analytics/AnalyticsHome.jsx
- frontend/src/components/analytics/ExpenseAnalysis.jsx
- frontend/src/components/analytics/ExpenseTracking.jsx
- frontend/src/components/analytics/SpendingAnalysis.jsx
- frontend\src\redux\actions\index.js (partial)
- frontend\src\redux\reducers\index.js (partial)
- frontend\src\redux\sagas\index.js (partial)
- frontend\src\components\routing\index.js (partial)
Backend
- backend/controllers/reminders.js
- backend/routes/index.js (Partial)
Feature: Categorial Expense (Tags)
Frontend
- frontend/src/components/UserManagement/ChangePassword.jsx
- frontend/src/components/UserManagement/ForgetPassword.jsx
- frontend/src/components/UserManagement/Signup.jsx
- frontend/src/components/UserManagement/Login.jsx
- frontend/src/redux/reducers/config.js
- frontend/src/components/HomePage.jsx
- frontend/src/routing/index.js (partial)
Backend
- backend/controllers/tags.js
- backend/routes/index.js (partial)
Feature: Categorial Expense (Tags)
Frontend
- frontend/src/components/tags/CreateEditTag.jsx
- frontend/src/components/tags/ViewTags.jsx
- frontend/src/components/tags/ViewTagDetails.jsx
- frontend/src/redux/actions/tags.jsx
- frontend/src/redux/reducers/tags.jsx
- frontend/src/redux/sagas/tags.jsx
- frontend/src/components/CouponManagement/Helpers/footer.jsx
- frontend/src/components/CouponManagement/Helpers/header.jsx
- frontend/src/components/CouponManagement/Helpers/menu.jsx
- frontend/src/components/CouponManagement/Helpers/meta.jsx
- frontend/src/components/CouponManagement/Layout/Layout.jsx
- frontend/src/components/CouponManagement/couponRedeemed.jsx
- frontend/src/components/CouponManagement/notFound.jsx
- frontend/src/components/CouponManagement/redeemCoupon.jsx
- frontend/src/components/CouponManagement/viewCoupons.jsx
- frontend/src/routing/index.js (partial)
- frontend/src/App.js (Partial)
- frontend/src/constants.js (Partial)
- frontend/src/App.css (Partial)
Backend
- backend/controllers/coupons.js
- backend/controllers/userManagement.js
Feature: Expense Tracker Frontend
- frontend/src/components/expense/AddExpense.jsx
- frontend/src/components/expense/DeleteExpense.jsx
- frontend/src/components/expense/EditExpense.jsx
- frontend/src/components/expense/ExpenseHomePage.jsx
- frontend/src/components/expense/helpers.js
- frontend/src/components/expense/ViewExpense.jsx
- frontend/src/redux/actions/expense.js
- frontend/src/redux/reducers/expense.js
- frontend/src/redux/sagas/expense.js
- frontend/src/css/expense.css
Backend
- backend/controllers/expense.js
- backend/routes/index.js (Partial)
Feature: In-App Payment Integration Frontend
- frontend/src/components/Payments/InitiatePayment.jsx
- frontend/src/components/Payments/PaymentMethod.jsx
- frontend/src/components/Payments/PaymentStatus.jsx
- frontend/src/components/Payments/PaymentHistory.jsx
- frontend/src/components/Payments/checkout.jsx
- frontend/src/redux/actions/transaction.jsx
- frontend/src/redux/reducers/transaction.jsx
- frontend/src/redux/sagas/transaction.jsx
- frontend/src/routing/index.js (Team-Effort)
- frontend/src/App.js (Partial)
- frontend/src/constants.js (Partial)
- frontend/src/App.css (Partial)
Backend
- backend/controllers/transaction.js
- backend/routes/index.js (Team-Effort)
To have a local copy of this lab / assignment / project up and running on your local machine, you will first need to install the following software / libraries / plug-ins
NodeJS: Latest LTS version download from https://nodejs.org/en/.
Git: Latest source release download from https://git-scm.com/downloads.
See the following section for detailed step-by-step instructions on how to install this software / libraries / plug-ins
Run the following commands in both the frontend and backend root folder to install and run the application
npm install
npm start
- Create a AWS account from here.
- Install elastic beanstalk client using from here
- Run the following commands
eb init
eb create
eb deploy
Frontend
- ReactJS - The core web library (framework) used.
- React Router DOM - Routing library for single page application.
- React Bootstrap - User Interface components for React.
- SweetAlert2 - Beautiful Alerts for React.
- React Redux - Used for state management.
- Redux Saga - Middleware for redux.
- React Datepicker - Reusable datepicker component for React.
- Moment - A JavaScript date library for parsing, validating, manipulating, and formatting dates.
Backend
- Node - The core backend library (framework) used.
- Express - Framework for creating single page routes.
- Postgresql - SQL Database for the application.
- Supabase - API Client for PostgreSQL.
- Docker - Creating single container for frontend and backend folder.
- AWS Elastic Beanstalk - Used for deploying both frontend and backend applications using Docker.
- Nodemailer - Node.js module to send emails.
- Node Schedule - A flexible job scheduler for Node.js for scheduling emails.
Frontend
- For frontend the folder structure used is the default react folder structure.
- All the assets are stored in frontend/src/assets.
- All the React Components are stored in frontend/src/components.
- All the css files other then App.css and index.css are stored in frontend/src/css.
- The redux structure containing actions, reducers and sagas in frontend/src/redux.
Backend
- For backend the folder structure used is the default nodejs and expressjs folder structure.
- All the API logic and end points are stored in backend/controllers.
- All the models or database connection are stored in backend/models.
- All the backend routes are stored in backend/routes.