Minimalist, multilingual portfolio template built with React + TypeScript + Vite.
- React 19
- TypeScript
- Vite
- Framer Motion
- Tailwind (CDN in
index.html)
- Node.js 20+
- npm (or Bun)
npm installnpm run devnpm run buildnpm run previewMain customization file:
src/config/constants.ts
Edit this file to update all content in PT/EN/ES:
- Hero data (
name,role,location,email, etc.) - About paragraphs
- Projects
- Experience
- Skills
- Education
- Footer
UI structure:
src/components/layout/Header.tsxsrc/components/sections/Projects.tsxsrc/components/sections/Experience.tsxsrc/components/sections/TechnicalStack.tsxsrc/components/sections/Education.tsxsrc/components/layout/Footer.tsx
Update social URLs in:
src/components/layout/Header.tsx
Current links are placeholders:
https://linkedin.com/in/your-profilehttps://github.com/your-usernamehttps://x.com/your-handle
Edit:
index.htmlfor<title>, description, author and theme color.public/favicon.svgfor your favicon.metadata.jsonfor app metadata.
This template intentionally ships without personal image assets and without Open Graph image tags.
src/
app/
App.tsx
components/
layout/
sections/
ui/
config/
constants.ts
theme.tsx
i18n/
index.tsx
types/
index.ts
You can deploy the dist/ output to any static host:
- Vercel
- Netlify
- Cloudflare Pages
- GitHub Pages
- Replace all placeholder content in
src/config/constants.ts - Replace social URLs in
src/components/layout/Header.tsx - Update metadata in
index.htmlandmetadata.json - Run
npm run buildand confirm no errors