Skip to content

ammarasad2005/Exam-Table

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

425 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FAST Isb Utilities Logo

FAST Isb Utilities

The unified campus companion for FAST NUCES Islamabad

No more digging through messy Google Sheets. No more searching emails for exam schedules. No more peeking into rooms to check if they're free. Everything you need — in one place.

Live Demo Next.js TypeScript Supabase Tailwind CSS


Navigation

The Problem

Life at FAST NUCES Islamabad comes with a set of avoidable daily frustrations that every student knows too well:

  • Messy Timetables — The official timetable is a single, colossal Google Sheet crammed with every section of every department of every batch. Finding your own schedule means scrolling endlessly and squinting through a wall of cells. It's neither quick to open on your phone, nor pleasant to navigate on a desktop.

  • Clustered Exam Schedules — Exam dates arrive as a dense Excel file listing every course for every batch. Students have to manually search for their own papers, and those taking custom or cross-department courses are left piecing things together themselves.

  • No Room Availability Info — Need a quiet place to study? Want to find an empty lab? Your only option is physically walking to the room and peeking in. There's no centralized way to know which rooms are free at any given time.

  • Faculty Info Is a Scavenger Hunt — Looking for a professor's office? You're walking down hallways checking nameplates on every door. There's no publicly accessible directory with office rooms, emails, or profiles.

  • Campus Events Buried in Emails — Events are announced via email blasts and WhatsApp groups. By the time mid-semester rolls around, that event notification is buried under dozens of other messages, and you've missed the deadline.

  • Semester Schedule? Good Luck — The academic calendar with key dates, sessional schedules, and holidays is shared once at the start of the semester in an email or group chat, never to be found again when you actually need it.

  • Lost Items, No Recovery System — Lose a laptop charger in the lab? Find someone's ID card in the cafeteria? There's no campus-wide system to report or recover lost items. It's all word of mouth.

  • No Way to Optimize Your Timetable — Students taking courses across different departments or with elective choices have no way to find clash-free section combinations without manually cross-referencing multiple schedules.

FAST Isb Utilities exists to solve every single one of these problems.


What Is FAST Isb Utilities?

FAST Isb Utilities is an all-in-one web platform purpose-built for the students of FAST NUCES Islamabad. It consolidates every essential campus utility — timetables, exam schedules, room availability, faculty directory, campus events, semester calendar, lost & found, and even a timetable optimizer — into a single, beautifully designed, mobile-first web application.

Instead of juggling between Google Sheets, email threads, WhatsApp groups, and physical scavenger hunts, students get everything they need in one place, accessible from any device, at any time.

Who Is It For?

  • Students of FAST NUCES Islamabad across all batches (2022–2025), departments (CS, AI, DS, CY, SE, EE, CE, SH, AF, MS), and schools (FSC, FSM, FSE) — whether you're following the standard cohort path or taking custom courses across departments.
  • Faculty & Staff who need quick access to room availability, colleague directories, or campus event schedules.
  • Campus Administration looking for a modern, student-friendly alternative to scattered Google Sheets and Excel files.

Screenshots

Landing Page

Landing Page - Desktop    Landing Page - Mobile


Features

📅 Timetable Viewer

View your weekly class schedule filtered by batch, department, and section. No more scrolling through a monolithic Google Sheet with hundreds of rows.

  • List View & Grid View — Switch between a day-grouped list (with today pinned first) and a visual time-block calendar.
  • Section Override — Swap individual courses to a different section if you're attending a cross-section class.
  • Course Removal — Hide courses you've dropped or aren't taking.
  • Elective Handling — Electives and "other" courses are separated into their own expandable section. Special handling for 2022 batch elective groups (G-I, G-II, G-III).
  • Repeat Courses Toggle — Include or exclude repeat courses with a single toggle.
  • Conflict Detection — Overlapping classes are automatically highlighted.
  • Export — Download as CSV, Excel (.xlsx), ICS calendar, or PNG image.

