A complete appointment booking system with admin dashboard and WhatsApp integration.
- Backend: Node.js + Express + TypeScript + Prisma + PostgreSQL
- Frontend: React + TypeScript + TailwindCSS + shadcn/ui
- WhatsApp: Clawdbot Skill integration
docker-compose up -d postgrescd backend
npm install
cp .env.example .env
npx prisma generate
npx prisma db push
npm run db:seed
npm run devBackend runs at http://localhost:3001
cd admin-dashboard
npm install
npm run devDashboard runs at http://localhost:5173
- Email: [email protected]
- Password: admin123
POST /api/auth/login- Admin loginPOST /api/auth/register- Register new admin
GET /api/services- List all servicesPOST /api/services- Create service (auth required)PUT /api/services/:id- Update service (auth required)DELETE /api/services/:id- Delete service (auth required)
GET /api/appointments- List appointments (auth required)POST /api/appointments- Create appointment (auth required)PUT /api/appointments/:id- Update appointment (auth required)DELETE /api/appointments/:id- Cancel appointment (auth required)
POST /api/appointments/book- Book appointment (phone verification)GET /api/appointments/client/:phone- Get client's appointmentsPOST /api/appointments/cancel-client- Cancel by clientPOST /api/appointments/reschedule-client- Reschedule by client
GET /api/slots?date=YYYY-MM-DD&serviceId=xxx- Get available slots
GET /api/clients- List clients (auth required)POST /api/clients- Create client (auth required)PUT /api/clients/:id- Update client (auth required)
GET /api/dashboard/stats- Dashboard statistics (auth required)GET /api/dashboard/today- Today's schedule (auth required)GET /api/dashboard/recent- Recent activity (auth required)
appointment-platform/
├── docker-compose.yml
├── README.md
├── backend/
│ ├── prisma/
│ │ ├── schema.prisma
│ │ └── seed.ts
│ └── src/
│ ├── index.ts
│ ├── app.ts
│ ├── config/
│ ├── types/
│ ├── utils/
│ ├── middleware/
│ ├── services/
│ ├── controllers/
│ └── routes/
├── admin-dashboard/
│ └── src/
│ ├── api/
│ ├── components/
│ ├── hooks/
│ ├── pages/
│ ├── stores/
│ └── types/
└── clawdbot-skill/
└── SKILL.md # Clawdbot skill (markdown only)
The clawdbot-skill/SKILL.md teaches Clawdbot how to use the appointment API via WhatsApp.
-
Copy the skill to your Clawdbot skills directory:
cp -r clawdbot-skill ~/.clawdbot/skills/appointment-booking -
Set the API URL environment variable:
export APPOINTMENT_API_URL="http://localhost:3001/api"
-
The skill will be automatically loaded by Clawdbot.
Users can message your Clawdbot-connected WhatsApp number:
- "What services do you offer?"
- "Book a dental cleaning for tomorrow at 10am"
- "Show my appointments"
- "Cancel my appointment"
- "Reschedule my appointment to Friday at 2pm"
DATABASE_URL="postgresql://postgres:postgres123@localhost:5432/appointments"
JWT_SECRET="your-jwt-secret-key"
PORT=3001
MIT