Work · 2023 · Live since 2023
Scheds
Every valid timetable for a Nile University student, under their own constraints.
- scheds.runasp.net
- Code
- Design · Backend · Frontend

المشكلةThe problem
Nile University students pick sections under constraints: how many days on campus, the longest gap they will tolerate, the earliest start, the labs and tutorials that have to come along. The registration portal offers none of that.
البناءThe build
An ASP.NET Core application with EF Core and SQL Server that pulls live course data from the university system, lets a student build a cart, and enumerates every valid timetable that satisfies their preferences. A study-room finder reads the same data backwards to find empty rooms. It started as a Java project in 2023, became .NET 8 in 2024, and grew a React and TypeScript frontend with Google sign-in in 2026.
التشغيلHow it runs
Live since 2023 through several registration weeks, which is when everyone shows up at once.
System · النظام
How Scheds is put together
229 files in 53 folders, without dependencies or vendored code. C# 48% · TypeScript 30% · JSON 3%.
- the product's own code
- services it runs
- data
- outside providers
One request · رحلة طلب
Registration week
Step by step through the system above. The tags name the parts each step touches.
Search
A student types a course code or name. Results come from the cached catalogue, or from a live fetch against the university system when they ask for it.
- React frontend
- ASP.NET Core API
- SQL Server
- NU self-service
Cart
Courses go into a cart that survives a refresh without an account. Sign-in is optional and only matters for personal features.
- React frontend
- Google sign-in
Constrain
Days on campus, the longest acceptable gap, earliest start and latest end, and whether labs and tutorials have to come along for engineering students.
- React frontend
Generate
The generator enumerates every combination of sections that satisfies the constraints and returns them all, ranked by the preferences, never just one.
- ASP.NET Core API
- Schedule generator
- SQL Server
Choose
Options render as weekly timetables side by side. The student compares and picks; the system does not decide for them.
- React frontend
Find a room
The same data, read backwards, answers a different question: which rooms are empty at this hour on this day.
- Study-room finder
- SQL Server
Decisions · قرارات
Why Scheds is built this way
Enumerate every valid timetable rather than optimise for one
Students weigh trade-offs that no scoring function captures. The constraints prune the space and the student chooses within it.
Live data with a cached fallback
The university system is slow and sometimes unavailable exactly when everyone needs it. A cached catalogue keeps the generator usable; a live refresh is one click away.
No account required
Registration lasts a few days a term. Forcing a sign-up would lose the moment; the cart lives in a cookie, and Google sign-in arrived only when features needed an identity.
A study-room finder from the same data
The schedule data already says where every class is. Inverting it yields empty rooms at no extra cost.
Java, then .NET 8, then a React frontend
Each rewrite kept the generator and replaced the layer that had become the limit: first the runtime, then the server-rendered views that could not carry the interaction a comparison view needs.
Design system · نظام التصميم
How Scheds looks
A dark navy week with one orange, and a categorical colour per course so a timetable reads at a glance.
Palette
- Dark#0D101CGround
- Lighter dark#171B26Surface
- Orange#FF7300Action
- Light blue#004060Accent
- Light text#FCFCFCInk
- Card blue#1E4FA3A course
- Card green#1C6B3FA course
- Card yellow#F5B301A course
- Card purple#5B3A8AA course
- Card rose#B83280A course
Type
System sans · display and interfaceScheds Aa Bb 0123
Principles · inferred from the product
- Constraints first: days on campus, gaps, earliest start and required labs are inputs, not afterthoughts.
- Every valid timetable, not the first one. The generator enumerates; the student chooses.
- Live data over cached data whenever the university system answers.
Code · الملفات
Inside the repository
Public on GitHub. 229 files in 53 folders, without dependencies, build output or vendored code.
- C#48%
- TypeScript30%
- JSON3%
- C# projects2%
- Razor2%
- YAML2%
Scheds/128
.github/2
workflows/2
Scheds/27
.config/1
Controllers/15
Filters/1
Properties/1
Views/6
Shared/4
Scheds.Application/17
Interfaces/16
Repositories/8
Common/1
Services/8
Scheds.Domain/42
Configuration/4
DTOs/22
Admin/4
Common/1
SeatAlerts/4
SelfService/2
Entities/12
Common/1
ValueObjects/1
ViewModels/2
Scheds.Infrastructure/37
Configurations/1
Contexts/1
Migrations/11
Repositories/8
Common/1
Services/9
Util/5
scheds.frontend/101
.github/2
workflows/2
public/19
images/17
src/70
assets/1
components/30
find-study-rooms/5
generate-schedules/9
layout/4
seat-alerts/4
self-service-search/3
ui/5
contexts/1
hooks/13
lib/6
pages/11
types/5
Screens · شاشات
Scheds as it ships
Captured from the live product. Desktop frames are 1440 wide, phones 390.



