Personal portfolio with multi-language support (PT/EN).
Live site: gabrielribeiro.work
# Install dependencies
pnpm install
# Development
pnpm dev
# Build for production
pnpm build- Next.js 14 (App Router)
- TypeScript
- Tailwind CSS
- shadcn/ui + Magic UI
- Framer Motion
src/
├── app/[lang]/ # Pages with language support
├── components/ # Reusable components
├── i18n/ # Internationalization system
└── data/ # Static data
- Languages: Portuguese (pt) and English (en)
- URLs:
/ptand/en - Dictionaries:
src/i18n/dictionaries/ - Auto-detection: Browser headers + redirects
src/i18n/
├── index.ts # Main loader
├── config.ts # Configuration
├── locale-detector.ts # Language detection
├── types/ # Type definitions
└── dictionaries/ # Translations (TSX)
├── pt.tsx
└── en.tsx
Each dictionary has two sections:
resume: Personal data (experience, projects, etc.)ui: Interface texts (titles, buttons, etc.)
Portfolio template forked from Magic UI.