A small, fast, and friendly personal site built with Svelte and Vite. It highlights my journey on a scrollable experience timeline and showcases a few side projects. Routing is hash-based and minimal by design, the UI stays lightweight, and deploys go out via GitHub Pages.
- Experience view
- Projects gallery with cards, screenshots, and links
- Simple hash routing between
#/experiencesand#/projects - Clean toolbar with links to LinkedIn and GitHub
- Lightweight build with Vite and vanilla CSS
- Svelte 5 for components
- Vite for dev server and bundling
- GSAP for small animations
- GitHub Pages for hosting (via
gh-pages)
Prereqs: Node 18+ and npm.
npm install
npm run devThen visit http://localhost:5173.
npm run dev— Start the Vite dev servernpm run build— Create a production build indist/npm run preview— Preview the production build locallynpm run deploy— Build and publishdist/to thegh-pagesbranch
my-portfolio/
├─ index.html
├─ src/
│ ├─ main.js
│ ├─ App.svelte
│ ├─ app.css
│ └─ components/
│ ├─ Timeline.svelte
│ ├─ TimelineItem.svelte
│ ├─ Projects.svelte
│ └─ ProjectCard.svelte
├─ vite.config.js
├─ svelte.config.js
├─ package.json
└─ README.md
This app uses a tiny hash-based approach. The toolbar buttons set window.location.hash and the app renders either the Experience or the Projects view.
Routes:
#/experiences#/projects
This is a user site: https://danrose499.github.io/
Recommended setup:
- Enable Pages: Settings → Pages.
- Source: GitHub Actions (build from
main). - Use the official "Deploy to GitHub Pages" workflow for static sites (Vite). It will build from source and publish automatically on push to
main.
Alternative (using the existing script):
-
If you prefer branch deploys, configure Pages to "Deploy from a branch" and select the branch you publish to.
-
Run:
npm run deploy
This builds the site and pushes
dist/to the configured branch (currentlygh-pages).
Notes:
- Keep
base: '/'invite.config.js(already set for a user site). - Ensure the Pages source matches how you deploy (Actions from
main, or branch deploy fromgh-pages).
- Images live under
src/assets/and are imported directly into components. - Styles are kept simple and local to components; no global CSS frameworks.
- Accessibility basics: semantic headings, focus states,
aria-labels for icons.
- LinkedIn: https://www.linkedin.com/in/rosenthal-d/
- GitHub: https://github.com/danrose499