54 lines
1.4 KiB
Markdown
54 lines
1.4 KiB
Markdown
# 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
|
|
|
|
1. Copy `.env.example` to `.env`
|
|
2. Fill in `NEXT_PUBLIC_SITE_URL` and your real contact links
|
|
3. Choose `NEXT_PUBLIC_SITE_MODE=coming-soon` or `NEXT_PUBLIC_SITE_MODE=full`
|
|
4. Install dependencies with `npm install`
|
|
5. Run `npm run dev`
|
|
|
|
## Quality checks
|
|
|
|
- `npm run lint`
|
|
- `npm run typecheck`
|
|
- `npm run build`
|
|
- `npm run check`
|
|
|
|
## Docker workflow
|
|
|
|
- `make build`
|
|
- `make start`
|
|
- `make ps`
|
|
- `make logs`
|
|
- `make stop`
|
|
|
|
The container healthcheck uses `/api/health`.
|
|
|
|
## STRATO VPS deployment notes
|
|
|
|
1. Install Docker Engine and Docker Compose plugin on the VPS.
|
|
2. Clone the repository on the server.
|
|
3. Create `.env` from `.env.example` and set a real domain in `NEXT_PUBLIC_SITE_URL`.
|
|
4. Run `make build` once, then `make start`.
|
|
5. Place Nginx or Caddy in front of the container for HTTPS and domain routing.
|
|
6. 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 Compose
|
|
- `NEXT_PUBLIC_SITE_URL`: canonical site URL used by metadata and sitemap
|
|
- `NEXT_PUBLIC_SITE_MODE`: `coming-soon` or `full`
|
|
- `NEXT_PUBLIC_CONTACT_EMAIL`: public email shown on the contact page
|
|
- `NEXT_PUBLIC_LINKEDIN_URL`: LinkedIn profile URL
|
|
- `NEXT_PUBLIC_GITHUB_URL`: GitHub profile URL
|