Protyre_SmartServiceScheduler
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v4View latest version
A comprehensive booking and management system for Protyre tyre service centers.
- Service type selection (tyre replacement, wheel alignment, brake check)
- Branch location selection
- Date and time slot picker
- Customer and vehicle details form
- Booking confirmation with SMS/Email notifications
- View all bookings by date and time
- Technician availability management
- Time slot management (add/block slots)
- Utilization charts per technician
- Auto-balance bookings across technicians
- Daily summary dashboard
- SMS and email confirmations
- Booking reminders
- Daily summary reports
├── backend/
│ ├── database/
│ │ ├── migrations.ts # Database schema
│ │ └── queries.ts # Database operations
│ ├── routes/
│ │ ├── bookings.ts # Booking management
│ │ ├── admin.ts # Admin operations
│ │ └── notifications.ts # SMS/Email handling
│ └── index.ts # Main API server
├── frontend/
│ ├── components/
│ │ ├── App.tsx # Main app component
│ │ ├── BookingForm.tsx # Customer booking interface
│ │ ├── AdminPanel.tsx # Admin dashboard
│ │ └── Dashboard.tsx # Summary dashboard
│ ├── index.html # Main HTML template
│ ├── index.tsx # Frontend entry point
│ └── style.css # Custom styles
└── shared/
└── types.ts # Shared TypeScript types
- Backend: Hono.js API framework
- Database: SQLite with Val Town's sqlite service
- Frontend: React with TypeScript
- Styling: TailwindCSS
- Notifications: Email via Val Town's email service
- Charts: Chart.js for utilization visualization
Set these in your Val Town environment:
TWILIO_ACCOUNT_SID- For SMS notificationsTWILIO_AUTH_TOKEN- For SMS authenticationTWILIO_PHONE_NUMBER- Your Twilio phone number
- The backend API runs on the main HTTP endpoint
- Access the customer booking interface at
/ - Access the admin panel at
/admin - View the dashboard at
/dashboard
GET /api/branches- Get all branch locationsGET /api/services- Get available servicesGET /api/availability- Get available time slotsPOST /api/bookings- Create new booking
GET /api/admin/bookings- Get all bookingsGET /api/admin/technicians- Get technician availabilityPOST /api/admin/slots- Manage time slotsGET /api/admin/dashboard- Get dashboard data