ZaΓΊ JΓΊlio

πŸš€ Zau Julio | Portfolio

GitHub Pages Build License: MIT Bun Vite React TypeScript Docker


✨ 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


πŸ—οΈ Monorepo Structure

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:


πŸ› οΈ Tech Stack

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)

πŸš€ Getting Started

Prerequisites

Install & Run

bun install        # Install all dependencies
bun run dev        # Start dev server (http://localhost:5173)

Build for Production

bun run build      # Outputs to apps/web/build/client/

Preview Production Build

cd apps/web && bun run preview

Docker (Self-Hosted/Nginx)

docker build -t portfolio .
docker run -p 8080:80 portfolio   # Site at http://localhost:8080

Or using Compose (edits available):

docker compose up --build

πŸ“¦ Content & Customization


🌍 Internationalization (i18n)

The site supports English (default) and Portuguese (pt-BR).

Language Switcher

Adding New Translations

Translation files are located in apps/web/src/i18n/locales/:

To add a new translation key:

  1. Add the key to both en.json and pt-BR.json
  2. Use the translation in any component:
import { 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).


πŸ”Ž SEO & Analytics


πŸ“¦ Packages

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

πŸ“œ Scripts

| Command | Description | |β€”β€”β€”β€”β€”β€”-|β€”β€”β€”β€”β€”β€”β€”β€”β€”-| | bun run dev | Start dev mode (all apps) | | bun run build | Build all apps | | bun run check | Lint + format (Biome) |


πŸ“’ Deployment

☁️ GitHub Pages

🐳 Docker/Nginx


πŸ“„ License

MIT


⭐ Like what you see? Star this repo! or fork your own!


Made with ❀️ by Zau Julio β€” open source, type-safe, portable.