Personal portfolio and case study site built with SvelteKit 5, bilingual (pt-BR / en-US), deployed via PM2 on a self-hosted VPS.
https://leomurca.xyz
|
|
||
|---|---|---|
| .agent | ||
| .forgejo/workflows | ||
| src | ||
| static | ||
| .gitignore | ||
| .npmrc | ||
| .prettierignore | ||
| .prettierrc | ||
| CLAUDE.md | ||
| ecosystem.config.cjs | ||
| eslint.config.js | ||
| jsconfig.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| svelte.config.js | ||
| vite.config.js | ||
leomurca.xyz
Personal portfolio and case study site built with SvelteKit 5, bilingual (pt-BR / en-US), deployed via PM2 on a self-hosted VPS.
Live: leomurca.xyz
Status
Actively maintained. Currently in production.
Development
npm install
npm run dev
Create a .env file at the root:
PUBLIC_IMAGE_BASE_URL=https://images.leomurca.xyz
Scripts
| Command | Description |
|---|---|
npm run dev |
Vite dev server (port 7283) |
npm run build |
Production build → build/ |
npm run preview |
Preview the production build |
npm run check |
Svelte + TypeScript type check |
npm run lint |
Prettier + ESLint check |
npm run format |
Auto-format with Prettier |
Stack
- SvelteKit — Svelte 5 runes mode, Node.js adapter
- sveltekit-i18n — bilingual (pt-BR / en-US)
- Cloudinary — image CDN
- PM2 — process manager on a self-hosted VPS
- Forgejo Actions — CI/CD, deploys on push to
master