FinCtrl is a role-based finance tracking web application built using React.js for the frontend and Node.js with MongoDB for the backend. It enables users to track finances, manage event budgets, share financial data, and receive money management guidance, while admins can manage users, control visibility, and invest on behalf of users.
- Role-Based Access:
- User: Track finances, manage events, share insights
- Admin: Manage users, control finance plans, oversee investments
- Event Management: Create, update, and track budgets for events
- Financial Insights: Get guidance on money management
- Data Security: JWT authentication for backend API protection
- React.js
- React Router
- Tailwind CSS
- Node.js
- Express.js
- MongoDB (NoSQL database)
- Mongoose (MongoDB ODM)
- JSON Web Tokens (JWT) for authentication
- Frontend: Deployed on Render
- Backend: Deployed on Render
- Database: MongoDB Atlas
git clone https://github.com/shubhamiscodding/Fin_Ctrl.git
cd Fin_Ctrl cd frontend # Navigate to frontend directory
npm install # Install dependencies cd backend # Navigate to backend directory
npm install # Install dependenciesCreate a .env file in the backend folder and add:
not avalaible npm run dev node server.jsFin_Ctrl/
├── frontend/
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Different pages of the app
│ │ ├── context/ # Global state management
│ │ ├── utils/ # Helper functions
│ │ ├── App.js # Main React component
│ │ ├── index.js # React entry point
│ ├── package.json # Frontend dependencies
| ├── .env
├── backend/
│ ├── model/ # MongoDB Schemas (User, Admin, Finance, Event)
│ ├── routes/ # API Routes (User, Admin, Event)
│ ├── server.js # Main backend file
│ ├── .env # Environment variables
│ ├── package.json # Backend dependencies
│
├── README.md # Project Documentation
| Method | Endpoint | Description |
|---|---|---|
| POST | /register |
Register a new user |
| POST | /login |
Login user (manual login) |
| GET | /profile/:id |
Get user profile by ID |
| PUT | /update/:id |
Update user profile |
| DELETE | /delete/:id |
Delete a user account |
| Method | Endpoint | Description |
|---|---|---|
| POST | /create |
Register a new admin |
| GET | /users |
Retrieve all users managed by an admin |
| GET | /profile/:id |
Get admin profile by ID |
| PUT | /update/:id |
Update admin profile |
| DELETE | /delete/:id |
Delete an admin account |
| Method | Endpoint | Description |
|---|---|---|
| POST | / |
Create a new finance record |
| GET | / |
Retrieve all finance records |
| GET | /period |
Get finance records by time period (month/week/custom) |
| POST | /:id/expenses |
Add an expense to a finance record |
| POST | /:id/plan/:planId/savings |
Add savings to a finance plan |
| DELETE | /:id |
Delete a finance record |
| Method | Endpoint | Description |
|---|---|---|
| POST | /create |
Create a new event |
| GET | /list |
Retrieve all events |
| GET | /:id |
Get event details by ID |
| PUT | /update/:id |
Update an event |
| DELETE | /delete/:id |
Delete an event |
We welcome contributions! Follow these steps to contribute:
- Fork the repository
- Create a new branch (
feature-branch) - Make your changes and commit them
- Push to your fork and submit a PR