Skip to content
/ hhld Public

High level system design implementation practise repo

Notifications You must be signed in to change notification settings

ezemery/hhld

Repository files navigation

High Level System Design Practise

This repo is used to practise implementation of high level system designs to help improve my knowledge in the topic

Bootstrapped using Turbo repo

This is a monorepo repository boostrapped with Turbo repo. This is done to have all the projects for system design in one repository

What's inside?

This repo includes the following:

Apps and Packages

  • web: a Next.js app
  • api: an Express server
  • @repo/ui: a React component library
  • @repo/logger: Isomorphic logger (a small wrapper around console.log)
  • @repo/eslint-config: ESLint presets
  • @repo/typescript-config: tsconfig.json's used throughout the monorepo
  • @repo/jest-presets: Jest configurations

Each package/app is 100% TypeScript.

Docker

This repo is configured to be built with Docker, and Docker compose. To build all apps in this repo:

# Create a network, which allows containers to communicate
# with each other, by using their container name as a hostname
docker network create app_network

# Build prod using new BuildKit engine
COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose -f docker-compose.yml build

# Start prod in detached mode
docker-compose -f docker-compose.yml up -d

Open http://localhost:3000.

To shutdown all running containers:

# Stop all running containers
docker kill $(docker ps -q) && docker rm $(docker ps -a -q)

Remote Caching

This example includes optional remote caching. In the Dockerfiles of the apps, uncomment the build arguments for TURBO_TEAM and TURBO_TOKEN. Then, pass these build arguments to your Docker build.

You can test this behavior using a command like:

docker build -f apps/web/Dockerfile . --build-arg TURBO_TEAM=“your-team-name” --build-arg TURBO_TOKEN=“your-token“ --no-cache

Utilities

This Turborepo has some additional tools already setup for you:

About

High level system design implementation practise repo

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published