A full-stack Booking System & Admin Dashboard for a Bali Tour Agency. Built with Next.js 16, Supabase, and Telegram Bot.
- Public: Browse tours, details page, multi-step booking form.
- Admin: Dashboard stats, Manage Tours, Guides, Bookings (Kanban/Table).
- Bot: Telegram integration to broadcast bookings to drivers and handle assignment via inline buttons.
- Framework: Next.js 16 (App Router, Server Actions)
- Database: Supabase (PostgreSQL, Auth, Storage)
- UI: Tailwind CSS, Shadcn UI, Lucide Icons
- Bot: node-telegram-bot-api
-
Install Dependencies
npm install
-
Environment Variables Copy
.env.exampleto.env.localand fill in your Supabase & Telegram keys.cp .env.example .env.local
-
Database Setup
- Go to Supabase SQL Editor.
- Run the contents of
supabase/schema.sql.
-
Seed Data (Optional) Populate the database with sample tours and guides.
npx tsx scripts/seed.ts
-
Run Development Server
npm run dev
Open http://localhost:3000.
-
Run Telegram Bot in a separate terminal:
npx tsx bot/index.ts
src/app: App Router pagessrc/components: Reusable UI componentssrc/lib: Utilities (Supabase client, helpers)bot: Telegram bot scriptsupabase: SQL schema
Private Property of BaliVibe Tours.