How duttaabhirupdev10/camp_vista works
CampVista is an Express campground-booking application with customer, owner, and admin roles. Users register or log in, browse and view campgrounds, then submit booking dates and confirm a pending booking; owners manage their campgrounds and bookings, while users can leave reviews. Controllers coordinate domain services/models and EJS pages. The sampled code establishes several call paths; booking, owner, and campground persistence details are partly unsampled, so uncertain internal wiring is omitted. The README describes broader admin capabilities than the supplied tree supports.
Main entry points: app.js Express app · supabase.js Supabase client · campgroundRoutes.js Campground routes · bookingController.js Booking controller
Components 24
Web entry and pages
- Express app
app.js - Auth routes
routes/authRoutes.js - Campground routes
routes/campgroundRoutes.js - Review routes
routes/reviewRoutes.js - Booking routes
routes/bookingRoutes.js - Owner routes
routes/ownerRoutes.js - EJS views
views
Identity and access
- Auth controller
controllers/authController.js - Auth service
services/authService.js - Login middleware
middleware/auth.js - Role checks
middleware/role.js - Ownership checks
middleware/owner.js
Campground and reviews
- Campground controller
controllers/campgroundController.js - Campground service
services/campgroundService.js - Review controller
controllers/reviewController.js
Bookings and ownership
- Booking controller
controllers/bookingController.js - Owner controller
controllers/ownerController.js
Data and integrations
- Campground model
models/campgroundModel.js - Review model
models/reviewModel.js - User model
models/userModel.js - Booking model
models/bookingModel.js - Supabase client
utils/supabase.js
Other components
- User
- Supabase services
Connections 34
- User → Express app: sends requests
- Express app → Auth routes: mounts routes
- Express app → Campground routes: mounts routes
- Express app → Review routes: mounts routes
- Express app → Booking routes: mounts routes
- Express app → Owner routes: mounts routes
- Auth routes → Auth controller: dispatches
- Campground routes → Campground controller: dispatches
- Review routes → Review controller: dispatches
- Booking routes → Booking controller: dispatches
- Owner routes → Owner controller: dispatches
- Campground routes → Login middleware: checks login
- Campground routes → Role checks: checks role
- Campground routes → Ownership checks: checks ownership
- Review routes → Login middleware: checks login
- Auth controller → Auth service: calls
- Auth service → Supabase client: uses
- Auth service → User model: reads and writes
- Supabase client → Supabase services: auth and data calls
- Campground controller → Campground service: calls
- Campground controller → EJS views: renders campground pages
- Auth controller → EJS views: renders account pages
- Booking controller → Campground model: loads campground
- Booking controller → Booking model: creates and lists bookings
- Booking controller → EJS views: renders booking pages
- Express app → Booking model: counts owner bookings
- Owner controller → EJS views: renders management page
- Review controller → Review model: creates and reads reviews
- Review controller → Supabase client: checks duplicate reviews
- Review model → Supabase client: reads and writes
- Campground service → Campground model: uses
- Campground model → Supabase client: uses
- User model → Supabase client: uses
- Booking model → Supabase client: uses