Introduction
Capstone #3 — perfect fresher portfolio project: Students, Courses, Enrollments, Excel export, Chart.js dashboard, email on enroll, roles Admin/Teacher/Student.
After this article you will
- Full CRUD for three entities
- Search/filter students
- Export Excel with ClosedXML
- Dashboard charts with Chart.js
- Role-based UI with Identity
Prerequisites
- Article 66 — E-Commerce Product Catalog API
- Articles 1–64 ShopNest foundations (MVC, EF Core, API, auth, deploy)
Architecture & design
Entities: Student, Course, Enrollment (composite key). Bootstrap 5 responsive UI. ClosedXML: workbook.SaveAs(stream).
Hands-on build guide — ShopNest College Student Portal
- StudentsController Index with search query string.
- EnrollmentsController POST sends email via IEmailSender.
- Dashboard: enrollment count per course — Chart.js bar chart.
- Export: GET /students/export returns Excel file.
- Seed roles; [Authorize(Roles="Admin")] on admin actions.
Common pitfalls
- Enrollment duplicate StudentId+CourseId — unique index required.
- Export unbounded rows — paginate or filter.
Interview & portfolio questions
Q: Why good fresher project?
A: CRUD + roles + export shows full stack basics TCS/Wipro expect.
Summary
- Ideal campus placement portfolio piece
- Combines MVC, EF, Identity, reporting
- Excel + charts differentiate from bare CRUD
Previous: E-Commerce Product Catalog API
Next: Job Portal Full Stack
FAQ
ClosedXML license?
MIT — free for commercial use.
Chart.js CDN?
Acceptable for tutorial; npm + bundling for production.