Student Portal
Documentation for the Student self-service portal — loans, reservations, fines, catalogue browsing, and personalized dashboard.
Student Portal
Route prefix: /student/*
Layout: frontend/src/app/student/layout.tsx
Required role: ROLE_STUDENT
The Student portal is a self-service dashboard that empowers students to manage their library activity independently — viewing active loans, checking fines, browsing the catalogue, and managing reservations.
Sidebar Navigation
| Menu Item | Route | Icon |
|---|---|---|
| Overview | /student/overview | LayoutDashboard |
| My Loans | /student/loans | BookCopy |
| Reservations | /student/reservations | Bookmark |
| Fines | /student/fines | CircleDollarSign |
| Catalogue | /student/books | Search |
| Notifications | /student/notifications | Bell |
| Profile | /student/profile | User |
Pages
1. Overview (/student/overview)
File: student/overview/page.tsx
A personalized dashboard with a greeting, status cards, recommendations, and activity feed.
Features:
-
Welcome Header: Personalized greeting using
user.firstNamefrom AuthContext -
Status Cards (3 columns):
- Active Loans (blue accent) — count of unreturned transactions
- Pending Reservations (purple accent) — hold queue status
- Outstanding Fines (green accent) — total unpaid fine amount
-
Recommended For You: Book suggestions grid based on browsing history
- Each card shows title, author, and availability status (Available/Waitlist)
- Hover effects with border highlighting
-
Semester Goal: Reading challenge tracker
- Progress bar showing books read vs. goal (e.g., 12/20 = 60%)
- Motivational message
-
Recent Activity: Timeline of recent library interactions
API Integration:
- Loans:
GET /api/v1/circulation/history(filtered forreturnedAt === null) - Fines:
GET /api/v1/fines(filtered forstatus === 'UNPAID')
2. My Loans (/student/loans)
File: student/loans/page.tsx
Table view of all currently borrowed items with renewal capabilities.
Features:
- Data Table with columns: Book Title, Author, Due Date, Status, Actions
- Status badges:
Active— blue badgeOverdue— orange badge
- Renew button per loan (outline style)
- Currently uses mock data as a UI demonstration
3. Reservations (/student/reservations)
File: student/reservations/page.tsx
View and manage book hold requests.
Features:
- List of active reservation holds
- Reservation status tracking (PENDING, FULFILLED, CANCELLED, EXPIRED)
- Queue position information
4. Fines (/student/fines)
File: student/fines/page.tsx
View outstanding and historical fines.
Features:
- Fine list with amount, reason, and status
- Students see only their own fines (server-side filtering by
userId) - Visual distinction between UNPAID, PAID, and WAIVED statuses
API Integration: GET /api/v1/fines
5. Catalogue (/student/books)
File: student/books/page.tsx
Browse and search the complete library catalogue.
Features:
- Searchable list of all books
- Category filtering
- Availability indicators per book copy
- Book detail view with copy status
API Integration: GET /api/v1/books
6. Notifications (/student/notifications)
File: student/notifications/page.tsx
In-app notification feed for:
- Reservation availability alerts
- Due date reminders
- Fine notifications
- System announcements
7. Profile (/student/profile)
File: student/profile/page.tsx
Personal profile view and account settings.
Key Limitations (vs. Admin)
- ❌ Cannot create, edit, or delete books
- ❌ Cannot issue or return books (must visit desk)
- ❌ Cannot manage other users
- ❌ Cannot pay/waive fines (must be done by librarian)
- ✅ Full self-service read access to own data