Next.js + Tailwind workshop website with online booking, Firebase storage, admin panel, and Nodemailer email alerts.
- Public site for Quality Tire's (owner: Pasha)
- Online booking (service, date/time, car plate, mileage, notes)
- Admin panel for bookings, receipts, and car records
- Firebase Auth + Firestore
- Email notifications via Nodemailer when a booking is created (admin + customer)
- Optional receipt emails to customers
npm install- Create a Firebase project
- Enable Authentication → Email/Password
- Create an admin user with the same email you put in
ADMIN_EMAIL - Create a Firestore database
- Create a service account (Project settings → Service accounts → Generate new private key)
- Copy web app config + service account values into
.env.local
Suggested Firestore collections (created automatically by the app):
bookingsreceiptscars
Configure SMTP in .env.local. For Gmail, use an App Password.
cp .env.example .env.localFill in all values, then:
npm run dev- Home:
/ - Book:
/book - Admin:
/admin/login
npm run dev
npm run build
npm start- Public bookings write through
/api/bookingsusing the Firebase Admin SDK, then send emails. - Admin routes require a Firebase ID token and must match
ADMIN_EMAIL. - Update phone/address in
src/lib/constants.ts.