A full-stack note-taking application with authentication (email + OTP + Google) and JWT-protected API.
- Signup/Login with Email + OTP or Google
- JWT-based authentication
- Create & delete notes
- Responsive design with light/dark theme
- Production-ready Docker setup
| Layer | Tech |
|---|---|
| Frontend | React (TypeScript) + Vite + TailwindCSS + ShadCN |
| Backend | Node.js (TypeScript) + Express |
| Database | PostgreSQL / MongoDB / MySQL |
| Auth | Google OAuth & Email OTP |
.
├── client/ # Frontend (React app)
├── src/ # Backend (Node.js + Express)
├── docker-compose.yaml
├── Dockerfile / etc.
└── Makefile
- Node.js ≥ 18
- pnpm ≥ 8
- Docker & Docker Compose
# Frontend
cd client && pnpm install
# Backend
cd .. && pnpm installcd client
pnpm devpnpm devcd client
pnpm buildpnpm build# Frontend
docker build -t note-app-frontend client
# Backend
docker build -t note-app-backend .docker run -p 80:80 note-app-frontend
docker run -p 3000:3000 note-app-backendFor full-stack local setup:
docker-compose up -d --buildStop and clean up:
docker-compose down -vYou can also use the provided Makefile for common tasks:
| Task | Command |
|---|---|
| Install deps (both) | make install |
| Dev frontend | make dev-frontend |
| Dev backend | make dev-backend |
| Lint frontend | make lint-frontend |
| Lint backend | make lint-backend |
| Format frontend | make format-frontend |
| Format backend | make format-backend |
| Build frontend | make build-frontend |
| Build backend | make build-backend |
| Docker build frontend | make docker-build-frontend |
| Docker build backend | make docker-build-backend |
| Docker bake | make docker-bake |
| Docker bake (no cache) | make docker-bake-clean |
| Compose up | make compose-up |
| Compose down | make compose-down |
| Clean node_modules & dist | make clean |
- The frontend React app lives in the
client/folder. - Both frontend & backend use
pnpmand have their ownnode_modules. - Recommended to use Docker Compose or Makefile for local dev & production builds.