crovillas.com

Crovillas GmbH

Full-stack vacation rental platform. from the booking experience through internal operations to partner management, seamlessly integrated with payment processing, channel management, and real-time inventory.

Back to References

18

Microservices

3

Frontend Apps

24

Docker Services

400+

API Endpoints

Project Overview

The Starting Point

Croatian coastline — the world Crovillas operates in

Crovillas, a luxury holiday home provider in Croatia, faced a typical industry challenge: bookings scattered across portals, fragmented management, no centralized access for property owners. Crovillas needed one system - guest booking, internal dashboard and owner portal.

What sounds like three separate apps is a tightly interwoven ecosystem. Real-time availability, automatic payment splitting, seamless Booking.com and Airbnb integration. Our approach: map the entire business logic in a modular backend, then build three specialized frontends on top.

01

Challenge

Crovillas came to us with a vision: build a platform for luxury villa rentals in Croatia - entirely from scratch. No existing system, no legacy software, just the idea and the ambition to create a booking platform, an operations dashboard, and a partner portal as one cohesive product.

02

Approach

We built everything from the ground up - a modular monorepo frontend with three Nuxt applications sharing packages, a Go microservices backend with event sourcing for reliable state management, and containerized deployment on GCP.

03

Outcome

A production-ready platform with 18 microservices, 3 frontend apps, Stripe payment integration, and channel management, handling bookings across multiple distribution channels.

Platform

Three Apps, One System

Three interconnected Nuxt applications form the digital backbone of the platform. each tailored to its user group, all built on shared packages.

backend.crovillas.com
Admin
crovillas.com
Catalog
host.crovillas.com
Partner

Catalog

The customer-facing luxury villa marketplace. featuring advanced filtering by region, amenities, and availability, immersive property galleries, interactive Mapbox maps for location discovery, and a complete booking flow with seasonal pricing, discount codes, and real-time availability checks.

Property search with smart filters
Interactive Mapbox region maps
Booking flow with live pricing
Multilingual (18 languages)
SEO-optimized property pages
Responsive across all devices
Shared Go Microservices Backend

Brand Identity

Branding & Design System

For Crovillas, we developed a complete brand identity that unites luxury, trust, and the Croatian lifestyle. The result: a consistent design system across three platforms.

Logo & Wordmark

The Crovillas logo is a typographic wordmark in uppercase with wide letter-spacing. The clean, minimal design conveys exclusivity and professionalism. It achieves its strongest impact in the primary teal color on a dark background.

Crovillas

Design System

