Skip to content

This project uses TypeScript, React, Node, CI/CD, AWS, Docker, and Terraform to build a simple Todo App. Learn how to implement Nest.js and Next.js, test with Vitest and Playwright, and orchestrate AWS infrastructure using Terraform, all within a monorepo setup

Notifications You must be signed in to change notification settings

rcmonteiro/utter-todo

Repository files navigation

Utter Todo

From Nothing to an Automated CI/CD Deploying APP on AWS

alt text

  1. Project Setup and Organization

    • Set up a monorepo using Turborepo.
    • Set up ./config workspaces (eslint, prettier and typescript).
    • Set up a ./apps/web workspace with a create t3-app + shadcn/ui + vitest
    • Set up a ./apps/api workspace with a new fastify api
  2. Domain - Business Logic

    • Define domain entities and value objects.
    • Create use cases and unit tests for business logic.
  3. Frontend Development with Next.js

    • Develop frontend components and UI using Next.js and Shadcn/ui.
    • Implement unit tests using Vitest for frontend components.
    • Implement end-to-end tests with Playwright to validate frontend functionality.
  4. Backend Development with Nest.js

    • Implement backend APIs and business logic with Fastify.
    • Implement end-to-end tests with vitest to validate all backend routes.
  5. Docker

    • Create a docker-compose.yml file for local development.
    • Set up a Dockerfile for the Web and API workspaces.
  6. CI/CD Pipeline

    • Run all tests and build the application using GitHub Actions.
    • Publish Docker images to Docker Hub and AWS ECR.
    • Use semantic release to automate versioning and release management.
    • Configure deployment to AWS App Runner for automated deployment.
  7. Infrastructure as Code (IaC) with Terraform

    • Define infrastructure requirements using Terraform.
    • Provision AWS resources including ECR, App Runner, database, and Redis.

Running locally

  1. Run pnpm install to install dependencies on the root folder.
  2. Run docker-compose up -d to start the database
  3. Run pnpm run dev to start the application on port 3000 and api on port 4000.

About

This project uses TypeScript, React, Node, CI/CD, AWS, Docker, and Terraform to build a simple Todo App. Learn how to implement Nest.js and Next.js, test with Vitest and Playwright, and orchestrate AWS infrastructure using Terraform, all within a monorepo setup

Topics

Resources

Stars

Watchers

Forks

Packages