How thienda-blockchain/24ct1-duongthienda works
This is a football-pitch booking and operations app for Tuyên Sơn. Players check daily availability, create a booking, submit payment evidence, and review booking history; staff and owners manage bookings and reconcile payment. Registration and login support the user journey, while a seed endpoint initializes staff accounts and pitch data. The sampled routes establish the main API-to-model calls; other pages and model behavior are represented only where supported by the tree or excerpts.
Main entry points: mongodb.ts Mongo connection · login/route.ts Login API · availability/route.ts Availability API · bookings/route.ts Create booking API
Components 21
Player experience
- Availability and booking
app/page.tsx - Registration
app/register/page.tsx - Login
app/login/page.tsx - Booking history
app/my-bookings/page.tsx
Venue operations
- Operations dashboard
app/admin/page.tsx
Application backend
- Registration API
app/api/auth/register/route.ts - Login API
app/api/auth/login/route.ts - Availability API
app/api/fields/availability/route.ts - Create booking API
app/api/bookings/route.ts - Booking history API
app/api/bookings/my-bookings/route.ts - Booking update API
app/api/bookings/[id]/route.ts - Venue initialization
app/api/seed/route.ts
Persistence
- Mongo connection
lib/mongodb.ts - User model
models/User.ts - Field model
models/Field.ts - Booking model
models/Booking.ts
Other components
- Player
- Staff / owner
- MongoDB
- bcryptjs
- jsonwebtoken
Connections 36
- Player → Availability and booking: browses and books
- Player → Registration: creates account
- Player → Login: signs in
- Player → Booking history: reviews bookings
- Staff / owner → Operations dashboard: manages venue
- Availability and booking → Availability API: requests availability
- Availability and booking → Create booking API: submits booking
- Registration → Registration API: submits registration
- Login → Login API: submits credentials
- Booking history → Booking history API: loads bookings
- Operations dashboard → Availability API: loads daily schedule
- Operations dashboard → Create booking API: records walk-in
- Operations dashboard → Booking update API: updates booking
- Registration API → Mongo connection: connects
- Registration API → User model: checks and creates
- Registration API → bcryptjs: hashes password
- Login API → Mongo connection: connects
- Login API → User model: finds user
- Login API → bcryptjs: compares password
- Login API → jsonwebtoken: signs token
- Availability API → Mongo connection: connects
- Availability API → Field model: reads field
- Availability API → Booking model: reads bookings
- Create booking API → Mongo connection: connects
- Create booking API → Field model: reads field
- Create booking API → Booking model: checks and creates
- Booking history API → Mongo connection: connects
- Booking history API → Field model: reads field
- Booking history API → Booking model: reads bookings
- Booking update API → Mongo connection: connects
- Booking update API → Booking model: updates booking
- Venue initialization → Mongo connection: connects
- Venue initialization → User model: creates or updates
- Venue initialization → Field model: creates or updates
- Venue initialization → bcryptjs: hashes passwords
- Mongo connection → MongoDB: connects