| app | ||
| components | ||
| content | ||
| lib | ||
| public | ||
| .dockerignore | ||
| .DS_Store | ||
| .env.example | ||
| .eslintrc.json | ||
| .gitignore | ||
| .nvmrc | ||
| docker-compose.yml | ||
| Dockerfile | ||
| Makefile | ||
| next-env.d.ts | ||
| next.config.js | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
Diyaa Website
A bilingual Next.js website prepared for deployment on a private Linux VPS with Docker.
Stack
- Next.js 14
- React 18
- TypeScript
- Docker / Docker Compose
Local setup
- Copy
.env.exampleto.env - Fill in
NEXT_PUBLIC_SITE_URLand your real contact links - Choose
NEXT_PUBLIC_SITE_MODE=coming-soonorNEXT_PUBLIC_SITE_MODE=full - Install dependencies with
npm install - Run
npm run dev
Quality checks
npm run lintnpm run typechecknpm run buildnpm run check
Docker workflow
make buildmake startmake psmake logsmake stop
The container healthcheck uses /api/health.
STRATO VPS deployment notes
- Install Docker Engine and Docker Compose plugin on the VPS.
- Clone the repository on the server.
- Create
.envfrom.env.exampleand set a real domain inNEXT_PUBLIC_SITE_URL. - Run
make buildonce, thenmake start. - Place Nginx or Caddy in front of the container for HTTPS and domain routing.
- Point your domain to the VPS public IP and enable SSL at the reverse-proxy layer.
Environment variables
APP_PORT: external port exposed by Docker ComposeNEXT_PUBLIC_SITE_URL: canonical site URL used by metadata and sitemapNEXT_PUBLIC_SITE_MODE:coming-soonorfullNEXT_PUBLIC_CONTACT_EMAIL: public email shown on the contact pageNEXT_PUBLIC_LINKEDIN_URL: LinkedIn profile URLNEXT_PUBLIC_GITHUB_URL: GitHub profile URL