Student Dashboard
Overview
The Student Information Retrieval feature allows the system to fetch and display detailed personal and academic information about a student. This feature ensures that the students and administrators can access up-to-date and accurate information about the student's profile, academic progress, and application status.
Features
- Session Management: Ensures the user is logged in and has a valid session.
- Personal Information Retrieval: Fetches and displays the student's personal information.
- Academic Information Retrieval: Displays the student's academic details including current level, program, and remaining time to complete the program.
- Application Tracking: Allows students to track their application status.
- Loading and Error Handling: Provides loading indicators and error messages for better user experience.
Flow Diagram
+-----------------+
| Start |
+-----------------+
|
v
+---------------------+
| Validate Session |
+---------------------+
|
|
+----------------------+
| [Session Invalid] |
| Show Error Message |
+----------------------+
|
|
+----------------------+
| [Session Valid] |
| Fetch User and |
| Student Information |
+----------------------+
|
|
+----------------------+
| [Fetch Successful] |
| Display Information |
+----------------------+
|
|
+----------------------+
| Display Personal Info |
+----------------------+
|
|
+----------------------+
| Display Academic Info |
+----------------------+
|
|
+-------------------------+
| Display App Tracking |
+-------------------------+
|
|
+----------------------+
| [Fetch Failed] |
| Show Error Message |
+----------------------+
|
v
+-----------------+
| End |
+-----------------+
Architecture
Frontend
- React: Used for building the user interface.
- Next.js: Server-side rendering and API routes.
- Tailwind CSS: Styling framework.
- Component Libraries: Custom components like
Card,Avatar,Button,Label, andFooterTextare used for consistent UI design.
Backend
- Prisma: ORM for database interactions.
- PostgreSQL: Database to store user, student, and application data.
Technical Implementation
Session Management
- User Authentication: The system checks if the user is logged in and has a valid session.
- Session Retrieval: If the session is valid, the system retrieves user information, including the user ID.
Fetching User and Student Information
- User Information Retrieval: The system retrieves user details, including name, surname, date of birth, gender, address, phone number, personal email, and school email.
- Student Information Retrieval: The system fetches additional student-specific details such as the registration number, program, current level, and current semester.
- Application Data: The system retrieves application data, including academic qualifications and application status.
Displaying Information
- Personal Information: Displays basic personal details of the student like name, surname, date of birth, gender, home address, phone number, personal email, school email, national ID, and nationality.
- Academic Information: Shows the student's program details, current level, registration number, current semester, and remaining time to complete the program.
- Application Tracking: Displays the list of applications with their respective statuses and IDs.
Error Handling
- Invalid User ID: If the user ID is invalid, an error message is displayed.
- No User Data: If no user data is found, a message indicating the absence of user data is shown.
- Internal Server Error: In case of any server errors, an appropriate error message is displayed.
Loading State
- Loading Indicator: A loading skeleton or spinner is shown while the data is being fetched from the server to enhance user experience.
Algorithms and Key Processes
Calculate Remaining Time
- Input: Current level and total duration of the program.
- Process: Parses the total duration to extract the number of years and converts months to years. Then, it calculates the remaining years and semesters based on the current level.
- Output: Returns the formatted string indicating the remaining time.
Fetching Data
- Database Queries: Uses Prisma to query the database for user and student information.
- Data Aggregation: Aggregates data from various related tables to compile comprehensive user and student information.
- Data Formatting: Formats dates and other data fields to be user-friendly.
Relational Diagram
+----------------+ +----------------+
| USER | | STUDENT |
|----------------| |----------------|
| id | |----------| | id |
| name |--| |--| userId |
| surname | | | | currentProgram |
| dateOfBirth | | | | registrationNo |
| gender | | | | currentLevel |
| homeAddress | | | | studentEmail |
| cellNumber | | | | nationalID |
| email | | | | nationality |
+----------------+ | | +----------------+
| |
| | +----------------------+
| | | PROGRAM_LEVEL |
| |----------|----------------------|
| | id |
| | programName |
| | duration |
| | feesPerSemester |
| +----------------------+
|
|
|
| +----------------------+
| | SEMESTER |
| |-----------------------|
|------------------->| id |
| semesterName |
| isCurrent |
+-----------------------+
|
|
|
+-------------------+ |
| APPLICATION |<---------------------------|
|-------------------| |
| id | |
| studentId | |
| shortAppId | |
| status | |
+-------------------+ |
| |
| "includes" |
| |
| |
+---------------------------+ |
| ACADEMIC_QUALIFICATION |<------------------+
|----------------------------|
| id |
| applicationId |
| level |
| subject |
| grade |
+----------------------------+
Detailed Breakdown of Personal Information Retrieval
Validate Session
- Check Session: The system verifies if the user's session is valid.
- If invalid, an error message is displayed, and the process stops.
- If valid, the system proceeds to fetch user and student information.
Fetch User and Student Information
-
User Details: The system retrieves:
- Name: The student's first name.
- Surname: The student's last name.
- Date of Birth: The student's birth date.
- Gender: The student's gender.
- Home Address: The student's residential address.
- Cell Number: The student's contact number.
- Email: The student's personal email address.
- School Email: The student's institutional email address.
- National ID: The student's national identification number.
- Nationality: The student's nationality.
-
Student Details: The system retrieves:
- Registration Number: The unique number assigned to the student upon registration.
- Program: The name of the academic program the student is enrolled in.
- Current Level: The current academic level or year of the student.
- Current Semester: The current semester name.
- Academic Qualifications: A list of qualifications related to the student's applications, including the level, subject, and grade.
Display Information
-
Personal Information Section:
- Displays the retrieved user details in a user-friendly format.
- Uses a combination of text, labels, and sections to organize the information.
-
Academic Information Section:
- Displays the retrieved student details.
- Includes the program, current level, registration number, current semester, and the remaining time to complete the program.
-
Application Tracking Section:
- Lists all applications related to the student.
- Provides links for tracking the status of each application.
Error Handling and Loading State
-
Error Handling:
- If any error occurs during data retrieval, an error message is displayed.
- Common errors include invalid user ID, no user data found, or internal server errors.
-
Loading State:
- While data is being fetched, a loading indicator (such as a spinner or skeleton loader) is displayed to the user.
- This enhances the user experience by indicating that the system is working on fetching the required data.