Student management system project
attendance, marks and fees in one app
Students, courses, subjects, daily attendance, marks with results, fees and a login for students and parents. Generate a working version from one prompt and study how it fits together.
What the project does
Generated from the prompt below, so yours can differ: read it before you present it.
Student records
Roll number, course, semester, contact and guardian details, with search and filters by course and semester.Courses, semesters, subjects
Each course has semesters, each semester its subjects, and each subject a faculty member.Attendance per subject
Faculty mark a class in one screen with everyone present by default. Each student's percentage updates at once, and the under 75% list follows.Marks and results
Internal and exam marks per subject, totals and grades, and a semester result sheet as PDF.Fees and dues
Semester fees, payments with receipt numbers, and the list of students with dues.Student login
Each student sees their own attendance, marks and fees, and nothing about anyone else.Who uses it
- Admin
- Sets up courses, semesters and subjects, admits students, assigns faculty, manages fees.
- Faculty
- Marks attendance and enters marks for their own subjects only.
- Student
- Sees their own attendance percentage, marks, results and fee dues.
ER diagram
Eight entities. Enrolment links a student to the subjects of their semester; attendance and marks hang off it. That join is the part examiners ask about.
course
| id | uuid | PK |
| name | text | |
| semesters | int |
subject
| id | uuid | PK |
| course_id | uuid | FK |
| semester | int | |
| code | text | UK |
| name | text | |
| faculty_id | uuid | FK |
faculty
| id | uuid | PK |
| name | text | |
| text | ||
| department | text |
student
| id | uuid | PK |
| course_id | uuid | FK |
| roll_no | text | UK |
| name | text | |
| semester | int | |
| guardian_phone | text |
enrolment
| id | uuid | PK |
| student_id | uuid | FK |
| subject_id | uuid | FK |
| academic_year | text |
attendance
| id | uuid | PK |
| enrolment_id | uuid | FK |
| class_date | date | |
| status | text |
mark
| id | uuid | PK |
| enrolment_id | uuid | FK |
| internal | numeric | |
| exam | numeric | |
| grade | text |
fee_payment
| id | uuid | PK |
| student_id | uuid | FK |
| semester | int | |
| amount | numeric | |
| paid_on | date | |
| receipt_no | text | UK |
Relationships
- course offers subject (one to many)
- course admits student (one to many)
- faculty teaches subject (one to many)
- student takes enrolment (one to many)
- subject is taken in enrolment (one to many)
- enrolment records attendance (one to many)
- enrolment is graded in mark (one to one)
- student makes fee_payment (one to many)
Mermaid source
Paste it into mermaid.live, draw.io (Arrange, Insert, Advanced, Mermaid) or any Markdown editor that draws Mermaid to get the diagram for your report.
erDiagram
COURSE ||--o{ SUBJECT : "offers"
COURSE ||--o{ STUDENT : "admits"
FACULTY ||--o{ SUBJECT : "teaches"
STUDENT ||--o{ ENROLMENT : "takes"
SUBJECT ||--o{ ENROLMENT : "is taken in"
ENROLMENT ||--o{ ATTENDANCE : "records"
ENROLMENT ||--|| MARK : "is graded in"
STUDENT ||--o{ FEE_PAYMENT : "makes"
COURSE {
uuid id PK
text name
int semesters
}
SUBJECT {
uuid id PK
uuid course_id FK
int semester
text code UK
text name
uuid faculty_id FK
}
FACULTY {
uuid id PK
text name
text email
text department
}
STUDENT {
uuid id PK
uuid course_id FK
text roll_no UK
text name
int semester
text guardian_phone
}
ENROLMENT {
uuid id PK
uuid student_id FK
uuid subject_id FK
text academic_year
}
ATTENDANCE {
uuid id PK
uuid enrolment_id FK
date class_date
text status
}
MARK {
uuid id PK
uuid enrolment_id FK
numeric internal
numeric exam
text grade
}
FEE_PAYMENT {
uuid id PK
uuid student_id FK
int semester
numeric amount
date paid_on
text receipt_no UK
}Generate yours and get the code
This builds on Refinar's school starting point, which already has classes, students with parents, a daily register, marks with report cards and fees. The prompt turns it into a college: courses, semesters, subjects and attendance per subject.
The button opens Refinar with the project described in the first message, ready to edit. About a minute later there is a running app with sign-in, the pages above and a PostgreSQL database, in a live preview you can click through and change by asking.
It is real code: Next.js and React in TypeScript, PostgreSQL with the Drizzle ORM, and Better Auth for sign-in. When you press Go live, the GitHub repository moves to your own GitHub account and the database to your own Neon account, so you can read it, run it and present it. Building uses credits and going live needs a Refinar plan; the details are on the pricing page.
If your syllabus asks for PHP and MySQL, Java or Python, ask your guide before you start: the generated code will not be in those languages. The ER diagram and the checklist on this page work for any stack.
The prompt it starts with
A student management system for a final-year project, in English, for a college: courses with semesters and subjects; students with roll number, course, semester, contact and guardian details; faculty assigned to subjects; daily attendance per subject with each student's percentage and a list of students under 75%; internal and exam marks per subject with total, grade and a result sheet as PDF; fees per semester with payments and dues. Roles: admin, faculty, who marks attendance and enters marks for their subjects, and student, who sees only their own attendance, marks and fees.
Report and viva checklist
Report checklist
- Abstract: the problem, who uses the system and what it does, in one paragraph.
- Existing system and its problems, then the proposed system.
- Objectives and scope, including what is out of scope.
- Requirements: functional and non-functional, per role.
- Technology used and why: Next.js, TypeScript, PostgreSQL, Drizzle ORM.
- ER diagram and table design, normalised to third normal form.
- DFD level 0 and level 1, and a use case diagram.
- Module description with a screenshot of each screen.
- Testing: test cases with input, expected result and actual result.
- Conclusion, limitations and future scope.
- References, and a statement of the tools you used, AI included.
Make the report about this project
- Explain enrolment as the many-to-many between students and subjects, and why attendance points at it.
- Show the attendance percentage formula and the query behind the under 75% list.
- Give the grade bands you used and where they live, so changing them is one edit.
- Test cases: faculty entering marks for a subject they do not teach, a student opening another student's result.
Viva questions to prepare
- Why not store attendance as one column per date?
- How does a faculty member see only their own subjects? Show the check.
- What happens to a student's records when they move to the next semester?
- How would you add a timetable without changing the existing tables?
- What is a primary key and a foreign key? Point to one of each in your tables.
- Which normal form are your tables in, and what would break if they were not?
- How does sign-in work, and how are passwords stored?
- How does the app stop one user from seeing another user's data?
- Why PostgreSQL, and not MySQL or MongoDB?
- What did you change or add yourself, and why?
Build it, understand it, then submit it
Many universities allow tools, AI included, as long as you say so and can explain every part of what you submit. Read your university's rules and ask your guide before you start, and name Refinar in the tools section of your report.
Treat the generated app as a starting point, not a submission. Read every table and every page, change something yourself, add one feature that is your own, and write the test cases by hand. If you cannot say why a table has a foreign key, an examiner will find out in a minute.
Submitting work you did not do and do not understand as your own is academic misconduct, whoever or whatever wrote it. These pages are here to help you build a project you can defend.
Take it further
- A timetable per semester and a daily view for faculty.
- Assignments with submission dates and marks.
- An SMS or email to guardians when attendance drops under 75%.
- Charts of attendance and results per subject for the head of department.
Questions
What is the difference between a student management system and a student information system?
Mostly the name. Both keep student records; "information system" stresses the records, "management system" the daily work around them, such as attendance, marks and fees.
Which modules should it have?
Student records, courses and subjects, attendance, marks and results, fees, and logins for admin, faculty and students. Timetable and assignments are good extensions.
Can the app be in PHP and MySQL instead?
The generated code is TypeScript with PostgreSQL. The ER diagram and the design on this page carry over to PHP and MySQL if your guide requires them.
Is it free?
Building uses credits from a Refinar plan, and getting the code into your own GitHub account goes through Go live, which needs a plan. The details are on the pricing page.
More project ideas
- Hospital management systemPatients, doctors, appointments, prescriptions, wards and bills, with a login per role.
- Library management systemCatalogue, copies, issue and return with due dates, fines and reservations.
- Hostel management systemRooms and beds, allocation, fees, out-passes, visitors and complaints.
- Pharmacy management systemMedicines, batches and expiry, purchases, sales bills and stock alerts.
- E-commerce websiteStorefront, cart, checkout, orders with status, customer accounts and a stock admin.
- Event management systemEvents with ticket types, registration, QR check-in at the door and feedback.