Case Study
CVShelf
CV/Resume Hosting Platform
Executive Summary
CVShelf is a full-stack SaaS platform for building, hosting, and sharing professional CV/resume websites. The platform spans three subdomains — a marketing landing page at cvshelf.com, a blog at blog.cvshelf.com, and the core application at app.cvshelf.com — each deployed from their own repository with independent CI/CD pipelines.
3
Repositories
cvshelf.com + blog + app
Subdomains
Next.js + Node.js
Stack
Landing + Blog + App
Frontend
System Architecture
CVShelf follows a multi-repo, multi-subdomain architecture. Each subdomain operates as an independent Next.js application with its own repository, build pipeline, and deployment target. This separation allows the marketing site, blog, and core app to evolve at different velocities without coordination overhead.
- Landing Page (cvhslef-landing-page): Marketing site with static generation for optimal performance. Handles feature showcases, pricing, and signup flow.
- Blog (cvshelf-blog): Content site with MDX-based articles. ISR ensures new posts go live instantly without full rebuilds. Separated from the main app for cleaner CMS workflows.
- Core App (cvshelf-main): User-facing application handling CV creation, editing, hosting, domain management, and analytics. SSR for authenticated pages, API routes for backend logic.
Core Features & Implementation
Multi-Site Architecture
Three interconnected subdomains — cvshelf.com (marketing landing page), blog.cvshelf.com (content hub), and app.cvshelf.com (the core application) — each deployed independently from their own repositories.
Landing Page (cvshelf.com)
A polished marketing site built to showcase the CVShelf platform, communicate its value proposition, and drive conversions. Designed for clarity and a strong first impression.
Blog Platform (blog.cvshelf.com)
A dedicated blog subdomain serving career advice, resume tips, and platform updates. Separate CMS from the main app for cleaner content management and SEO optimization.
Core Application (app.cvshelf.com)
The heart of the platform — user dashboard, CV builder, hosting infrastructure, custom domain management, and analytics. Handles the full lifecycle from resume creation to publication.
Key Technical Decisions
Next.js (Landing + App)
Server-side rendered React for SEO-critical pages. The landing page uses Static Generation for fast loads, while the app leverages SSR for authenticated dashboard views.
Next.js (Blog)
A separate Next.js instance optimized for content delivery with MDX-based posts, ISR for instant updates on publish, and RSS feed generation.
Multi-Repo Deployment
Each subdomain lives in its own GitHub repository — cvhslef-landing-page, cvshelf-blog, and cvshelf-main — enabling independent CI/CD pipelines, scaling, and deployment schedules.
Custom Domain Hosting
Users can point their own domain at their CVShelf-hosted resume. DNS management, SSL certificate provisioning, and reverse proxy routing handled by the platform.
Landing Page (cvshelf.com)
The first touchpoint — a marketing site built to introduce CVShelf, showcase features, and collect early signups. Fast, lightweight, and conversion-focused.
Blog (blog.cvshelf.com)
A content hub to drive organic traffic through career and resume-related articles. Designed as a separate subdomain for SEO autonomy and clean content management.
Core App (app.cvshelf.com)
The main application — user authentication, CV builder with drag-and-drop editing, live preview, hosting with custom domain support, and visitor analytics.
Outcome
CVShelf ships as a three-part platform with independent release cycles. The landing page drives acquisition, the blog builds organic traffic and authority, and the core app delivers the CV-building and hosting experience. Each piece can be updated, scaled, and maintained without affecting the others.
The multi-repo approach gives clean separation of concerns — marketing changes don't risk breaking the app, blog content publishes instantly without app redeploys, and the core application evolves independently behind its own CI/CD pipeline.