Timetable Viewer - Desktop    Timetable Viewer - Mobile


📝 Exam Schedule Finder

Find your exam dates instantly. Filter by batch, school, and department — or search by course code and name.

  • Day-Grouped Timeline — Exams are organized chronologically by date, so you always know what's next.
  • Search — Live search across course codes and names.
  • Exam Detail Panel — Tap any exam to see full details in a slide-up panel (mobile) or side panel (desktop).
  • Export — Download your filtered exam schedule as CSV, Excel, or ICS.

Exam Schedule - Desktop    Exam Schedule - Mobile


🎯 Custom Exams Builder

Taking courses across multiple departments or batches? Build your own custom exam schedule by selecting individual courses from any combination of batch, stream, and department.

  • Dynamic Row Editor — Add as many courses as you need, each with its own batch/stream/department selectors.
  • Bundle System — Save, name, and reuse course sets so you don't have to re-enter them every time.
  • Match Hints — Each row shows how many exam slots were found for your selection, so you know if you've picked the right course.
  • Export — Same export options as the standard exam finder.

Custom Exams - Desktop    Custom Exams - Mobile


🗓️ Custom Timetable Builder

Same idea as Custom Exams, but for your weekly class schedule. Mix and match courses from any department and section.

  • Course Selection — Pick batch, department, category (regular/repeat), course, and section for each row.
  • Bundle System — Save named bundles of courses and load them anytime.
  • Conflict Detection — Clashing time slots are immediately flagged.
  • Grid View — Visual time-block calendar showing your custom schedule.
  • Today Highlight — Current day highlighted with a gradient border.
  • Export — CSV, Excel, ICS, and PNG image exports.

Custom Timetable - Desktop    Custom Timetable - Mobile


🧠 Timetable Optimizer

The crown jewel for students who want the perfect schedule. Enter your courses, and the optimizer uses a backtracking algorithm to find all clash-free section combinations — then ranks them by how comfortable your week would be.

  • Optimization Goals — Choose from four modes:
    • Maximize Off-Days — Crams classes into the fewest days possible.
    • Balanced (Recommended) — Maximizes off-days, but adds an extra campus day if it avoids a brutal workload.
    • Minimize Workload — Prioritizes balanced days, avoids heavy gaps, and ensures time for midday breaks.
    • Custom Weights — Fine-tune exactly how much you care about early mornings, late afternoons, gaps, consecutive classes, midday breaks, and off-days using sliders.
  • Section Locking — Lock specific sections for courses where you have no choice, and optimize the rest.
  • Comfort Score — Each result shows a comfort score (0–100%) factoring in early classes, late classes, missed midday breaks, bad gaps, and consecutive class fatigue.
  • Fit Score — Relative ranking across all valid combinations.
  • Preview to Custom Timetable — One-click to send any optimized schedule to the Custom Timetable Builder for full editing and export.

Timetable Optimizer - Desktop    Timetable Optimizer - Mobile


🚪 Free Rooms Finder

Find empty rooms across campus without leaving your seat. The timetable data is inverted to show which rooms are free at any given time.

  • Specific Slot Mode — Pick a day and time slot to see which rooms are available right now.
  • Full Calendar Mode — Weekly grid showing room availability across all standard time slots.
  • Vacancy Status:
    • 🟢 Fully Vacant — Completely free for the entire slot.
    • 🟡 Partially Vacant — At least 30 minutes of free time within the slot.
  • Room Grouping — Rooms organized by block (A, B, C, D, Labs) for quick navigation.
  • Room Detail Panel — Tap any room to see its full weekly occupancy schedule.

Free Rooms - Desktop    Free Rooms - Mobile


👨‍🏫 Faculty Directory

