Skip to content

Latest commit

 

History

History
150 lines (110 loc) · 6.58 KB

File metadata and controls

150 lines (110 loc) · 6.58 KB

Next.js Supabase Tailwind TypeScript

🎓 Academeet — Faculty Consultation Scheduler

Academeet is a modern, real-time faculty consultation scheduling platform that connects university students with professors. Students can browse available consultation windows, book time slots, and manage their appointments — while professors can create consultation windows, track bookings, and manage their schedules from a dedicated dashboard.

🔗 Live Demo: academeet-snowy.vercel.app


✨ Features

For Students

  • 📅 Interactive Calendar — Browse available consultation windows on a full-size calendar (desktop) or a responsive mobile calendar with topic dot indicators
  • Real-time Updates — Slots update live via Supabase Realtime; no refresh needed
  • 📝 Booking Management — Book slots, edit agendas, and cancel appointments
  • 🔔 Notification Bell — Persistent inbox that alerts students when a professor cancels their appointment, with dismissible notifications stored in local storage
  • 🎨 Category Filtering — Filter by consultation topics (General, Thesis, Practicum, Capstone, etc.)
  • 📱 Fully Responsive — Optimized layout for desktop, tablet, and mobile

For Professors

  • 🗓️ Consultation Window Creator — Set date, time range, slot duration, and topic for consultation blocks
  • 📊 Appointment Grid — View upcoming and past appointments with student details
  • Cancellation with Reason — Cancel booked appointments with a reason that gets logged and pushed to the student's notification inbox
  • 🗑️ Granular Deletion — Delete individual slots or entire empty consultation windows
  • ✏️ Edit Windows — Modify existing consultation window details
  • ⏱️ Live Expiration — Slots automatically move from "Upcoming" to "Past" in real-time

🛠️ Tech Stack

Layer Technology
Framework Next.js 16 (App Router, Server Components, Server Actions)
Language TypeScript 5
Styling Tailwind CSS 4
UI Components shadcn/ui + Radix UI
Icons Lucide React
Backend / Auth Supabase (PostgreSQL, Auth, Realtime, RLS)
Forms React Hook Form + Zod
Dates date-fns
Notifications Sonner (toast) + Custom Notification Bell
Deployment Vercel

🚀 Getting Started

Prerequisites

  • Node.js 18+
  • A Supabase project with the required tables and RLS policies

1. Clone the repository

git clone https://github.com/marc-techdev/Academeet.git
cd Academeet

2. Install dependencies

npm install

3. Set up environment variables

Create a .env.local file in the project root:

NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here

4. Run the development server

npm run dev

Open http://localhost:3000 to view the app.


📁 Project Structure

src/
├── app/                    # Next.js App Router pages & server actions
│   ├── (auth)/             # Login & Signup routes
│   ├── student/dashboard/  # Student dashboard (server component + actions)
│   └── professor/dashboard/# Professor dashboard (server component + actions)
├── components/
│   ├── student/            # Student-specific components
│   │   ├── StudentDashboardLayout.tsx  # Main responsive calendar layout
│   │   ├── BookingDialog.tsx           # Slot booking form
│   │   ├── DaySlotsModal.tsx           # Day detail modal with available slots
│   │   ├── StudentNotificationBell.tsx # Cancellation notification inbox
│   │   └── StudentManageBookingDialog.tsx
│   ├── professor/          # Professor-specific components
│   │   ├── ProfessorBookingsGrid.tsx   # Appointment grid with tabs
│   │   ├── BookedSlotDialog.tsx        # Slot details & cancellation dialog
│   │   ├── CreateWindowForm.tsx        # Consultation window creator
│   │   └── EditWindowDialog.tsx        # Edit existing windows
│   └── ui/                 # shadcn/ui base components
├── types/
│   └── database.ts         # TypeScript types mirroring Supabase schema
└── utils/
    └── supabase/           # Supabase client (browser + server)

🗄️ Database Schema

Table Purpose
users Stores student and professor profiles with roles
consultation_windows Professor-created time blocks with date, time range, and topic
slots Individual bookable time slots within windows (status: open, booked, cancelled)

👥 User Roles

Role Signup Route Dashboard
Student /signup /student/dashboard
Professor /signup/professor /professor/dashboard

📄 License

This project is for educational purposes.


Built with 💜 using Next.js + Supabase