Context
I wanted a workflow where updates to the portfolio go live without manual uploads or SSH sessions.
Decisions
- Main is the only deploy source
Only changes merged intomainshould go live. - Deploy build output, not source
The server should receive the final, static files, not dev tooling. - Secrets stay in GitHub
SSH keys and connection details are stored in GitHub repository secrets.
Implementation notes
- Run
npm ciandnpm run buildin CI. - Deploy
dist/to the document root using SSH +rsync(or SFTP). - Optional: add a lightweight smoke check (e.g. request
/after deploy).
Lessons learned
Automating the boring parts removes friction and keeps momentum high.
Links
- Repo: (private)