Student Grade Portal Web App
Build a web portal with Spring MVC and Thymeleaf where instructors record students' grades and students log in to see their own results. Instructors see their courses, enter and edit grades for each assignment, and view course statistics such as the average and how grades are distributed; students only ever see their own grades. Pages are rendered on the server with Thymeleaf, login and roles are handled by Spring Security, and data is stored with Spring Data JPA. You'll learn the MVC pattern, controllers and forms with validation, Thymeleaf templates, authentication and role-based authorization, making sure users can only access their own data, and testing a web app.
- Estimate
- ~11.5h
- Steps
- 6
- Completed by
- 0
- Proposed by
- codeseed.app
Spring MVC · Thymeleaf · Spring Security
Project roadmap
- 01
Set up the project and data model
~2hCreate a Spring Boot project with Spring Web, Thymeleaf, Spring Data JPA, Validation, Spring Security and H2 (or PostgreSQL). Model users (with a role: instructor or student), courses (with an instructor), enrollments, assignments (with a maximum score) and grades (student, assignment and score). Load sample data at startup. Done when: the app starts and the sample data is in the database.
- 02
Add login and roles
~2hConfigure Spring Security with form login, passwords stored with BCrypt, and users loaded from the database. Restrict /instructor/** to instructors and /student/** to students, and send each user to their own home page after login. Add logout. Done when: each role can only reach its own pages, and wrong logins show an error.
- 03
Build the instructor pages
~2.5hBuild pages for instructors: their courses, a course page with a grade table (students by assignments), and a form to enter or edit grades, validated so a score is between 0 and the assignment's maximum. Check in the service layer that the instructor teaches the course, so changing the URL can't reach another instructor's course. Show validation errors next to fields and a success message after saving. Done when: instructors can enter grades only for their own courses.
- 04
Build the student pages
~1.5hBuild a read-only page where students see their courses, each assignment's score and maximum, and their current percentage per course. Always load data for the logged-in student from the security context, never from a URL parameter. Done when: a student sees only their own grades, even if they change URLs.
- 05
Add course statistics
~1.5hAdd to the instructor's course page: the average, median, highest and lowest score per assignment, and the distribution of final percentages in letter bands (A, B, C, D and F) shown as a simple bar chart made with HTML and CSS. Compute the statistics in a service with tests. Done when: the statistics match the grades in the table.
- 06
Test it
~2hWrite tests with MockMvc and spring-security-test (@WithMockUser or with real users): each role's access, an instructor refused on another instructor's course, a student refused on another student's data, grade validation, and the statistics calculations. Done when: ./mvnw test (or Gradle) passes.
Ready to build this?
Get a GitHub repo and start building. Your AI reviewer checks each step as you go.
Tech stack