A comprehensive system for calculating internal marks based on various activities and achievements using React + Node.js + SQLite.
- Community Service - Up to 40 marks
- Patent Filing and Prototyping - Up to full FA marks (240)
- Scopus-Indexed Papers - Up to full FA marks (240)
- Hackathons and Contests - Up to full FA marks (240)
- Workshops and Seminars - Up to 20 marks
- Online Courses - Up to 80 marks
- Entrepreneurship - Up to full FA marks (240)
- Coding Competitions - Up to 120 marks
- Minor Projects - Up to 160 marks
- Node.js (v14 or higher)
- npm or yarn
- Install Backend Dependencies
npm install- Install Frontend Dependencies
cd client
npm install
cd ..- Create Environment File
Create a
.envfile in the root directory:
PORT=5000
DB_PATH=./database/internal_marks.db
NODE_ENV=development
- Start the Application
Option 1: Development Mode (Recommended) Run both backend and frontend concurrently:
npm run devOption 2: Backend Only
npm run serverThen in another terminal:
cd client
npm startOption 3: Production Mode
# Build frontend
cd client
npm run build
cd ..
# Start server
npm start- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- Database: Auto-created at
./database/internal_marks.db
- β Add/Edit/Delete student records
- β Search and filter students
- β View student details and marks breakdown
- β Community Service entries
- β Patent filing and prototyping
- β Scopus-indexed publications
- β Project competitions
- β Hackathons participation
- β Workshop attendance
- β Online course certifications
- β Entrepreneurship activities
- β Coding platform achievements (HackerRank, CodeChef, LeetCode)
- β Minor project submissions
- β Semester-wise marks calculation
- β Platform-specific rubrics (HackerRank, CodeChef, LeetCode)
- β Automatic capping of marks per category
- β Full FA marks allocation (best of Patent/Scopus/Competition/Hackathon/Entrepreneurship)
- β Summary dashboard
- β Detailed marks breakdown
- β Export to CSV
- β Semester-wise filtering
- Frontend: React 18, React Router, Axios, React Toastify
- Backend: Node.js, Express
- Database: SQLite3
- Styling: Custom CSS
The system uses SQLite with the following tables:
students- Student informationcommunity_service- Community service activitiespatent_filing- Patent applicationsscopus_papers- Research publicationsproject_competitions- Project presentationshackathons- Hackathon participationworkshops_seminars- Workshop attendanceonline_courses- Online certificationsentrepreneurship- Startup activitiescoding_platforms- Coding achievementsminor_projects- Minor projects
GET /api/students- Get all studentsGET /api/students/:id- Get student by IDPOST /api/students- Create new studentPUT /api/students/:id- Update studentDELETE /api/students/:id- Delete student
Each activity type has similar CRUD endpoints:
GET /api/{activity}/student/:studentId- Get entriesPOST /api/{activity}- Create entryPUT /api/{activity}/:id- Update entryDELETE /api/{activity}/:id- Delete entry
Activities: community-service, patents, scopus, project-competitions, hackathons, workshops, online-courses, entrepreneurship, coding-platforms, minor-projects
GET /api/calculations/:studentId- Get marks calculationGET /api/calculations/report/summary- Get summary report
- Community Service: Max 40 marks
- Workshops & Seminars: Max 20 marks
- Online Courses: Max 80 marks
- Coding Platforms: Max 120 marks
- Minor Projects: Max 160 marks
Only the highest value from these categories counts:
- Patent Filing & Prototyping
- Scopus-Indexed Papers
- Major Project Competitions (if β₯160 marks)
- Major Hackathons (if β₯240 marks)
- Entrepreneurship
HackerRank (HackOS)
- Semester 2: 200-400 (20-60 marks)
- Semester 3: 500-2000 (20-80 marks)
- Semester 4: 2500-5000 (20-120 marks)
- Semester 5-7: 6000-12500 (20-40 marks)
CodeChef (Rating)
- Semester 3: 200-400 (20-80 marks)
- Semester 4: 500-600 (20-80 marks)
- Semester 5: 800-1800 (20-120 marks)
- Semester 6-7: 2000-2600 (20-40 marks)
LeetCode (Problems Solved)
- Semester 3: 2-4 (20-40 marks)
- Semester 4: 5-12 (20-80 marks)
- Semester 5: 30-80 (20-80 marks)
- Semester 6: 90-140 (20-120 marks)
- Semester 7: 160-250 (20-120 marks)
INTERNAL-MARKS/
βββ client/ # React frontend
β βββ public/
β βββ src/
β β βββ components/ # React components
β β β βββ forms/ # Entry forms for all activities
β β β βββ Dashboard.js
β β β βββ Students.js
β β β βββ StudentDetails.js
β β β βββ Reports.js
β β βββ services/ # API service
β β βββ App.js
β β βββ index.js
β βββ package.json
βββ server/ # Node.js backend
β βββ routes/ # API routes
β βββ database.js # Database setup
β βββ index.js # Server entry point
βββ database/ # SQLite database (auto-created)
βββ .env # Environment variables
βββ package.json
βββ README.md
-
Add a new activity type: Create route in
server/routes/, add table indatabase.js, create form component inclient/src/components/forms/ -
Modify calculation logic: Update
server/routes/calculations.js -
Add new student fields: Modify
studentstable indatabase.jsand update forms
Database not created?
- Ensure
database/directory exists or will be auto-created - Check write permissions
Port already in use?
- Change PORT in
.envfile - Kill existing processes on ports 3000/5000
API connection failed?
- Ensure backend is running on port 5000
- Check
proxysetting inclient/package.json
This project is open source and available under the MIT License.
Contributions are welcome! Please feel free to submit a Pull Request.