A custom-built student dashboard designed to interface with the Zone 01 Oujda GraphQL API. This project demonstrates the ability to authenticate users via JWT, query complex relational data, and visualize progress using native SVG components.
The goal of this project is to create a functional profile UI that provides students with a detailed look at their journey, achievements, and statistics within the school's ecosystem.
- Secure Authentication: Support for both
username:passwordandemail:passwordlogin. - Dynamic Data: Real-time queries for XP, grades, and audit ratios.
- Custom Visualizations: Interactive statistics generated purely with SVG (no external charting libraries).
- Responsive Design: A clean, professional UI/UX tailored for student data.
Accessing the GraphQL endpoint requires a JSON Web Token (JWT).
- Endpoint:
https://learn.zone01oujda.ma/api/auth/signin - Method:
POSTwithBasic Authentication(Base64 encoded credentials). - Authorization: The resulting JWT is used in the header of all GraphQL requests:
Authorization: Bearer <YOUR_TOKEN>
The app includes a dedicated logout function to ensure session security.
The "Statistics" section includes at least two custom SVG-based graphs. These represent the student's journey through the curriculum:
- XP Progress: A visualization showing XP earned over specific time periods or by project.
- Success Ratio: A graph representing the ratio of
PASSvsFAILprojects. - Skill Distribution: Visual breakdown of technical skills acquired during the training.
This project implements three primary types of GraphQL interactions:
- Simple Queries: Fetching basic user identity and login info.
- Nested Queries: Retrieving transactions and results linked to the authenticated user.
- Arguments & Filtering: Using
whereclauses to target specific project IDs or transaction types (e.g., filtering fortype: xp).
{
user {
id
login
transactions(where: { type: { _eq: "xp" } }) {
amount
path
createdAt
}
}
}