
Multi-Tenant Booking Platform
(2024 - 2025)
A production SaaS platform built collaboratively with Software-Lifecycle-Consultants, where I co-engineered a multi-tenant booking system with complex scheduling, secure authentication, and enterprise-grade deployment pipelines
A production SaaS platform for a cycling tour company in Sri Lanka — built collaboratively with Software-Lifecycle-Consultants, shipping a full multi-tenant booking system with complex scheduling, RBAC authentication, CI/CD pipelines, and end-to-end test coverage. My contributions: Full-stack development across the Astro frontend, PostgreSQL/Prisma data layer, JWT-based authentication system, and Docker-based deployment infrastructure. I led the DevOps pipeline configuration and contributed to the testing framework (Vitest + Playwright). What we shipped: A live, publicly accessible platform handling real customer bookings, with an admin dashboard providing real-time sales metrics, inventory management, and automated email workflows. The site maintains static content availability via a fallback system when the database is under maintenance — a resilience pattern I hadn't built before. This was my first production team environment. Working with experienced engineers through pull requests, code reviews, and architectural debates taught me things about professional software development that solo projects simply cannot.
The Project: Real Client, Real Team
CycleParadise emerged from a real business need—a cycling tour company in Sri Lanka required a modern platform to showcase their tours, manage bookings, and handle customer inquiries. Software-Lifecycle-Consultants took on this project, and I joined the development team to contribute to building the solution from the ground up.
Working within a team structure taught me how professional software development actually operates. We used Git workflows with feature branches and pull requests, conducted code reviews, and coordinated our efforts through task management. Unlike solo projects where I made all decisions independently, here I learned to discuss architectural choices, defend technical decisions, and adapt to team conventions and coding standards.
My Contributions: Architecture & Implementation
Within the team, I spearheaded the full-stack development—working across the Astro frontend, PostgreSQL database layer with Prisma ORM, and the deployment infrastructure. I helped implement the hybrid rendering architecture that combines static generation for SEO-critical marketing pages with server-side rendering for dynamic booking functionality.
I worked on the authentication system implementing session-based authentication with HttpOnly cookies and bcrypt password hashing for the admin panel. The JWT-secured API endpoints ensure distinct access levels between administrators and public users, with Role-Based Access Control (RBAC) governing permissions across the platform.
The DevOps pipeline was another area where I made key contributions—containerizing the application using Docker with multi-stage builds and helping configure the GitHub Actions workflow that automates testing, building, and deployment to a Linux VPS.
Technical Stack & Team Decisions
The team chose Astro for its hybrid rendering capabilities, and working with this decision taught me how technology choices are made in professional contexts—balancing performance requirements, SEO needs, developer experience, and project timelines. I learned to work within established architectural patterns rather than always starting from scratch.
The database design using PostgreSQL with Prisma ORM was a collaborative effort. We implemented a robust fallback system that serves static content when the database is unavailable, ensuring the marketing site remains accessible during maintenance—a resilience pattern I hadn't encountered in personal projects.
Testing practices were enforced team-wide using Vitest for unit tests and Playwright for end-to-end testing. Writing tests alongside features, rather than as an afterthought, was a discipline I developed through this team environment.
Platform Features Delivered
Together, the team delivered a comprehensive booking system with calendar-based availability, accommodation management, and automated email notifications via NodeMailer. The admin dashboard provides real-time sales metrics, booking management, and a drag-and-drop media library for managing site assets.
Tour packages feature rich content management—detailed itineraries, pricing tiers, image galleries, YouTube embeds, and Instagram feed integration. The public site is fully SEO-optimized with structured data, OpenGraph tags, and a service worker for offline capability.
The project included extensive documentation (Admin Guide, Deployment Guide, Technical Debt tracking) that I contributed to, learning that professional software development requires clear documentation for handoffs and future maintenance.
Professional Growth Through Collaboration
CycleParadise was transformative for my development as a software engineer. Working within Software-Lifecycle-Consultants taught me skills that solo projects simply cannot: navigating code reviews constructively, writing code that others can understand and maintain, communicating technical decisions clearly, and contributing to a shared codebase without breaking others' work.
I learned the discipline of following established patterns and conventions even when I might have approached something differently on my own. This experience showed me that professional development is as much about collaboration and communication as it is about technical skill.
Shipping a production application as part of a team—seeing real users depend on code I contributed to—gave me confidence and a realistic understanding of what professional software engineering looks like. The mentorship and feedback from more experienced team members accelerated my growth in ways self-directed learning couldn't match.
