Company-based quiz management system built with Next.js 16, TypeScript, and Tailwind CSS v4.
- Framework: Next.js 16.1.6 (App Router, Server Components, Turbopack)
- Language: TypeScript 5 (strict mode)
- Styling: Tailwind CSS v4 + shadcn/ui (radix-nova)
- State: Redux Toolkit (minimal) + Zustand (UI state)
- Auth: Auth.js v5 (Credentials + Auth0/Google)
- Backend: NestJS REST API
- Clone the repository:
git clone https://github.com/YakovchukIvan/fullstack-internship-frontend.git
cd fullstack-internship-frontend
- Install dependencies:
npm install
- Set up environment variables:
cp .env.sample .env
- Fill in
.envvalues. Generate AUTH_SECRET:
openssl rand -base64 32
- Start development server:
npm run dev
| Script | Description |
|---|---|
npm run dev |
Development server (Turbopack) |
npm run build |
Production build |
npm run start |
Production server |
npm run lint |
Run ESLint |
npm run lint:fix |
Fix ESLint errors |
npm run format |
Format with Prettier |
npm run format:check |
Check formatting |
| Variable | Description |
|---|---|
NEXT_PUBLIC_APP_URL |
Frontend URL |
BACKEND_URL |
NestJS backend URL (server-side only, never exposed to browser) |
AUTH_SECRET |
Auth.js secret key |
NEXT_PUBLIC_WS_URL |
Socket.io URL for real-time notifications |
See .env.sample for all required variables.
Docker is used for local development and production-like testing. For production deployment, you can use any hosting platform that supports Node.js (e.g., Vercel, AWS, Railway, Render).
- Docker Desktop installed and running
- Set up environment variables (if not done already):
cp .env.sample .env
- Build and start the container:
docker compose up --build
-
Stop the container:
docker compose down
docker build -t quizforge-frontend .
| Service | Port | Description |
|---|---|---|
| web | 3000 | Next.js application |