A searchable, filterable directory of all FAST Islamabad faculty members. No more wandering the corridors looking for an office.

  • 9 Departments — CS, AI & DS, SE, Cybersecurity, EE, CE, Sciences & Humanities, Accounting & Finance, Management Sciences.
  • Full-Text Search — Search by name, title, email, or office room.
  • Department Filter — Sidebar (desktop) or horizontal pills (mobile) to filter by department.
  • Grid & List Views — Toggle between card grid and compact list (mobile).
  • Faculty Cards — Each card shows name, title, department accent color, office, email, and profile link.
  • Faculty Detail — Expanded view with full information.

Faculty Directory - Desktop    Faculty Directory - Mobile


🎪 Campus Events Calendar

Never miss a campus event again. Events are scraped from the official SLATE portal and displayed in a beautiful monthly calendar.

  • Monthly Calendar View — Navigate month by month to see what's happening.
  • Ongoing Events — Real-time detection of events happening right now (auto-refreshes every 60 seconds).
  • Upcoming Snapshot — Quick view of the next 10 upcoming events.
  • Stats — At-a-glance counts for this month, next month, and total tracked events.
  • ICS Download — Add any event directly to your personal calendar.

Campus Events - Desktop    Campus Events - Mobile


📆 Semester Schedule

The full academic calendar with key dates, holidays, and monthly grids — always accessible, never buried in email.

  • Key Dates Timeline — Animated, staggered timeline of important dates (sessionals, results, deadlines, finals).
  • Date Badges — Color-coded badges: Start, Deadline, Sessional 1, Results, Sessional 2, Finals.
  • Monthly Calendar Grids — Color-coded days: holidays (national & religious), class days, exam days, deadlines.
  • Academic Ranges — Visual representation of the semester's academic phases.
  • Holidays Section — Clearly listed with national/religious distinction.

Semester Schedule - Desktop    Semester Schedule - Mobile


📦 Lost & Found

A complete lost-and-found system for campus. Report items, browse listings, submit claims, and resolve returns — all in one place.

  • 8 Categories — Electronics, Documents, Accessories, Clothing, Keys, Bags, Books, Other.
  • Report Items — Submit with photo (auto-compressed), campus zone location, date, and description.
  • Privacy-First — Found item locations are hidden until you submit a claim, preventing exploitation.
  • Claims System — Submit claims with your description and contact info.
  • Smart Search — AI-powered search (GPT-4o-mini) for natural language queries like "blue USB drive near cafeteria".
  • Bookmarks — Save items to check back on later.
  • Urgency Markers — Flag high-priority items.
  • Resolution Workflow — Mark items as resolved with optional proof photo.
  • Auto-Expiry — Items older than 30 days are flagged; older than 60 days are archived.
  • Onboarding — First-visit tips carousel for new users.

Lost & Found - Desktop    Lost & Found - Mobile


🏠 Configuration & Home Page

The central hub where you pick your feature, set your filters, and configure your experience. Your preferences are saved locally so you never have to re-enter them.

  • Feature Selector — Quick toggle between Timetable, Exams, Rooms, and Faculty.
  • Mode Selector — Default Courses or Custom Courses mode.
  • Dynamic Filters — Batch, school, department, and section selectors that adapt to your chosen feature.
  • Preferences Persistence — All settings saved to localStorage for your next visit.
  • Desktop Ticker — "Next Up" widget showing your upcoming classes.

Home / Configuration - Desktop    Home / Configuration - Mobile


🌗 Dark Mode & Theming

The entire platform supports light and dark themes with a single tap. System preference is detected automatically. Each department has its own accent color throughout the app for instant visual recognition.


⌨️ Keyboard Shortcuts

Shortcut Action
Ctrl + Shift + A Open Admin Dashboard
Ctrl + Shift + Z Go Back

📤 Export Options

Every schedule view supports multiple export formats:

Format Use Case
CSV Open in any spreadsheet app
Excel (.xlsx) Formatted spreadsheet with styled headers
ICS Import into Google Calendar, Apple Calendar, Outlook
PNG Image Share as an image via WhatsApp, social media

