This repository contains the React landing page for singha.io plus a single Docker image that builds the Vite site and serves it with nginx.
index.html: Vite HTML entrypoint and metadatasrc/main.jsx: React homepagepublic/stylesheet.css: Main stylesheetpublic/images/: Hero and work imagespublic/scripts/: Notebook artifacts referenced by the siteDockerfile: nginx container for the landing pagecompose.yml: local/server Compose entrypoint for the landing containernginx.conf: static nginx config with custom 404 supportpublic/favicon.ico: Site faviconpublic/CNAME: Custom domain mapping (singha.io)
Fast local preview:
npm install
npm run devOpen the local URL printed by Vite, usually http://localhost:5173.
Build locally:
npm run buildBuild and run the production container locally:
docker compose up --buildOpen http://localhost:8080.
Detached mode:
docker compose up --build -d
docker compose logs -f
docker compose downOn every push to main, GitHub Actions publishes:
ghcr.io/rgs2151/landing:main
ghcr.io/rgs2151/landing:latest
ghcr.io/rgs2151/landing:sha-<commit>
A server/infrastructure repository should pull the image instead of copying this source code:
services:
landing:
image: ghcr.io/rgs2151/landing:main
restart: unless-stopped
expose:
- "80"Route singha.io to container port 80. Docker Hub is optional; GHCR is the default because the code and Actions pipeline already live on GitHub.
Custom domain is configured via CNAME:
singha.io