Skip to content
<Rojit />
Bookings· 2025

Travel Booking & Admin Panel

Full tour and package management system with Filament v5 admin panel, Sanctum API authentication, AWS S3 media storage, Spatie role management, and CI/CD deployment pipeline.

Technical case study by Rojit Pokharel — Full-Stack Web Developer & System Architect, Kathmandu, Nepal

LaravelFilamentSanctumAWS S3Spatie

Stack diagram

Application
LaravelFilamentSanctumSpatie
Infrastructure
AWS S3
Client / Problem
$
  • A travel operator needed a full tour and package management system — catalog, booking flow, media, and role-managed admin — replacing manual catalog updates and bookings.
  • Package media (photos, itineraries) had to be stored reliably off-server.
  • The team wanted an automated CI/CD pipeline so releases stopped being manual rituals.
My Role
$
  • Full-stack developer — Laravel tour/package system with Filament v5 admin, Sanctum API auth, AWS S3 media storage, Spatie roles, and CI/CD.
  • Designed the package, booking, and media schema.
Architecture
$
  • Laravel backend with Filament v5 admin panel for package, itinerary, and booking management.
  • Sanctum-based API authentication for booking and query endpoints.
  • AWS S3 media storage with signed uploads for package images and documents.
  • Spatie role/permission management across admin and operator accounts.
  • CI/CD pipeline for automated test, build, and deployment.
Database Design
$
  • Schema for packages, itineraries, bookings, customers, and media.
  • Media morphs attach images/documents to packages and itineraries without schema churn.
  • Booking and package tables indexed for the catalog and availability queries.
API Architecture
$
  • REST API exposing package catalog and booking endpoints with Sanctum auth.
  • Filament resources as the admin surface; API as the public surface.
Authentication
$
  • Sanctum token auth for the public booking API.
  • Spatie roles separating content editors, booking operators, and administrators.
Deployment
$
  • AWS S3 for media storage; CI/CD pipeline automating build and deploy.
  • Laravel behind Nginx with SSL, MySQL database.
Performance Optimization
$
  • S3 media offloads files from the app server, keeping package page loads fast.
  • Signed upload URLs avoid streaming media through PHP.
Problems Encountered
$
  • Storing and serving package media efficiently as the catalog grows.
  • Automating a consistent release pipeline instead of manual deploys.
How I Solved Them
$
  • AWS S3 with direct signed uploads and CDN-friendly URLs.
  • CI/CD pipeline that runs tests, builds assets, and deploys on merge.
Results
$
  • A production travel booking system with role-managed Filament admin, secure API, and reliable media storage.
Lessons Learned
$
  • Offload media to object storage early — it is painful to retrofit.
  • A CI/CD pipeline converts release anxiety into a routine merge.

Want a production system like this?

I build production web applications end-to-end. Let's discuss your project.

Get in Touch