Uniflow is a comprehensive university coordination platform featuring a dual-interface model: a multi-tenant administration web portal for institutions, and a real-time mobile application built for students and lecturers to streamline daily campus scheduling and resources.
- Overview
- Key Features
- Architecture & Tech Stack
- User Roles & Access
- Project Directory Structure
- Getting Started
- Deployment
- Developer Resources
- License
Higher education coordination is often plagued by communication gaps. Class timetables are typically static PDFs or paper notice sheets. Room allocations, lecturer delays, or class cancellations are distributed across fragmented channels (like WhatsApp, emails, or bulletin boards) with zero real-time visibility.
Uniflow bridges this coordination gap by linking:
- Uniflow Super Admin: Platform operators onboard and manage universities.
- University Admin Portal: Institutional admins manage faculties, departments, courses, timetables, and user directories under custom subdomain hosts.
- Mobile Application: Students and lecturers view personalized timetables, exchange learning resources, and report/verify live class status changes.
- University Onboarding: Streamlined Super Admin portal to approve and set up new institutions, triggering automated subdomain creation and onboarding emails.
- Academic Directory CRUD: Full setup of Faculties, Departments, and Courses. Supports assigning Deans to Faculties and HODs to Departments.
- Combined Timetable & Course Offerings Scheduler: Import a single, structured CSV sheet containing courses, lecturers, times, and classrooms. The backend automatically populates catalog items, links lecturer assignments, and creates weekly schedules.
- Auto-Enrollments Engine: Instantly registers students to course offerings matching their department, level, and current semester bounds.
- Roster Management: Manage lecturer and student directories, execute bulk CSV uploads, and trigger password reset links.
- Today's Classes & Schedules: Fast, real-time timetable dashboard showing current day slots and upcoming weekly calendars.
- Live Class Updates: Lecturers can broadcast class delays (specifying minutes), relocations, or cancellations.
- Crowdsourced Reports & Upvoting: Students can submit live updates (e.g., "Lecturer not in class"), which enrolled peers can upvote to verify and prevent spam.
- Resource Sharing: Lecturers upload PDF/image study guides directly to course offering folders, and students download them in-app.
- Smart Session Filtering: All timetables, courses, and resources automatically filter according to the active academic session (e.g.,
2025/2026) and semester (e.g.,1or2).
Uniflow is organized as a monorepo leveraging a shared Supabase Postgres instance.
- Framework: Next.js 16 (App Router) & React 19
- Styling: TailwindCSS 4.0 & shadcn/ui (Radix UI)
- Animation: Framer Motion (Motion)
- State & Fetching: TanStack React Query & Zod validation
- Mailing Service: Resend API
- Shell: Expo 54 & React Native 0.81
- Routing: Expo Router 6.0 (File-based layouts)
- Local State: Zustand & TanStack Query caching
- Performance: Shopify FlashList for fast timetable scrolling
- Push Notifications: Expo Notifications service
- Engine: Supabase (PostgreSQL 15+)
- Security: Row Level Security (RLS) policies scoped by university tenant boundaries and course enrollment statuses.
- Media Assets: Supabase Storage Buckets (
avatarsandresources).
| Role | Web Access | Mobile Access | Scope / Navigation |
|---|---|---|---|
uniflow_admin |
✅ Super Dashboard | ❌ Blocked | Platform operations and tenant onboarding. |
university_admin |
✅ {tenant}-admin Subdomain |
❌ Blocked | University setup, directories, and schedules. |
lecturer |
❌ Blocked | ✅ (lecturer) Scope |
Viewing teaching calendars, resource uploads, class status alerts. |
dean |
❌ Blocked | ✅ (lecturer) Scope |
Faculty representation, shares lecturer UI. |
hod |
❌ Blocked | ✅ (lecturer) Scope |
Department representation, shares lecturer UI. |
student |
❌ Blocked | ✅ (student) Scope |
Accessing timetables, downloading resources, upvoting reports. |
uniflow/
├── design/ # Pencil UI design canvas files (*.pen)
├── docs/ # General platform guides & architectural redesigns
├── Project Bible/ # Standard developer documentation chapters
├── uniflow-app/ # Expo / React Native mobile app client
│ ├── app/ # File-based navigation routes
│ ├── components/ # Reusable UI widgets
│ ├── hooks/ # Query hooks, push notifications, and camera utilities
│ ├── lib/ # Auth verification and academic session compilers
│ └── supabase/ # SQL migration files and RLS policy scripts
└── uniflow-web/ # Next.js web portals & serverless API routes
├── src/
│ ├── app/ # App Router (university portals, APIs, Super Admin)
│ ├── components/ # shadcn primitives and timetable import components
│ ├── lib/ # Auth gates, domain parsers, and Resend integrations
│ └── proxy.ts # Subdomain rewrite middleware and route guards
- Node.js (v18 or higher recommended)
- npm or yarn package manager
- Expo CLI (for mobile debugging):
npm install -g expo-cli - A Supabase project instance (for Database, Auth, and Storage buckets)
Clone the repository:
git clone https://github.com/Emann-Code-01/Uniflow.git
cd UniflowNavigate into the directory, copy the env file, and run:
cd uniflow-web
cp .env.local.example .env.local # Set your Supabase keys, Domain, & Resend API Key
npm install
npm run devOpen http://localhost:3000 in your browser.
- Local Super Admin Subdomain:
admin.localhost:3000 - Local University Portal Subdomain:
{shortname}-admin.localhost:3000
Navigate into the directory and launch the bundler:
cd uniflow-app
npm install
npx expo start- Press
afor Android Emulator. - Press
ifor iOS Simulator. - Scan the QR code using the Expo Go application on a physical device.
Execute the SQL migration scripts located in uniflow-app/supabase/ within the Supabase SQL editor in the following order:
courses_rls.sqldepartment_levels.sqltimetable_department_fk.sqlprofiles_rls_fix.sqlclass_updates_migration.sql(Creates delay settings and updates parameters)mobile_read_rls.sql(Restructures mobile querying access)course_offerings_migration.sql(Sets up the live runtime offering catalog model)course_offerings_rls.sql(Initializes secure row policies for offerings and enrollments)
Auth Redirect URLs: Setup the following redirect routes in your Supabase authentication console:
https://uniflowapp.xyz/reset-password**https://*-admin.uniflowapp.xyz/**
Uniflow-web is optimized for deployment on Vercel with wildcard subdomain support enabled.
Ensure that environmental variables (NEXT_PUBLIC_SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, etc.) are configured in your Vercel project settings.
Deploy using Expo Application Services (EAS):
cd uniflow-app
eas build --platform allFor a deeper dive into the system logic:
- Uniflow Feature Specification: Deep dive into architecture, domain logic, and databases.
- Project Bible Index: Absolute local sitemap indexing all chapters (Vision, Features, API, UI systems).
- Uniflow Workflow Blueprint: Detailed trace of user onboarding and subdomain rewriting middleware.
- AI Continuation Guide: Essential context and current priorities for incoming developers or AI pairs.
This project is licensed under the MIT License. See the LICENSE file for details.