How It Works

User Workflow

1.  Open the app → Land on the home screen with feature cards
2.  Pick a feature (Timetable, Exams, Rooms, Faculty, etc.)
3.  Configure filters (batch, department, section) — saved locally for next visit
4.  Browse results → Tap items for detail views
5.  Export or share your filtered schedule

Custom Course Workflow

1.  Choose "Custom Courses" mode instead of "Default Courses"
2.  Add rows for each course you're taking (mix batches/departments freely)
3.  Save as a named "Bundle" for quick access later
4.  View your personalized schedule → Export

Timetable Optimizer Workflow

1.  Open Timetable Optimizer
2.  Enter your courses (or use Default mode to verify your department's courses)
3.  Choose an optimization goal (Max Off-Days, Balanced, Min Workload, or Custom Weights)
4.  Optionally lock specific sections you can't change
5.  Hit "Find the Best Schedules"
6.  Browse ranked results with comfort scores
7.  Preview any result → Sends to Custom Timetable Builder for editing and export

Data Flow

┌──────────────────────────────────────────────────────────────┐
│                     DATA SOURCES                             │
│                                                              │
│  Python Scripts (scrape + parse)                             │
│   ├── all_courses_schedule.py → timetable.json               │
│   ├── scripts/scrape_slate.py → student_events.json          │
│   ├── scripts/filter_events.py → filtered events             │
│   └── scripts/parse-excel.ts → schedule.json (prebuild)      │
│                                                              │
│  Manual Curation                                             │
│   ├── semester_calendar.json (key dates, holidays)           │
│   └── faculty_data.json (9 departments)                      │
└───────────────────────────┬──────────────────────────────────┘
                            │
                            ▼
┌──────────────────────────────────────────────────────────────┐
│                  NEXT.JS BUILD TIME                          │
│                                                              │
│  JSON → require() at module level → Static data baked in     │
│  Prebuild script: parse-excel.ts runs before every build     │
└───────────────────────────┬──────────────────────────────────┘
                            │
                            ▼
┌──────────────────────────────────────────────────────────────┐
│                 CLIENT-SIDE PROCESSING                       │
│                                                              │
│  Timetable: flattenTimetable() → filterTimetable() →         │
│             groupByDay() → detectConflicts()                 │
│                                                              │
│  Rooms:     buildRoomCalendar() → getAvailableRooms()        │
│                                                              │
│  Faculty:   flattenFaculty() → searchFaculty()               │
│                                                              │
│  Events:    parseEventDate() → getEventsForMonth()           │
│                                                              │
│  All filtering, search, and pagination runs client-side      │
│  for instant results with zero API latency.                  │
└───────────────────────────┬──────────────────────────────────┘
                            │
                            ▼
┌──────────────────────────────────────────────────────────────┐
│                 SUPABASE (Real-time Data)                    │
│                                                              │
│  Lost & Found: items, claims, images (Storage)               │
│  Feedback: campus_feedback submissions                       │
│  Admin: session-based authentication                         │
│  Smart Search: GPT-4o-mini powered search                   │
└──────────────────────────────────────────────────────────────┘

Tech Stack

Layer Technology
Framework Next.js 14 (App Router)
Language TypeScript
Styling Tailwind CSS + CSS Custom Properties (Design Tokens)
UI Components Radix UI Primitives + shadcn/ui
Database Supabase (PostgreSQL + Row Level Security + Storage)
Auth Custom session-based admin auth (cookie/token)
Animations Framer Motion
Data Visualization Recharts
Export ExcelJS (XLSX), file-saver (CSV), ICS calendar files
Image Upload browser-image-compression → Supabase Storage
Email Resend + Nodemailer
AI GitHub Models (GPT-4o-mini) for smart search
Analytics Vercel Analytics
Hosting Vercel (Edge Functions + Cron Jobs)
Data Pipeline Python scripts (scraping, Excel parsing) → static JSON

Project Structure

Exam-Table/
├── public/
│   ├── data/                          # Static data files
│   │   ├── timetable.json             # Weekly class schedules (all batches/depts)
│   │   ├── schedule.json              # Exam schedule (all batches/depts)
│   │   ├── semester_calendar.json     # Academic calendar with key dates
│   │   ├── student_events.json        # Campus events from SLATE
│   │   └── faculty/                   # Faculty directory data
│   │       ├── faculty_data.json
│   │       ├── CS.json, AIDS.json, SE.json, ...
│   └── logo/                          # App logo and icon
├── src/
│   ├── app/                           # Next.js App Router pages
│   │   ├── page.tsx                   # Landing page
│   │   ├── home/page.tsx              # Feature selector / configuration
│   │   ├── timetable/page.tsx         # Timetable viewer
│   │   ├── timetable/custom/page.tsx  # Custom timetable builder
│   │   ├── timetable/optimizer/page.tsx # Timetable optimizer
│   │   ├── schedule/page.tsx          # Exam schedule finder
│   │   ├── custom/page.tsx            # Custom exam builder
│   │   ├── rooms/page.tsx             # Free rooms finder
│   │   ├── faculty/page.tsx           # Faculty directory
│   │   ├── events/page.tsx            # Campus events calendar
│   │   ├── semester/page.tsx          # Semester schedule
│   │   ├── lost-found/page.tsx        # Lost & Found system
│   │   ├── admin/page.tsx             # Admin dashboard
│   │   └── api/                       # API routes
│   │       ├── schedule/              # Exam schedule API (Edge)
│   │       ├── smart-search/          # AI-powered search
│   │       ├── feedback/              # Feedback submissions
│   │       ├── lost-found/            # Lost & Found CRUD + claims
│   │       ├── admin/                 # Admin auth (login/check/logout)
│   │       └── export-image/          # PNG export endpoint
│   ├── components/                    # Reusable UI components
│   │   ├── Header.tsx                 # Glass-morphism sticky header
│   │   ├── Navbar.tsx                 # Desktop floating bottom nav
│   │   ├── FloatingMenu.tsx           # Mobile radial FAB menu
│   │   ├── TimetableOptimizer.tsx     # Full optimizer component
│   │   ├── TimetableDetail.tsx        # Timetable detail panel
│   │   ├── ExamDetail.tsx             # Exam detail panel
│   │   ├── FacultyCard.tsx            # Faculty member card
│   │   ├── FacultyDetail.tsx          # Faculty detail panel
│   │   ├── EventsCalendar.tsx         # Monthly calendar component
│   │   ├── FeedbackWidget.tsx         # Side-pinned feedback form
│   │   ├── CountdownBadge.tsx         # Countdown days badge
│   │   ├── GlobalShortcuts.tsx        # Keyboard shortcuts handler
│   │   ├── ThemeToggle.tsx            # Light/Dark mode switch
│   │   ├── DesktopTicker.tsx          # "Next Up" class ticker
│   │   └── ui/                        # shadcn/ui primitives
│   ├── lib/                           # Business logic & utilities
│   │   ├── types.ts                   # TypeScript type definitions
│   │   ├── timetable-filter.ts        # Timetable flattening, filtering, conflicts
│   │   ├── room-logic.ts              # Room calendar builder & vacancy checker
│   │   ├── faculty.ts                 # Faculty search & ranking
│   │   ├── events.ts                  # Event date parsing & calendar logic
│   │   ├── export.ts                  # CSV, XLSX, ICS, PNG export
│   │   ├── supabase.ts               # Supabase client
│   │   ├── admin.ts                   # Admin auth helpers
│   │   ├── theme.tsx                  # Theme provider
│   │   ├── filter.ts                  # Generic filter utilities
│   │   └── utils.ts                   # General utilities
│   ├── hooks/                         # Custom React hooks
│   │   ├── useMobileSwipe.ts          # Swipe-to-close for mobile drawers
│   │   ├── use-mobile.ts              # Mobile detection
│   │   └── use-toast.ts              # Toast notifications
│   └── styles/
│       └── globals.css                # Design tokens, themes, animations
├── scripts/                           # Data pipeline scripts
│   ├── parse-excel.ts                 # Exam Excel → schedule.json
│   ├── scrape_slate.py                # SLATE portal events scraper
│   ├── filter_events.py               # Event relevance filter
│   └── capture-screenshots.js         # Automated screenshot capture
├── all_courses_schedule.py            # Timetable data generator
├── exam_schedule.xlsx                 # Source exam schedule Excel
├── supabase_schema.sql                # Database schema (tables + RLS)
├── vercel.json                        # Vercel cron job configuration
└── package.json

Routes

Route Description
/ Landing page with feature cards
/home Feature selector & filter configuration
/timetable Weekly class timetable viewer
/timetable/custom Custom timetable builder
/timetable/optimizer Timetable optimizer
/schedule Exam schedule finder
/custom Custom exam schedule builder
/rooms Free rooms finder
/faculty Faculty directory
/events Campus events calendar
/semester Semester academic calendar
/lost-found Lost & Found system
/admin Admin dashboard (password-protected)
/api/schedule Filtered exam JSON (Edge)
/api/smart-search AI-powered search endpoint
/api/feedback Feedback CRUD
/api/lost-found/* Lost & Found API (CRUD, claims, resolution)
/api/admin/* Admin auth (login, check, logout)

Getting Started

Prerequisites

  • Node.js 18+
  • Python 3.8+ (for data pipeline scripts)
  • A Supabase project (for Lost & Found and Feedback features)

Installation

  1. Clone the repository:

    git clone https://github.com/ammarasad2005/Exam-Table.git
    cd Exam-Table
  2. Install dependencies:

    npm install
  3. Set up environment variables: Create a .env.local file in the project root:

    # Supabase (required for Lost & Found + Feedback)
    NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
    NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
    
    # Admin authentication
    ADMIN_USERNAME=your_admin_username
    ADMIN_PASSWORD=your_admin_password
    
    # Smart Search (optional - enables AI-powered Lost & Found search)
    GITHUB_TOKEN=your_github_token
    
    # Event scraping (optional - for updating campus events)
    SLATE_USERNAME=your_slate_username
    SLATE_PASSWORD=your_slate_password
    SLATE_TOOL_BASE=your_slate_tool_base_url
    GROQ_API_KEY=your_groq_key
    
    # Email (optional - for Lost & Found notifications)
    RESEND_API_KEY=your_resend_key
    SMTP_HOST=your_smtp_host
    SMTP_PORT=587
    SMTP_USER=your_smtp_user
    SMTP_PASS=your_smtp_password
  4. Set up Supabase: Run the SQL schema from supabase_schema.sql in your Supabase SQL editor. This creates the lost_found_items, lost_found_claims, and campus_feedback tables with Row Level Security policies, plus the lost_found_images storage bucket.

  5. Start the development server:

    npm run dev

    This runs the exam schedule parser first, then starts the Next.js dev server on http://localhost:3000.


Available Scripts

Script Description
npm run dev Run parser + start dev server
npm run build Production build
npm run start Start production server
npm run type-check TypeScript type checking
npm run lint Next.js linting
npm run timetable:update Regenerate timetable.json from course data
npm run events:scrape Scrape events from SLATE portal
npm run events:filter Filter scraped events for student relevance
npm run events:update Run scrape + filter in sequence

Data Pipeline

Exam Schedule Pipeline

exam_schedule.xlsx  →  scripts/parse-excel.ts  →  public/data/schedule.json

Runs automatically as a prebuild step before every build.

Timetable Pipeline

Google Sheets (course data)  →  all_courses_schedule.py  →  public/data/timetable.json

Run manually via npm run timetable:update.

Campus Events Pipeline

SLATE Portal  →  scripts/scrape_slate.py  →  slate_calendar_events.json
             →  scripts/filter_events.py  →  public/data/student_events.json

Run manually via npm run events:update. Requires SLATE credentials and Groq API key.

Faculty & Semester Data

Manually curated JSON files in public/data/.


Scheduled Automation

Vercel Cron Jobs (Production)

Configured in vercel.json:

Schedule Endpoint Purpose
Weekdays 5:00 AM UTC /api/lost-found/cron/reminders Send Lost & Found claim reminders
Sundays 1:00 PM UTC /api/lost-found/cron/reminders Weekly Lost & Found digest

GitHub Actions (Recommended for Data Updates)

  • .github/workflows/update-timetable.yml — Hourly timetable refresh
  • .github/workflows/update-events.yml — Weekly Monday events refresh

Required repository secrets: MAIN_PUSH_TOKEN, SLATE_USERNAME, SLATE_PASSWORD, SLATE_TOOL_BASE, GROQ_API_KEY


Database Schema

lost_found_items

Stores all reported lost and found items with image URLs, campus zone locations, resolution status, and timestamps.

lost_found_claims

Tracks claims submitted by users on found items, with verification status (pending, verified, unclaimed).

campus_feedback

Stores user feedback submissions with category (bug report, suggestion, review, inquiry) and emoji rating (1–5).

All tables use Supabase Row Level Security with permissive policies for the student-facing demo, managed through the admin dashboard.


Design Highlights

  • Glass-morphism Header — Sticky header with backdrop blur and a signature "laser rail" gradient border (purple→orange in light mode, gold→yellow in dark mode).
  • Department Accent Colors — Each of the 11 departments has a unique accent color applied consistently across cards, pills, borders, and badges.
  • Dual Navigation — Desktop uses a floating bottom navbar with "stage light" animation on the active tab; mobile uses an arc-shaped radial FAB menu with drag-to-scroll.
  • Responsive Everything — Every page adapts between mobile (390px) and desktop (1440px+) with bottom sheets on mobile and side panels on desktop.
  • Live "Next Up" Ticker — On the home page, a desktop ticker shows your next upcoming class based on saved preferences.
  • Print-Ready Exports — Dedicated print styles for timetable and exam exports.

License & Usage

This project is source-available — the codebase is publicly visible for learning, transparency, and community contribution, but it is not open source in the traditional sense. I retain full ownership and all rights are reserved.

What You Can Do

  • Read and explore the codebase to understand how things work under the hood
  • Run the project locally to experiment, test, or learn on your own machine
  • Fork the repository to open pull requests — contributions are welcome, I review and merge at my discretion
  • Report issues and suggest features through GitHub Issues

What You Cannot Do

  • Copy the codebase — in whole or in part — into your own project without my explicit permission
  • Lift the UI design or reproduce how things are structured and built here without my explicit permission
  • Use this project commercially without my consent

If you'd like to use any part of this project beyond what's permitted above, reach out to me.


Contributing

Contributions are welcome — I review and merge at my discretion. If you see something that could be improved or want to add a feature:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Contributions I merge become part of this project under the same license terms.


License

© 2026 Ammar Asad. All rights reserved.

Source-available — not open source. You're free to read, run locally, and fork for pull requests. You're not free to copy the codebase, lift the UI design, or reproduce how things are structured and built — in whole or in part — without my explicit permission. Contributions I merge become part of this project under these same terms. See the LICENSE file for full terms.


Built with 💖 for the FAST NUCES Islamabad community

About

A unified campus companion for FAST NUCES Islamabad students. Combines weekly and exam timetables, custom builders for irregular schedules, a clash-free timetable optimizer, a free-rooms finder, a faculty directory, a campus events calendar, semester milestones, and a Lost & Found — all in one responsive platform.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages