Loading Marwan Elsayed
Skip to main content
Back to Work

HemexDashboards

Hemex dashboards

The instructor dashboard and parent portal of a coding academy for children: sessions, attendance and availability for instructors, students and level booking for parents.

Started
2024
Status
Completed
Role
Front-end developer
Area
Dashboards
Stack
Next.js, React, TypeScript, MUI
What I implemented

Built the Hemex instructor dashboard and parent portal: sessions, attendance, availability and profiles for instructors; students, booking and an English and Arabic checkout for parents.

Capture of the Hemex instructor dashboard overview with the next session, this month's sessions and hours, hours taught per month and round progress, shown with sample data.
Real interface, sample data

Context / scope

Overview and scope

Hemex is a coding academy for children in Egypt. Students learn in rounds of weekly sessions, and the platform has a separate app for each role around one API.

This project covers two of them: the instructor dashboard (Next.js with MUI, NextAuth and server actions) and the parent portal (Next.js with Tailwind, Radix UI primitives and next-intl in English and Arabic).

Instructors teach several rounds a week and need to know what is next, take attendance and homework quickly, leave feedback for each child, say when they can teach and hand back a session they cannot give.

Parents need to see which track suits each child, add a new child and book the next levels without phoning the academy.

Front-end developer on the Hemex platform: wrote the instructor dashboard (116 of its 117 commits, November 2024 to February 2025) and the parent portal (all 41 commits, February to May 2025), built front-end prototypes of the sales and finance consoles, and worked on the rounds and sessions screens of the team's admin app (15 of its 107 commits). The student dashboard, the backend and the rest of the admin app were built by other developers.

Results

  1. No usage figures were recorded, so none are claimed. Names, emails, sessions and the transfer number in the captures are sample data.

Interface / screens

Walkthrough

Capture of the Hemex instructor overview with the next session and a replacement request, monthly sessions and hours, hours taught per month and round progress, shown with sample data.
Instructor overview. Real interface, sample data.
1 of 9
Hemex dashboards

Instructor overview. Real interface, sample data.

1 of 9

Screen 1 of 9: Instructor overview. Real interface, sample data.

Screen 1 of 9: Instructor overview. Real interface, sample data.

Responsive and states

Capture of the Hemex instructor overview on a phone, with the next session and the month's figures as cards, shown with sample data.
Instructor overview on a phone. Real interface, sample data.
Hemex dashboards

Instructor overview on a phone. Real interface, sample data.

Screen 1 of 1: Instructor overview on a phone. Real interface, sample data.

Screen 1 of 1: Instructor overview on a phone. Real interface, sample data.

Behaviour / flows

Features and flows

Session: the overview or the sessions list opens a session; the instructor marks attendance and homework for the group, writes feedback, adjusts duration or expenses and closes it as taken.

Replacement: an upcoming session is handed back with one request, and the request shows on the session and on the overview until operations approve it.

Booking: a parent opens a child's recommended track, adds levels course by course, reviews the booking grouped by child and attaches the transfer receipt.

The instructor's week at a glance

  • The overview shows the next session with its round, time and students, this month's sessions and hours taught, and the running rounds, all from the instructor's own sessions.
  • A chart of hours taught per month, round progress, the coming week and the past sessions that still need attendance or feedback, each one click from the session.

Rounds, sessions and attendance

  • Rounds open into their own sessions with schedule and progress; sessions filter by status, name and day, sort by date or duration, and page through the API.
  • The attendance sheet marks students present or absent and homework done, one by one or for every selected student in one request, with feedback for each student.
  • Duration, expenses and highlights of a session are saved and the session is closed as taken; an upcoming session can be handed back with a replacement request.

Availability and profile

  • Weekly availability is drawn on a week calendar next to the instructor's sessions, with the hours per week and the upcoming sessions that fall outside it.
  • The profile edits contact details, skills, languages, preferences and payment methods, with photo, CV and ID uploads; the national ID shows only its last four digits.

Parent portal

  • Parents see each child with the track recommended for them, add a child in a short form, and book levels course by course, studying alone or in a group.
  • One booking follows the parent from the levels to the checkout, grouped by child, and ends with the transfer receipt; every page works in English and in Arabic, right to left.

Engineering / decisions

Architecture and decisions

Status reads the same everywhere: Taken in green, Not closed in amber for a past session without attendance, Upcoming in blue, and the round status in the brand purple.

The attendance sheet puts bulk actions above the students and saves each change as it is made, so a group of eight is marked in a few clicks and nothing is lost if the dialog closes.

The parent portal uses logical spacing (start and end instead of left and right), so the same components lay out correctly in Arabic, right to left.

Built on the existing endpoints

The overview, round progress, the needs-your-input list and the availability check are computed from the sessions and rounds the API already returned to the instructor, so none of them needed a backend change.

One set of session rules

One module maps the API's statuses (Pending, Running, Complete, Canceled for rounds; taken, not taken for sessions) to labels and colours and decides what still needs input, so the overview, the tables and the session dialog always agree.

Filters and paging in the address

Filters, sort and page live in the URL and server components send them to the API, so a filtered list survives a reload or a shared link and the counter counts the rows the API reports.

One booking for the whole portal

The parent's booking is one React context kept in session storage, so it survives moving between pages and a reload, and the header badge, the student cards, the level cards and the checkout all read the same list.

Limits / notes

Known limitations

  1. The API has no availability endpoint yet, so weekly availability is kept in the browser behind two functions meant to be swapped for API calls.
  2. The parent portal's booking is not sent anywhere yet: the API has no booking or payment endpoint and levels carry no price, so the checkout shows sessions, not fees.
  3. The sales and finance consoles were front-end prototypes with sample data written into the code, so they are not shown. The captures run the real production builds against a local stand-in for the API with sample data.

Stack / tools

Technologies

  • Next.js
  • React
  • TypeScript
  • MUI
  • Tailwind CSS
  • NextAuth
  • React Hook Form
  • Zod
  • next-intl
  • Radix UI
  • Recharts
  • FullCalendar
One product, several parts

Part of Hemex

Hemex is a coding academy for children with a separate app for each role. The instructor dashboard covers sessions, attendance, availability and profiles; the parent portal covers students and level booking, in English and Arabic.

The public site has a home page and a four-step registration for parents (email or mobile, a verification code, contact preferences and locations) in English and Arabic, ending with a summary and a link to the parent portal.

WhatsApp (opens in a new tab)