A full-stack application for menu management with a modern tech stack.
- Frontend: https://menu-web.vdaily.app
- Backend API: https://menu-api.vdaily.app
- Next.js 14 with App Router
- TypeScript
- Tailwind CSS
- Zustand for state management
- shadcn/ui components
- NestJS
- TypeScript
- Prisma ORM
- PostgreSQL
- GraphQL
- REST API
- Node.js (v18+)
- pnpm (recommended) or npm
- Docker and Docker Compose
- PostgreSQL
- Clone the repository
git clone https://github.com/npv2k1/fullstack-assignment.git
cd fullstack-assignment
- Install dependencies
# Backend
cd backend
pnpm install
# Frontend
cd frontend
pnpm install
- Set up environment variables
# Backend
cp backend/.env.example backend/.env
# Frontend
cp frontend/.env.example frontend/.env.local
- Start the development servers
# Backend
cd backend
pnpm dev
# Frontend
cd frontend
pnpm dev
The frontend will be available at http://localhost:3000
and the backend at http://localhost:4000
.
Run the entire stack using Docker Compose:
docker compose up -d
Images are stored in GitHub Container Registry (ghcr.io):
- Frontend:
ghcr.io/npv2k1/fullstack-assignment-frontend
- Backend:
ghcr.io/npv2k1/fullstack-assignment-backend
The application is deployed using Kubernetes. Deployment files are located in the deploy/
directory:
deploy/web-deployment.yaml
: Frontend deploymentdeploy/api-deployment.yaml
: Backend deployment
Each deployment includes:
- Deployment configuration
- Service definition
- Ingress rules for external access
GitHub Actions workflow (build.yaml
) handles:
- Building Docker images for frontend and backend
- Publishing images to GitHub Container Registry
- Updating deployment manifests with new image tags
- Creating Pull Requests for deployment updates
MIT License - See LICENSE for details.