A full-stack web application for an academic incentive system that allows faculty members, admin, and students to log in and submit their academic achievements (journals, books, projects, conferences, and papers).
- User authentication system with different roles (admin, faculty, students)
- Form interfaces for submitting various types of academic achievements:
- Book/Chapter Publications
- Funded Projects
- Journal Publications
- Data storage in both MongoDB database and Excel format
- Responsive design that works on desktop and mobile devices
- Validation for all form inputs
- File upload capability for supporting documents (max 4MB, PDF format)
- Frontend: React.js with Material UI
- Backend: Node.js with Express
- Database: MongoDB
- Authentication: JWT-based auth system
- File Storage: Local storage
- Excel Integration: ExcelJS for Excel file generation
- Node.js (v14 or higher)
- MongoDB (local or Atlas)
- Clone the repository:
git clone <repository-url>
cd academic-incentive-system
- Install backend dependencies:
cd server
npm install
- Install frontend dependencies:
cd ../client
npm install
- Create a
.envfile in the server directory with the following variables:
PORT=5000
MONGO_URI=mongodb://localhost:27017/incentive_system
JWT_SECRET=your_jwt_secret_key_here
JWT_EXPIRE=30d
- Start the backend server:
cd server
npm run dev
- Start the frontend development server:
cd ../client
npm run dev
- Access the application:
- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
POST /api/auth/register- Register a new userPOST /api/auth/login- Login userGET /api/auth/me- Get current userGET /api/auth/logout- Logout user
GET /api/books- Get all books for current userGET /api/books/:id- Get single bookPOST /api/books- Create new book entryPUT /api/books/:id- Update bookDELETE /api/books/:id- Delete book
GET /api/projects- Get all projects for current userGET /api/projects/:id- Get single projectPOST /api/projects- Create new project entryPUT /api/projects/:id- Update projectDELETE /api/projects/:id- Delete project
GET /api/journals- Get all journals for current userGET /api/journals/:id- Get single journalPOST /api/journals- Create new journal entryPUT /api/journals/:id- Update journalDELETE /api/journals/:id- Delete journal
academic-incentive-system/
├── client/ # React frontend
│ ├── public/ # Public assets
│ └── src/ # Source files
│ ├── assets/ # Static assets
│ ├── components/ # Reusable components
│ ├── context/ # Context providers
│ ├── pages/ # Page components
│ └── utils/ # Utility functions
├── server/ # Node.js backend
│ ├── config/ # Configuration files
│ ├── controllers/ # Route controllers
│ ├── middleware/ # Custom middleware
│ ├── models/ # Mongoose models
│ ├── routes/ # API routes
│ ├── uploads/ # Uploaded files
│ │ ├── books/ # Book proof files
│ │ ├── projects/ # Project files
│ │ └── journals/ # Journal proof files
│ ├── utils/ # Utility functions
│ └── excel_data/ # Excel files
└── README.md # Project documentation
This project is licensed under the MIT License.