Source for souravas.com. Vanilla HTML / CSS / JS built with Vite — no framework. GitHub Actions builds and deploys to GitHub Pages on every push to main.
npm install
npm run dev # dev server on http://localhost:5173
npm run build # production build → dist/
npm run preview # preview the production buildPushes to main are built and deployed automatically via .github/workflows/deploy.yml using actions/deploy-pages. Pull requests run the build only. To trigger a deploy manually, use Run workflow on the Actions tab. .github/workflows/rebuild.yml redeploys on the 1st of each month, so the values filled in at build time (years of experience, the security.txt expiry) stay current without a push.
- Local dev: http://localhost:5173
- Production: https://souravas.com
- Page versions:
/serves v1 by default;/v1,/v2,/v3, and/v4open each design explicitly, and each names/as its canonical - Start page:
/start— personal bookmarks dashboard (noindex); serves start v2 by default,/start/v1and/start/v2open each design - Resume redirects:
/cv,/resume→/assets/resume.pdf - Sitemap:
/sitemap.xml, generated at build time - Security contact:
/.well-known/security.txt, generated at build time
souravas.github.io/
├── v1/ # "Editorial" design, the default (also served at /)
│ ├── index.html
│ ├── main.js
│ └── style.css
├── v2/ # "Systems Ledger" design, served at /v2
│ ├── index.html
│ ├── main.js
│ ├── style.css
│ └── fonts/
├── v3/ # "Control Room" design, served at /v3
│ ├── index.html
│ ├── main.js
│ ├── style.css
│ └── fonts/
├── v4/ # "Plain" design, served at /v4
│ ├── index.html
│ ├── main.js
│ ├── style.css # includes a print stylesheet that prints the page as a CV
│ └── fonts/
├── start/ # personal start page
│ ├── v1/ # Homepage rebuild, served at /start/v1
│ │ ├── index.html # bookmarks + inline SVG icon sprite
│ │ ├── main.js # type-anywhere quick launch
│ │ ├── style.css
│ │ ├── serenity.webp # pre-blurred backdrop
│ │ └── fonts/
│ └── v2/ # pure-black design (default, also served at /start)
│ ├── index.html
│ ├── main.js
│ └── style.css
├── public/ # copied verbatim into the build
│ ├── CNAME # custom domain
│ ├── 404.html # static 404 served by GitHub Pages
│ ├── favicon.svg # shared icon; favicon.ico and favicon-*.png are renders of it
│ ├── icon-maskable.svg # full-bleed icon; apple-touch-icon.png is rendered from it
│ ├── icon-192x192.png, icon-512x512.png # manifest icons
│ ├── manifest.webmanifest
│ ├── robots.txt
│ ├── cv.html, resume.html # meta-refresh → /assets/resume.pdf
│ ├── start-sw.js # /start service worker (offline, instant open)
│ ├── fonts/ # shared by v1, start v2, and 404.html
│ └── assets/ # images, social cards (og-cover, og-cover-v4), resume.pdf
├── vite.config.js # multi-page build, default-page copies, CSS inlining,
│ # CSP hashing, HTML minify, build-time values
│ # (years, sitemap, security.txt), dev routes
└── .github/
├── dependabot.yml # weekly npm and Actions updates
└── workflows/
├── deploy.yml # build, and deploy on push to main
└── rebuild.yml # monthly redeploy for the build-time values
The icons are shared by every page and linked with a ?v= query. When they change, bump it on every page, 404.html included, or browsers keep showing the cached ones.
- Live site: https://souravas.com
- Repository: https://github.com/souravas/souravas.github.io