A full-stack finance management system with role-based access control, built using Spring Boot (Backend) and React + TypeScript (Frontend). The system allows Admins, Analysts, and Viewers to interact with financial records securely and efficiently.
- Java
- Spring Boot
- Spring Security
- JWT Authentication
- JPA / Hibernate
- MySQL
- React
- TypeScript
- Vite
- Tailwind CSS
- Zustand (State Management)
- TanStack Query (API Handling)
The application follows a layered architecture:
Frontend (React)
↓
REST APIs (Spring Boot Controllers)
↓
Service Layer (Business Logic + Role Checks)
↓
Repository Layer (JPA)
↓
Database (MySQL)
Security is enforced using JWT Authentication and Role-Based Access Control.
- Create users (Viewer / Analyst only)
- Create financial records for users
- Update and delete records
- Access all data
- Manage system completely
- View all financial records
- Access dashboard analytics
- View trends, summaries, and insights
- Cannot modify data
- View only their own records
- View personal dashboard
- No access to others’ data
- No modification permissions
- Register users with roles
- Role-based restrictions enforced at backend
- Secure login using JWT
Each record contains:
- Amount
- Type (INCOME / EXPENSE)
- Category
- Date
- Description
- User ID
Operations:
- Create Record (Admin)
- View Records (Role-based)
- Update Record (Admin)
- Delete Record (Admin)
- Filter by date, category, type
Provides aggregated insights:
- Total Income
- Total Expenses
- Net Balance
- Category-wise Analysis
- Monthly Trends
- Recent Activity
- Viewer → only own data
- Analyst → read all data
- Admin → full control
Enforced using:
- JWT Filter
- Role validation in service layer
- Pagination support
- Filtering APIs
- DTO-based response structure
- Modular service architecture
- Separate AdminService
Finance-System/
├── src/main/java/com/financeProject/
│ ├── controller/
│ ├── service/
│ ├── repository/
│ ├── security/
│ ├── dto/
│ └── entity/
frontend/
├── src/
├── components/
├── pages/
├── store/
├── api/
└── styles/
- User logs in
- JWT token is generated
- Token is sent in header: Authorization: Bearer
- Backend validates token
- Role-based access is enforced
- Postman
- Swagger UI: /swagger-ui/index.html
cd Finance-System
mvn spring-boot:run
cd frontend
npm install
npm run dev
- Clean layered architecture
- Secure JWT-based authentication
- Strict role-based access control
- Full-stack integration
- Dashboard analytics
- Modular and scalable design
Developed by: SKG and SSV Role: Java Backend Developer Intern
GitHub language statistics show only Java and TypeScript. Libraries like React, Zustand, and TanStack Query are used within TypeScript and can be verified in package.json.
- Soft delete implementation
- Unit and integration testing
- Role-based UI improvements
- Deployment using cloud platforms