The color system is built on a distinctive teal (#37B4C6) as the primary color, complemented by a deep dark blue (#0D1117) for backgrounds and a dark teal (#07414A) as the secondary color. Mona Sans serves as the unified typeface across all three platforms.

Crovillas

Dark Mode

Crovillas

Light Mode

Primary

#37B4C6

#D4F1F6
#A3E0EB
#6BCBDA
#37b4c6
#2A8F9E
#1F6B76

Headline

Aa

Mona Sans · Bold · 700

Buttons

Dark

#0D1117

Body

Aa

Mona Sans · Regular · 400

Line Weights

1px · Accent

2px · Divider

4px · Section

Icons

Villa
Calendar
Map
Payment
User
Mail

Teal Dark

#07414A

Components

Villen suchen...
Verfügbar Gebucht Entwurf

Villa Adriatic Sunset

85%

modernice built our complex platform with the highest technical precision. The microservices architecture allows us to respond quickly to market demands.

Crovillas

Crovillas GmbH

Management

Technical Architecture

Microservices & Event Sourcing

The backend is built on Go microservices using the event sourcing pattern. Domain events as the single source of truth, stored in MongoDB, communicated via gRPC, and distributed through the NATS event bus.

API Gateway
Catalog
Booking
Billing
Contact
Auth
Profile
Channels
PDF
Dunning
Accounting
Document
CRM
Notification

Architecture Decisions

01

The frontend is organized as a monorepo with three Nuxt 4 applications sharing packages for UI components, API clients, and type definitions. maximum reuse with clear domain separation.

02

Domain events serve as the single source of truth: every state change is persisted as an immutable event in MongoDB and distributed to all interested services via NATS. This enables complete audit trails and time-travel debugging.

03

Inter-service communication uses gRPC with Protocol Buffers for type-safe, high-performance calls. A REST gateway translates gRPC endpoints for the frontend.

1

Frontend

3x Nuxt 4 Apps

Nuxt 4Vue 3Tailwind CSSshadcnPinia

Monorepo with shared packages, server-side rendering, Tailwind CSS and shadcn for a consistent design system. Pinia for reactive state management.

2

API Gateway

Go + Chi Router

GoChiJWTCORS

REST gateway orchestrating microservices with CORS handling, JWT authentication, and middleware pipeline.

3

Microservices

18 Go services

gRPCMongoDBNATSEvent Sourcing

Event-sourced aggregates with gRPC communication. Domain events are distributed via NATS, MongoDB serves as the event store.

4

Infrastructure

Docker Swarm + GCP

Docker SwarmTraefikVarnishTerraformGCP

24 containers with Docker Swarm. Traefik for routing and TLS, Varnish for caching, Terraform for IaC.

Tech Stack

  • Nuxt 4 + Vue 3
  • Go 1.25
  • gRPC + Protocol Buffers
  • MongoDB (Event Store)
  • NATS (Event Bus)
  • Tailwind CSS + shadcn
  • Pinia (State)
  • Stripe (Payments)
  • Mapbox GL
  • Docker Swarm
  • Traefik + Varnish
  • Terraform + GCP

Platform Features

Core System Features

01

Villa Catalog

Comprehensive villa search with filtering by regions, categories, amenities, and availability. including detailed property pages with image galleries.

02

Booking Engine

Full booking flow with seasonal pricing, discounts, coupon codes, flexible cancellation policies, and automatic confirmation.

03

Payment Processing

Stripe integration for guest payments and host payouts via credit card, PayPal, Klarna, iDEAL, Sofort, Bancontact, and Przelewy24, plus bank transfer, with automated invoicing and payment tracking.

04

Channel Management

Bidirectional synchronization through a channel manager: availability, pricing, and bookings flow in real time between the platform and Booking.com, Airbnb, Expedia, Vrbo, and other portals.

05

Interactive Maps

Mapbox-powered regional discovery and property location with interactive map views and neighborhood information.

06

Email Automation

Automated email workflows for booking confirmations, reminders, payment requests and dunning, triggered by the platform's own domain events.

07

Operations Center

Central dashboard for booking management, accounting, analytics, and customer relationship management with role-based access.

08

PDF Generation

Automated creation of invoices and booking confirmations as PDF via headless browser rendering.

09

Guest reviews

Guests rate the property and the service separately and can attach photos. The link arrives by email, and a review goes online once it has been approved in the operations centre.

Deliverables

  • 3 Nuxt 4 frontend applications (Catalog, Admin, Host Portal)
  • 18 Go microservices with event sourcing
  • gRPC communication with REST API gateway
  • Stripe payment integration (guest & host)
  • Channel manager integration (Booking.com, Airbnb, Expedia, Vrbo)
  • Interactive maps with Mapbox GL
  • Automated email system
  • PDF generation (invoices, confirmations)
  • Docker Swarm infrastructure with 24 services
  • Varnish HTTP caching & Traefik reverse proxy
  • Terraform infrastructure-as-code (GCP Frankfurt)
  • Internationalization (18 languages)

Project Insights

Technical details and key decisions behind the Crovillas project

Go offers excellent performance with high concurrency, low memory footprint, and compiles to single binaries. ideal for microservices. Strong typing and the simple concurrency model with goroutines enable robust, maintainable services.

Event sourcing stores every state change as an immutable event. This enables complete audit trails, time-travel debugging, easy error reproduction, and the ability to create new projections from historical data. particularly valuable for booking and payment processes.

Docker Swarm provides the optimal balance between orchestration capability and operational simplicity for the current scale. It's natively integrated with Docker, has significantly less management overhead than Kubernetes, and can be migrated when needed.

The platform connects to a channel manager through a dedicated integration, which handles distribution to Booking.com, Airbnb, Expedia, Vrbo, Agoda, and other portals. Availability and pricing are pushed out, and bookings from external channels flow back into the system automatically.

The platform is fully available in 18 languages. The i18n architecture with Nuxt i18n allows for easy addition of further languages at any time without structural code changes.

The entire infrastructure is defined as infrastructure-as-code with Terraform and runs on GCP in Frankfurt. 24 Docker containers are orchestrated via Docker Swarm, with Traefik as reverse proxy for automatic TLS and Varnish for HTTP caching.

Get in Touch

Planning a booking platform or replacing an existing one? With Crovillas we've walked that road end to end. Let's talk about what really matters along the way.