A desk & room booking platform built with Next.js 16 (App Router), shadcn/ui, Drizzle ORM, and Neon Postgres.
- Overview dashboard — live availability, utilization, today's bookings.
- Directory — browse rooms and desks with search + type/status filters.
- Space detail — capacity, equipment, upcoming bookings.
- Booking flow — reserve a space with a date/time picker; server-side conflict detection prevents double-booking.
- Reservations — view and cancel your upcoming bookings.
- Light/dark mode, mock signed-in user (Achmad Hakim, Facility Manager).
cp .env.example .env.localEdit .env.local and paste your pooled Neon connection string from
console.neon.tech → your project → Connection Details.
npm run db:push # create tables in your Neon database
npm run db:seed # populate demo building, spaces, users & bookingsnpm run devOpen http://localhost:3000.
| Script | Description |
|---|---|
npm run dev |
Start the dev server |
npm run build |
Production build |
npm run db:push |
Push the Drizzle schema to Neon |
npm run db:seed |
Seed demo data |
npm run db:studio |
Open Drizzle Studio to inspect the database |
app/(app)/— authenticated app shell (sidebar layout) + routes.lib/db/schema.ts— Drizzle tables (buildings → floors → zones → spaces, users, bookings).lib/db/queries.ts— read queries + derived live space status.lib/actions.ts— server actions (createBooking,cancelBooking).lib/auth.ts— mock current user (swap for Auth.js/Clerk later).components/— feature components on top ofcomponents/ui/(shadcn).