All work
Travel Operations Platform· 2024

CityVol CRM

A travel-agency CRM and operational management system covering clients, travel dossiers, payments and agent performance.

Next.jsTypeScriptPrismaPostgreSQLNextAuthDocker

01 — Overview

CityVol CRM is the operational backbone of a travel agency: every client, travel dossier and payment plan lives in one system, with agents working their own portfolios and management overseeing the whole agency through live dashboards.

02 — The Challenge

Dossiers, payment plans and client documents were tracked in notebooks and WhatsApp. Agents had no shared view of who owed what, managers had no aggregate visibility, and nothing prevented two agents from working the same client inconsistently.

03 — The Solution

We built the CRM around the travel dossier as the central object — destination, amounts, advances, remaining balance and status — with automatic status transitions driven by payments, and strict ownership: agents see their own dossiers, admins see everything with global statistics.

04 — Product Experience

CityVol CRM sign-in screen
Secure sign-in — NextAuth with role-based sessions (FR)
CityVol CRM admin dashboard — revenue analytics and dossier status, client names anonymized
Admin dashboard — revenue analytics, dossier status, real-time agency visibility (client data anonymized)

05 — Engineering

Next.jsTypeScriptPrismaPostgreSQLNextAuthDocker

Next.js App Router with server-side authorization checks on every route, NextAuth credentials + JWT sessions with role-based access, Prisma/PostgreSQL data layer, computed financial fields to eliminate drift, Zod validation at the boundaries, containerized deployment.

Next.jsTypeScriptPrismaPostgreSQLNextAuthDocker

06 — Outcome

A production CRM the agency actually runs on — every dossier, payment and balance in one place, with dashboards leadership trusts.

  • Client and travel-dossier management
  • Payment-driven dossier status
  • Agent-scoped access with admin oversight
  • Dashboards, filters and reporting

Engineering complexity

  • Payment-driven state machine on dossiers
  • Ownership-scoped data access at the query level
  • Admin analytics across agents, destinations and dates

07 — Explore

This platform is deployed and publicly accessible.

Visit Projecthttps://cityvol.cloud

Next case study

TNT Sky Sport

Building something similar?

Tell us what you're building — we'll help you determine the best technical path.

Start a Project
Chat with us