A personal portfolio site built with Vue 3 + Vuetify, pre-rendered as a static site via vite-ssg and deployed to GitHub Pages.
Live site: https://aecomet.github.io/
- Vue 3 (Composition API /
<script setup>) - Vuetify 4 — UI components + dark theme
- Vue Router 5 — client-side routing with lazy loading
- TypeScript — strict type checking
- Vite 8 + vite-ssg — static site generation
- SCSS — global styles via CSS custom properties
- pnpm — package manager
- Node.js
24.14.0(see.node-version) - pnpm
10
npm i -g pnpmpnpm install
pnpm dev
# => http://localhost:8888/pnpm build
# Output: ./build/# Run the pre-built image
docker run -p 8888:80 --rm ghcr.io/aecomet/portfolio
# => http://localhost:8888/src/
├── app.ts # Entry point
├── App.vue # Root layout
├── components/ # AppHeader, StarfieldCanvas, CursorGlow
├── pages/ # HomePage, UserProfile, UserCareer, UserContact, NotFoundPage
├── plugins/ # router.ts, vuetify.ts
├── types/ # TypeScript type definitions
└── assets/ # Global styles, images
For full architecture details, see docs/architecture.md.
| Trigger | Workflow | Description |
|---|---|---|
push to main |
app-release.yml |
Build → Deploy to GitHub Pages → Push Docker image |
| Pull Request | lint-runner.yml |
ESLint + Prettier via reviewdog |