Fullstack Development

261497: Fullstack Development

Preflight project - backend

Github Repo

261497: Fullstack Development

Backend applications

  • Data storage
  • Business logic
  • Authentication / authorization
  • APIs for frontend frameworks (depending on architecture)
  • Connection to other services
261497: Fullstack Development

Node JS backend frameworks

261497: Fullstack Development

Packages

  • npm init -y
  • Express JS
    • npm i express cors helmet
  • Typescript
    • npm i typescript ts-node tsconfig-paths
    • npm i -D @types/cors @types/express tsc-alias
  • ORM
    • npm i drizzle-orm postgres dotenv
    • npm i -D drizzle-kit nodemon
261497: Fullstack Development

Package explanation

Package Details
express Express (duh!)
helmet Set default HTTP response header
cors Enable Cross-origin resource sharing (CORS)
nodemon Script monitoring during dev
261497: Fullstack Development

ORM code

  • All files in ./db folder.
    • No need to copy migration folder.
    • You can change schema.
  • .\drizzle.config.ts (Link)
261497: Fullstack Development

Files

261497: Fullstack Development

Note on tsconfig.json

  • Once we use outDir option any non-./src folder needs to be included, including the root.
{
  "compilerOptions": {
    "outDir": "./dist",
    }
  },
  "include": ["./*", "./src/**/*", "./db/**/*"]
}
261497: Fullstack Development

Minimal example

  • ./src/index.ts (Link)
  • Start dev
    • npm run dev
261497: Fullstack Development

Full example

  • ./src/index.ts (Link)
  • Build
    • npm run build
  • Start production
    • npm run start
261497: Fullstack Development

Containerization

261497: Fullstack Development

261497: Fullstack Development

Steps

  • 💾 ./Dockerfile (Link)
  • 💾 ./dockerignore (Link)
  • 💾 ./docker-compose.yml (Link)
  • 💾 ./.env.test from ./.env.test.example (Link)
  • ⌨️ docker compose --env-file ./.env.test up -d --force-recreate --build
261497: Fullstack Development

261497: Fullstack Development

Dockerhub

261497: Fullstack Development

Push to Dockerhub

  • Tag image
    • ⌨️ docker tag preflight-backend [DOCKERHUB_ACCOUNT]/preflight-backend:latest
  • docker login
  • Push image
    • ⌨️ docker push [DOCKERHUB_ACCOUNT]/preflight-backend:latest
261497: Fullstack Development

Userful docker commands

  • Inspect

    • docker ps
    • docker network ls
    • docker volume ls
  • Cleaning

    • docker image prune -a
    • docker builder prune
    • docker volume prune
    • docker network prune
261497: Fullstack Development