β¨ Personal, modular, and blazing-fast portfolio. Built as an ultra-modern Turborepo monorepo with React Router v7, Vite 5, Tailwind CSS 4, shadcn/ui, and strict TypeScript. Deploys anywhere (GH Pages, Docker, Nginx) with SEO, analytics, and strong typed content.
Live: zaujulio.github.io
This project uses Turborepo and Bun to manage everything:
.
βββ apps/
β βββ web/ # π¨ Main portfolio SPA (React Router, Vite, SEO, SSG)
β βββ content/ # π¦ Structured JSON or markdown content
β β βββ projects/ # - Typed projects (JSON, .d.ts)
β β βββ skills/ # - Skill clusters, levels
β β βββ profile/ # - Bio, socials, experience
β β βββ education/# - Education history
β β βββ articles/ # - Tech articles (markdown)
β β βββ recipes/ # - Cooking posts (markdown)
β β βββ hobbies/ # - Hobbies data (JSON)
β β βββ languages/# - Language fluency
β βββ src/
β βββ pages/ # - Route-level React pages
β βββ app/ # - App shell, layout, meta, SEO, analytics
β βββ ...
β
βββ packages/
β βββ configs/ # π οΈ Shared tsconfig, Tailwind, Biome configs
β βββ ui/ # ποΈ Custom UI library (shadcn/ui components)
β βββ shared/ # π¦ Shared utilities (markdown, components)
β
βββ Dockerfile # π³ Nginx-static multi-stage build, tiny production image
βββ nginx.conf # π Security, cache, SPA fallback, robots, gzip
βββ .github/workflows/ # π€ CI/CD for deploy/tests (GitHub Pages/Actions)
...
Key points:
/apps/web/content/, strictly typed by TypeScript (.d.ts)apps/web/ subapp: everything SSG-ready/apps/web/build/client β deploys cleanly to any static host| Layer | Technology |
|---|---|
| Framework | React Router v7 |
| Build | Vite 5 |
| Styling | Tailwind CSS v4 |
| Components | shadcn/ui |
| Monorepo | Turborepo |
| Package Mgmt | Bun 1.3.5 |
| Linting | Biome |
| Language | TypeScript 5 |
| Static Host | GitHub Pages / Docker + Nginx |
| Analytics | Umami (optional) |
bun install # Install all dependencies
bun run dev # Start dev server (http://localhost:5173)
bun run build # Outputs to apps/web/build/client/
cd apps/web && bun run preview
docker build -t portfolio .
docker run -p 8080:80 portfolio # Site at http://localhost:8080
Or using Compose (edits available):
docker compose up --build
apps/web/content/ as JSON (type-safe).apps/web/content/articles/, apps/web/content/recipes/apps/web/src/app/root.css & Tailwind config.apps/web/public/ and component meta tags.The site supports English (default) and Portuguese (pt-BR).
Translation files are located in apps/web/src/i18n/locales/:
en.json - English (default)pt-BR.json - Portuguese (Brazil)To add a new translation key:
en.json and pt-BR.jsonimport { useTranslation } from 'react-i18next';
function MyComponent() {
const { t } = useTranslation();
return <h1>{t('myKey')}</h1>;
}
Translation keys follow a nested structure (e.g., nav.about, photography.title).
.env)| Package | Name | Purpose |
|---|---|---|
| packages/configs | @repo/configs | Shared tsconfig, Biome, Tailwind configs |
| packages/ui | @repo/ui | Custom UI library (shadcn/ui-powered, extends, themeables) |
| packages/shared | @repo/shared | Markdown parser, MarkdownRenderer component, generic utilities |
| Command | Description | |ββββββ-|βββββββββ-| | bun run dev | Start dev mode (all apps) | | bun run build | Build all apps | | bun run check | Lint + format (Biome) |
main triggers auto-build via Actions (see .github/workflows/deploy.yml)index.html copied to 404.html automatically)nginx:alpine image with gzip, cache, SEO headersMIT
β Like what you see? Star this repo! or fork your own!
Made with β€οΈ by Zau Julio β open source, type-safe, portable.