Serverless website (fully) with simple CMS

Project Overview: Serverless Full-Stack Nuxt 4.2 Web Application

A high-performance web application built with Nuxt 4.2 utilizing Server-Side Rendering (SSR). The entire stack is deployed as a suite of AWS Lambda functions, providing a fully managed, scalable, and cost-effective solution.

Core Features

  • Dynamic SSR: High-speed server-side rendered HTML for SEO and performance.
  • Integrated API: Unified backend for managing and retrieving content.
  • Secure Access: Built-in authentication for content management and analytics dashboards.
  • Lightweight Analytics: Custom-built statistics engine for high-level traffic insights.

Technical Implementation

Infrastructure as Code (IaC) & CI/CD

  • Automated Pipeline: GitHub Actions trigger on master branch updates to execute sls deploy.
  • Serverless Framework: Manages the deployment of the following resources:
    • SSR Lambda: A custom handler utilizing the Nuxt aws-lambda preset to serve the application.
    • DynamoDB: Implements Single Table Design (with 1 GSI) using On-Demand billing. It stores page content, site structure, user metadata, and aggregated statistics.
    • SQS Queue: Buffers ingested event data to decouple tracking from page rendering.
    • Worker Lambda: A scheduled "compact" function that processes SQS messages to calculate and update statistics.
    • Build Optimization: Utilizes serverless-scriptable-plugin to compile the Nuxt application and transpile TypeScript for the background worker prior to deployment.

Architectural Evaluation

Pros

  • Minimal Maintenance: A "No-Ops" infrastructure with no servers to manage.
  • Cost Efficiency: Extremely low idle cost; the "Pay-as-you-go" model is ideal for sites with variable traffic.
  • Inherent Scalability: Automatically handles traffic spikes without manual intervention.
  • Performance: SSR response times in the tens of milliseconds, optimized by Lambda warm-up strategies.

Cons

  • Lambda-Served Static Assets: While delivering static content via Lambda simplifies the infrastructure (avoiding CloudFront/S3 complexity), it may be less efficient for image-heavy sites. This is a deliberate trade-off for architectural simplicity.

Tech Stack

  • Frontend/SSR: Nuxt 4.2, Vue 3, TypeScript.
  • Backend: NodeJS, AWS Lambda.
  • Persistence: DynamoDB (Single Table Design).
  • Messaging: SQS, SNS.
  • Deployment: Serverless Framework, GitHub Actions.

Role

Lead Architect & Full-Stack Developer