From e356aa8fd9a6aaebaffbfc196638ab5997af16aa Mon Sep 17 00:00:00 2001 From: Kailasdevdas Date: Mon, 20 Apr 2026 12:35:38 +0530 Subject: [PATCH 1/2] chore: remove unused package --- frontend/package-lock.json | 7 ------- frontend/package.json | 1 - 2 files changed, 8 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9e8ff38..46ed472 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,7 +8,6 @@ "name": "frontend", "version": "0.0.0", "dependencies": { - "@bytescale/sdk": "^3.53.0", "@editorjs/code": "^2.9.4", "@editorjs/delimiter": "^1.4.2", "@editorjs/editorjs": "^2.31.5", @@ -525,12 +524,6 @@ "node": ">=6.9.0" } }, - "node_modules/@bytescale/sdk": { - "version": "3.53.0", - "resolved": "https://registry.npmjs.org/@bytescale/sdk/-/sdk-3.53.0.tgz", - "integrity": "sha512-qCeNup3pSjaklXuBrO9JeKbozZEs/PjQEvuqCiOAWLBRl6lDjd0V9gRVYqyttPimXYFoV+J/7dmPWtK6RfOABQ==", - "license": "MIT" - }, "node_modules/@codexteam/icons": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@codexteam/icons/-/icons-0.3.3.tgz", diff --git a/frontend/package.json b/frontend/package.json index 79b6ac9..a97269e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,7 +10,6 @@ "preview": "vite preview" }, "dependencies": { - "@bytescale/sdk": "^3.53.0", "@editorjs/code": "^2.9.4", "@editorjs/delimiter": "^1.4.2", "@editorjs/editorjs": "^2.31.5", From 671a3c4e3ae1ca4e8c3d1b2cbbb305cdd723692c Mon Sep 17 00:00:00 2001 From: Kailasdevdas Date: Mon, 20 Apr 2026 14:39:29 +0530 Subject: [PATCH 2/2] feat: docker dev setup --- README.md | 87 ++++++++++++++++++++++++++++++++++ docker-compose.dev.yml | 44 +++++++++++++++++ docker/dev/Dockerfile.frontend | 17 +++++++ docker/dev/Dockerfile.main | 24 ++++++++++ docker/entrypoint.sh | 14 ++++++ 5 files changed, 186 insertions(+) create mode 100644 README.md create mode 100644 docker-compose.dev.yml create mode 100644 docker/dev/Dockerfile.frontend create mode 100644 docker/dev/Dockerfile.main create mode 100644 docker/entrypoint.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..e6111f4 --- /dev/null +++ b/README.md @@ -0,0 +1,87 @@ +# Docker Setup (Backend + Frontend + PostgreSQL) + +This project provides a complete development environment using **Docker Compose** for: + +- Backend (Node.js / Express / Prisma) +- Frontend (Vite / React) +- PostgreSQL Database + +--- + +## Project Structure + +``` +. +├── backend/ +├── frontend/ +├── docker/ +│ └── dev/ +│ ├── Dockerfile.main +│ └── Dockerfile.frontend +├── docker-compose.dev.yml +``` + +--- + +## Prerequisites + +Make sure you have installed: + +- Docker +- Docker Compose + +--- + +## Environment Variables + +### Backend (`backend/.env`) + +```env +DATABASE_URL=postgresql://user:password@db:5432/mydb +PORT=3000 +JWT_SECRET=your_secret_here + +CORS_ALLOWED_ORIGINS=http://localhost:5173 + +BYTESCALE_SECRET_API_KEY=your_key +POSTMARK_API_KEY=your_key +EMAIL_FROM=admin@example.com +``` + +### Frontend (`frontend/.env`) + +```env +VITE_API_BASE_URL=http://localhost:5000 +``` + +--- + +## Running the Project + +### Start containers + +```bash +docker compose -f docker-compose.dev.yml up --build +``` + +--- + +### Stop containers + +```bash +docker compose -f docker-compose.dev.yml down +``` + +--- + +## Database (PostgreSQL) + +- User: `user` +- Password: `password` +- DB: `mydb` + +Data is persisted using Docker volume: + +``` +postgres_data +``` diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..68646a6 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,44 @@ +version: "3.8" + +services: + backend: + build: + context: . + dockerfile: docker/dev/Dockerfile.main + ports: + - "5000:3000" + env_file: + - ./backend/.env + depends_on: + db: + condition: service_healthy + restart: unless-stopped + + frontend: + build: + context: . + dockerfile: docker/dev/Dockerfile.frontend + ports: + - "5173:5173" + env_file: + - ./frontend/.env + restart: unless-stopped + + db: + image: postgres:15-alpine + container_name: postgres_db + environment: + POSTGRES_USER: user + POSTGRES_PASSWORD: password + POSTGRES_DB: mydb + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U user -d mydb"] + interval: 5s + timeout: 5s + retries: 5 + restart: unless-stopped + +volumes: + postgres_data: diff --git a/docker/dev/Dockerfile.frontend b/docker/dev/Dockerfile.frontend new file mode 100644 index 0000000..e4ff624 --- /dev/null +++ b/docker/dev/Dockerfile.frontend @@ -0,0 +1,17 @@ +ARG NODE_VERSION=22.11.0 +FROM node:${NODE_VERSION}-alpine + +WORKDIR /usr/src/app + +COPY ./frontend/package*.json ./ +RUN npm ci + +COPY ./frontend . + +# Build the app +RUN npm run build + +EXPOSE 5173 + +# Serve built app (no hot reload) +CMD ["npm", "run", "preview", "--", "--host", "0.0.0.0"] \ No newline at end of file diff --git a/docker/dev/Dockerfile.main b/docker/dev/Dockerfile.main new file mode 100644 index 0000000..90f74f6 --- /dev/null +++ b/docker/dev/Dockerfile.main @@ -0,0 +1,24 @@ +ARG NODE_VERSION=22.11.0 +FROM node:${NODE_VERSION}-alpine + +WORKDIR /usr/src/app + +# Use cache mounts for faster installs +RUN --mount=type=bind,source=backend/package.json,target=package.json \ + --mount=type=bind,source=backend/package-lock.json,target=package-lock.json \ + --mount=type=cache,target=/root/.npm \ + npm ci + +# Copy the backend source +COPY ./backend . + +# Copy and setup entrypoint +COPY ./docker/entrypoint.sh /usr/local/bin/entrypoint.sh +RUN chmod +x /usr/local/bin/entrypoint.sh + +EXPOSE 5000 + +ENTRYPOINT [ "entrypoint.sh" ] + +# This '$@' will be replaced by the CMD +CMD ["npm", "run", "dev"] \ No newline at end of file diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100644 index 0000000..f22d875 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,14 @@ +#!/bin/sh +set -e # Exit immediately if a command exits with a non-zero status + +echo "Generating Prisma Client..." +npx prisma generate + +# echo "Running migrate..." +# npx prisma migrate deploy +echo "Running PUSH..." +npx prisma db push + +echo "Executing command: $@" +exec "$@" +