A modern portfolio website built with Astro and Svelte, featuring a vintage-inspired design with smooth animations and a focus on performance.
- Astro - Static site generator with SSR support
- Svelte - Component framework
- TailwindCSS - Utility-first CSS framework
- TypeScript - Type safety
- Node.js - Server-side rendering adapter
/
├── public/ # Static assets (favicons, images)
├── src/
│ ├── components/ # Svelte components
│ │ ├── Sections/ # Page sections (AboutMe, Projects, ContactOptions)
│ │ ├── Card.svelte
│ │ ├── ContactForm.svelte
│ │ ├── Navbar.svelte
│ │ ├── Portfolio.svelte
│ │ ├── VintageBackground.svelte
│ │ └── VintageMountains.svelte
│ ├── layouts/ # Astro layouts
│ ├── pages/ # Astro pages (routes)
│ │ ├── index.astro
│ │ ├── contact.astro
│ │ └── api/
│ └── styles/ # Global styles
└── static/ # Static files (icons, etc.)
All commands are run from the root of the project:
| Command | Action |
|---|---|
npm install |
Installs dependencies |
npm run dev |
Starts local dev server at localhost:4321 |
npm run build |
Build your production site to ./dist/ |
npm run preview |
Preview your build locally, before deploying |
npm run lint |
Run ESLint and Prettier checks |
npm run format |
Format code with Prettier |
npm run astro ... |
Run CLI commands like astro add, astro check |
- Vintage Design - Classic, parchment-inspired aesthetic with mountain illustrations
- Smooth Animations - Parallax effects and scroll-based animations
- Responsive Layout - Mobile-first design that works on all devices
- Server-Side Rendering - Fast initial page loads with Astro SSR
- Contact Form - Functional contact form with API endpoint
- Project Showcase - Dynamic project cards with tags and links
The project uses Astro's SSR mode with the Node.js adapter. Components are built with Svelte 5 and styled with TailwindCSS.
Portfolio.svelte- Main portfolio page componentNavbar.svelte- Navigation bar with scroll detectionVintageBackground.svelte- Parchment-style background textureVintageMountains.svelte- Parallax mountain illustrationsAboutMe.svelte- About section with skills and interestsProjects.svelte- Project showcase gridContactOptions.svelte- Contact links and social media
See LICENSE.txt for details.