Consultancy Web Platform
A bilingual web platform for a digital consultancy that needed a professional online presence with full editorial control. The system lets non-technical editors publish and maintain multilingual content without creating a developer bottleneck.
For a digital consultancy, projecting a professional image across local and international markets is a common challenge. The harder part is doing it while keeping complete editorial control in the hands of the team, without turning every content update into an engineering task. The goal was a platform that stays fast and accessible, but remains simple for non-technical editors to operate.
The solution is a split architecture: a headless CMS for editing and a separate delivery layer for the public site. Editors can publish and maintain bilingual content through the CMS, while the public site stays performant and stable.
A key architectural decision was to decouple content management from content delivery. Using a headless CMS like
Stack
While the problem is more important than the tools, the tech stack tells a story about the project's architecture and trade-offs. Here's what this project is built on:
Platforms & Runtimes
Implements all frontend and shared configuration with static typing for Next.js pages, components, and environment validation.
Runs Next.js and Strapi in development and production, including build-time tasks and the Strapi CMS server.
React meta framework powering the site with server-side rendering, static generation, and API routes for dynamic content.
Frontend & Visualization
Renders the public website UI, components, and interactive elements in the Next.js app.
Used for styling the web UI and shared components in a consistent, variable-driven manner with utility-first classes.
Provides accessible primitives (navigation, dropdown) as the base for customized UI components used across the site.
Backend & APIs
External Services
Cloud & DevOps
Used for hosting the Next.js frontend with automatic deployments from the GitHub monorepo.
Containerizes the Strapi CMS for production with a multi-stage image that builds and runs the CMS service.
Used for self-hosting the Strapi CMS with managed Docker deployment, reverse proxy, and SSL.
Used for automatically building the Strapi CMS Docker image and pushing it to GitHub Container Registry on new releases.
Development Tooling
Manages monorepo workspaces for web and CMS, controls install scope, and locks dependency versions across packages.
Accelerates Next.js development and build steps configured for the frontend app, improving local iteration speed.
Formats and lints at the workspace root to maintain consistent code style across packages.