Dandy Portfolio
My role — Solo full-stack developer
The portfolio you're looking at right now isn't a static site — it's a full-stack application: multilingual, with lead capture, PDF generation, and database integration.
The problem
I needed a portfolio that would also work as technical proof on its own — not just list projects, but actually demonstrate architecture, i18n, backend integration, and deployment in practice.
The solution
Next.js 16 with the App Router and React 19, strict TypeScript, internationalization with next-intl (Portuguese, Spanish, and English), Supabase as the backend for the quote-request forms, and on-demand PDF generation with @react-pdf/renderer.
My responsibilities
I designed and built the entire site solo: architecture, design system, both lead-capture wizards, PDF generation, the translation system, and deployment on Vercel with a custom domain.
Architecture
Next.js App Router with its own API routes; forms use React Hook Form + Zod, with the same schema validated on both client and server; the API routes write to Supabase, generate a PDF of the brief, and trigger emails via Resend.
Key features
- Multilingual site (PT/ES/EN) with next-intl, including per-locale routes and metadata
- Two multi-step lead-capture wizards, with shared client/server validation via Zod
- On-demand PDF generation from every submitted brief
- Token-based, private project status page — no login required
- Custom domain with continuous deployment on Vercel
Engineering decisions
- Zod as the single source of validation, shared between the form (client) and the API route (server), so they can never drift out of sync
- A simple honeypot field on the forms to filter bots without needing a captcha
- Supabase's service role key confined strictly to the server, never exposed to the browser
Challenges
Still writing up the real technical challenges from this project.
What I learned
Still writing up the specific takeaways from this project.