A comprehensive Enterprise Resource Planning (ERP) system designed for financial management, featuring a robust NestJS backend and a dynamic React frontend. This system provides a unified platform for managing students, transactions, and financial records with integrated payment processing.
- Multi-Role Dashboards: Specialized interfaces for Admins, Accountants, Cashiers, and Students.
- Financial Management: Track transactions, manage budgets, and generate detailed financial reports.
- Student Portal: Students can view their financial history, current balances, and make payments.
- Chapa Payment Integration: Seamlessly process payments using the Chapa Payment Gateway.
- Payment Collection: Cashiers can efficiently collect student payments with a dedicated payment collection interface.
- Data Export: Export financial data to Excel (.xlsx) and PDF formats.
- Secure Authentication: Role-based access control (RBAC) powered by JWT and Passport.
- Responsive UI: Modern, responsive design built with Tailwind CSS and Lucide React.
- Analytics & Visualization: Insightful charts and graphs using Recharts.
- Framework: NestJS (Node.js)
- Language: TypeScript
- Database: MySQL with Sequelize ORM
- Authentication: JWT & Passport
- Validation: Class-validator & Class-transformer
- Payment Gateway: Chapa
- Framework: React 19
- Build Tool: Vite
- Styling: Tailwind CSS
- Icons: Lucide React
- Data Visualization: Recharts
- State Management: React Context API
- Routing: React Router DOM v6
finance_erp/
├── backend/ # NestJS API
│ ├── database/ # Sequelize config, migrations, models
│ │ ├── config/
│ │ ├── migrations/
│ │ └── models/
│ ├── src/ # Application source code
│ │ ├── auth/
│ │ ├── common/
│ │ ├── database/
│ │ ├── finance/
│ │ ├── notifications/
│ │ ├── staffs/
│ │ ├── students/
│ │ ├── transactions/
│ │ ├── users/
│ │ └── main.ts
│ └── test/ # Backend tests
├── frontend/ # React Application
│ ├── public/ # Static frontend assets
│ ├── src/
│ │ ├── api/ # API clients
│ │ ├── components/ # Reusable UI components
│ │ ├── context/ # Global state management
│ │ ├── hooks/ # Custom React hooks
│ │ ├── pages/ # Page views and role-specific screens
│ │ ├── styles/ # Tailwind and custom styles
│ │ └── utils/ # Utility helpers
└── uploads/ # File uploads
└── finance_records/
-
Clone the repository:
git clone https://github.com/your-username/finance_erp.git cd finance_erp -
Backend Setup:
cd backend npm install cp .env.example .env # Update the .env file with your database credentials and Chapa keys npm run start:dev
-
Frontend Setup:
cd ../frontend npm install cp .env.example .env # Ensure VITE_API_BASE points to your backend instance npm run dev
| Variable | Description | Default |
|---|---|---|
DB_HOST |
Database host | 127.0.0.1 |
DB_PORT |
Database port | 3306 |
DB_USER |
Database username | root |
DB_PASSWORD |
Database password | - |
DB_NAME |
Database name | - |
JWT_SECRET |
Secret for JWT signing | - |
CHAPA_SECRET_KEY |
Chapa API Secret Key | - |
CHAPA_CALLBACK_URL |
Callback URL for Chapa | - |
| Variable | Description | Default |
|---|---|---|
VITE_API_BASE |
Backend API URL | http://localhost:5000 |
npm run start:dev- Run the server in development mode.npm run build- Build the application for production.npm run test- Run unit tests.
npm run dev- Start the Vite development server.npm run build- Build for production.npm run lint- Run ESLint checks.
This project is UNLICENSED.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git checkout origin feature/AmazingFeature) - Open a Pull Request