Personal portfolio built with vanilla HTML/CSS/JS and bundled with Vite.
npm install
npm run dev # start the dev server
npm run build # production build to dist/
npm run preview # preview the production build| Script | What it does |
|---|---|
npm run images |
Generate optimized .webp from images in public/ |
npm run og |
Regenerate the social share card public/og-image.png |
Adding a project? See docs/adding-a-project.md.
Pushing to main triggers .github/workflows/vitedeploy.yml, which builds and
deploys to GitHub Pages. The site is served under the /portfolio base path
(configured in vite.config.js).
The contact form posts to Formspree. Create a free form
and paste its endpoint into the action of .contact__form in index.html
(replace YOUR_FORM_ID). Until then, submissions show a "not configured" notice
and the direct-email link still works.
A commented Plausible snippet sits in index.html's
<head>. Set data-domain to your domain and uncomment it to enable
privacy-friendly, cookie-free analytics.
To move off the username.github.io/portfolio path to your own domain:
- Add a
public/CNAMEfile containing just your domain (e.g.sashmitha.dev). Apublic/CNAME.exampleis included as a starting point. - Change
baseinvite.config.jsfrom'/portfolio'to'/'. - Update the
canonical,og:url,og:image,twitter:imageand JSON-LD URLs inindex.htmlto the new domain. - Point your domain's DNS at GitHub Pages and set the custom domain in the repository's Settings → Pages.