https://github.com/rogeriodocarmo/curriculo
Personal web site to work as a resume and professional portifiolio/show case.
https://github.com/rogeriodocarmo/curriculo
nextjs portfolio reactjs website
Last synced: 8 days ago
JSON representation
Personal web site to work as a resume and professional portifiolio/show case.
- Host: GitHub
- URL: https://github.com/rogeriodocarmo/curriculo
- Owner: RogerioDoCarmo
- License: mit
- Created: 2026-04-01T21:49:32.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-06-29T01:02:18.000Z (12 days ago)
- Last Synced: 2026-06-29T02:06:52.813Z (11 days ago)
- Topics: nextjs, portfolio, reactjs, website
- Language: TypeScript
- Homepage: https://rogeriodocarmo.com
- Size: 71.6 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: docs/SECURITY-CHECKLIST.md
Awesome Lists containing this project
README
# Personal Resume Website
[](https://github.com/RogerioDoCarmo/curriculo/actions/workflows/ci.yml)
[](https://rogeriodocarmo.com)
[](https://sonarcloud.io/summary/new_code?id=RogerioDoCarmo_curriculo)
[](https://sonarcloud.io/summary/new_code?id=RogerioDoCarmo_curriculo)
[](https://sonarcloud.io/summary/new_code?id=RogerioDoCarmo_curriculo)
[](https://sonarcloud.io/summary/new_code?id=RogerioDoCarmo_curriculo)
[](https://sonarcloud.io/summary/new_code?id=RogerioDoCarmo_curriculo)
[](https://nextjs.org/)
[](https://www.typescriptlang.org/)
[](https://reactjs.org/)
[](https://tailwindcss.com/)
[](https://rogeriodocarmo.com)
[](https://vercel.com/docs/speed-insights)
[](https://vercel.com/docs/analytics)
[](https://github.com/RogerioDoCarmo/curriculo/releases)
[](https://github.com/RogerioDoCarmo/curriculo/stargazers)
[](https://github.com/RogerioDoCarmo/curriculo/issues)
[](https://opensource.org/licenses/MIT)
[](https://nodejs.org/)
[](https://github.com/RogerioDoCarmo/curriculo)
[](https://github.com/RogerioDoCarmo/curriculo/commits/main)
[](https://kiro.dev)
[](https://claude.ai/code)
[](https://www.chromatic.com/builds?appId=6a1b4e8a78d533ad545f5bc0)
A modern, responsive personal resume website built with Next.js 16.2.6, TypeScript, and Tailwind CSS. This website serves as both a professional portfolio and a functional resume, optimized for recruiters, AI agents, and human visitors.
[](https://rogeriodocarmo.com)
> **π€ AI-Assisted Development**: This project was created and evolved with [Kiro IDE](https://kiro.dev) and [Claude Code](https://claude.ai/code). Kiro was used for initial project scaffolding, spec-driven feature development, and establishing coding standards. Claude Code took over for ongoing feature development, bug fixes, and refactoring β its project instructions live in [`CLAUDE.md`](./CLAUDE.md).
> e
## π¬ Demo
[](https://rogeriodocarmo.com)
A guided walkthrough of the live site, captured at two viewport sizes. It covers dark mode, the three languages (PT / EN / ES), the project and INCT (master's research) image galleries, the interactive experience timeline, the **Used in this site** techβstack page, the **Storybook published on Chromatic**, and the downloadable rΓ©sumΓ© (PDF).
**Responsive β mobile & desktop, side by side:**
Individual recordings (mobile Β· desktop)
π± Mobile
π₯οΈ Desktop
> If the players don't load, open the files directly: [combined](showcase-media/walkthrough-combined.mp4) Β· [mobile](showcase-media/walkthrough-mobile.mp4) Β· [desktop](showcase-media/walkthrough-desktop.mp4). All showcase media (videos + screenshots) lives in [`showcase-media/`](showcase-media/).
## Development Progress
This project follows an incremental development approach with checkpoints to validate progress:
| Checkpoint | Tag | Status | Description |
| ------------ | --------------------- | ----------- | -------------------------------------------------- |
| Checkpoint 1 | `v0.1.0-checkpoint-1` | β
Complete | Project setup and core infrastructure |
| Checkpoint 2 | `v0.2.0-checkpoint-2` | β
Complete | Content management, i18n, theme system |
| Checkpoint 3 | `v0.3.0-checkpoint-3` | β
Complete | Core UI components, layout, forms |
| Checkpoint 4 | _(validation only)_ | β
Complete | Core functionality validation |
| Checkpoint 5 | `v0.5.0-checkpoint-5` | β
Complete | Firebase integration |
| Checkpoint 6 | `v1.2.0` | β
Complete | SEO, accessibility, print, exit intent, responsive |
| Checkpoint 7 | `v1.2.1` | β
Complete | Tech stack, testing, CI/CD, deployment, SEO |
See [tasks.md](.kiro/specs/personal-resume-website/tasks.md) for detailed implementation plan.
## Features
- **π± Progressive Web App (PWA)**: Install on mobile devices with customized home screen shortcut
- **Multi-Language Support**: Brazilian Portuguese (pt-BR), English (en), Spanish (es)
- **Professional Email**: Custom domain email addresses ( for Portuguese, for English/Spanish)
- **Linktree**: All social links in one place at [linktr.ee/rogeriodocarmo](https://linktr.ee/rogeriodocarmo)
- **Dark/Light Mode**: Automatic theme detection with manual toggle
- **Responsive Design**: Mobile-first approach with tablet and desktop optimizations
- **Career Path Selection**: Toggle between Professional Developer and Academic career paths
- **Portfolio Showcase**: Interactive project gallery with detailed views
- **Contact Form**: Integrated with Formspree for email delivery
- **SEO Optimized**: Structured data, sitemap, and meta tags
- **Accessibility**: WCAG AA compliant with keyboard navigation
- **Performance**: 90+ Lighthouse score with lazy loading
- **Print/PDF Export**: Professional print styling for resume export
- **Analytics**: Firebase Analytics and Vercel Analytics integration
- **Error Monitoring**: Firebase Crashlytics and Sentry integration
- **Push Notifications**: Firebase Cloud Messaging for new content
- **Deployment Notifications**: Automated push notifications on successful deployments (via Firebase Admin SDK in CI/CD)
- **URL Anchor Navigation**: Deep linking to specific sections
- **Tech Stack Explanation**: Simple explanations of technologies used
### π± Progressive Web App (PWA) Features
This website can be installed as a Progressive Web App on mobile devices, providing a native app-like experience:
- **π Home Screen Installation**: Add to home screen with a clean, professional shortcut
- **Shortcut Title**: "RogΓ©rio do Carmo" (optimized for mobile screens)
- **Full Title for Sharing**: "RogΓ©rio do Carmo | Desenvolvedor React Native Mobile" (used in WhatsApp, social media)
- **π² Standalone Mode**: Opens without browser UI, looks like a native app
- **π¨ Custom Theme**: Branded theme color (#2563eb) for Android UI elements
- **β‘ Splash Screen**: Professional splash screen on app launch
- **π Push Notifications**: Receive updates about new content (Firebase Cloud Messaging)
- **π΄ Offline Ready**: Core functionality available without internet connection
**How to Install:**
- **iOS**: Safari β Share β "Add to Home Screen"
- **Android**: Chrome β Menu β "Add to Home screen" or "Install app"
See [PWA-MANIFEST-IMPLEMENTATION.md](./docs/fixes/PWA-MANIFEST-IMPLEMENTATION.md) for technical details.
## Tech Stack
- **Framework**: Next.js 16.2.6 (App Router) with TypeScript
- **Styling**: Tailwind CSS + CSS Modules
- **Content**: Markdown files with Gray-matter parsing
- **Internationalization**: next-intl 4.9.2
- **PWA**: Web App Manifest for mobile installation
- **Testing**: Jest, React Testing Library, Playwright, fast-check, Stryker (mutation testing)
- **Component Documentation**: Storybook 8
- **Analytics**: Firebase Analytics + Vercel Analytics
- **Error Monitoring**: Firebase Crashlytics + Sentry
- **Forms**: Formspree with react-hook-form
- **Push Notifications**: Firebase Cloud Messaging
- **CI/CD**: GitHub Actions + SonarQube Cloud
- **Deployment**: Vercel with custom domains
- **Code Quality**: ESLint, Prettier, TypeScript strict mode
> **Note**: Upgraded from Next.js 14 to 16.2.6 for security fixes and performance improvements.
## Project Structure
```text
personal-resume-website/
βββ app/ # Next.js App Router
β βββ [locale]/ # Internationalized routes
β βββ api/ # API routes
β βββ manifest.ts # PWA Web App Manifest
β βββ sitemap.ts # Dynamic sitemap generation
β βββ robots.ts # Robots.txt generation
βββ components/ # React components
β βββ ui/ # Reusable UI components
β βββ sections/ # Page sections
βββ content/ # Markdown content files
βββ messages/ # i18n translation files
βββ lib/ # Utility functions
βββ hooks/ # Custom React hooks
βββ public/ # Static assets
βββ styles/ # Additional stylesheets
βββ tests/ # Test files
βββ .storybook/ # Storybook configuration
βββ .github/ # GitHub Actions workflows
```
## Architecture & Design Patterns
The codebase follows a set of consistent design patterns and clean code conventions across all layers.
| Pattern | Where |
| ------------------------ | --------------------------------------------------------------------------------- |
| Provider (Context) | `ThemeProvider`, `AnalyticsProvider`, `NextIntlClientProvider` composed in layout |
| Custom Hook | All stateful logic lives in `hooks/` β components are thin shells |
| Strategy (lookup tables) | `Button` variant/size maps replace if/switch chains |
| Error Boundary | `ErrorBoundary` integrates error logging + analytics in `componentDidCatch` |
| Cache-Aside | `feature-flags.ts` β in-memory Map β Remote Config β default value |
| Lazy Loading Registry | `lib/lazy-components.tsx` centralizes all `next/dynamic` imports |
Key conventions enforced across the project:
- **Readonly props** on every interface β no accidental mutation
- **`import type`** for type-only imports throughout
- **No `!` non-null assertions** β type guards only (enforced in CI and CLAUDE.md)
- **Pure helpers extracted** from hooks for direct testability (e.g. `getStoredTheme`, `getInitialTheme`)
- **Named constants** over magic values (`THEME_STORAGE_KEY`, `CACHE_TTL`, `SUPPORTED_LOCALES`)
- **Graceful degradation** β `localStorage` and Firebase calls always have try/catch + defaults
- **SSR guards** β `typeof window === "undefined"` before any browser API
See [ARCHITECTURE.md](./ARCHITECTURE.md) for the full breakdown of patterns, layer responsibilities, and testing architecture.
## Development
### Prerequisites
- Node.js 24+
- npm or yarn
- Git
### Installation
```bash
# Clone the repository
git clone
cd personal-resume-website
# Install dependencies
npm install
# or
yarn install
```
### β οΈ Important: Branch Protection
**The `main` and `develop` branches are protected.**
Always create a feature branch before making changes:
```bash
# Check current branch
git branch --show-current
# Create feature branch (if on main/develop)
git checkout -b feature/your-feature-name
```
See [docs/GIT-WORKFLOW.md](./docs/GIT-WORKFLOW.md) for complete Git workflow guide.
### Development Server
```bash
npm run dev
# or
yarn dev
```
Open [http://localhost:3000](http://localhost:3000) in your browser.
### Build
```bash
npm run build
# or
yarn build
```
### Production
```bash
npm start
# or
yarn start
```
### Testing
```bash
# Run all tests
npm test
# Run unit tests
npm run test:unit
# Run integration tests
npm run test:integration
# Run E2E tests
npm run test:e2e
# Run property-based tests
npm run test:properties
# Run mutation tests (Stryker β measures test quality, scoped to lib/)
npm run test:mutation
# Run Lighthouse performance tests (all-in-one: builds, serves, tests)
npm run test:lighthouse:full
# Run Lighthouse tests manually (requires production build)
npm run build && npm run serve # Terminal 1
npm run test:lighthouse # Terminal 2
```
**Note**: Lighthouse tests must run against the production build (`npm run serve`), not the dev server (`npm run dev`). Use `test:lighthouse:full` for convenience.
See [TESTING.md](./docs/testing/TESTING.md) for comprehensive testing guidelines and best practices.
## Deployment
The website is deployed on Vercel with automatic deployments from the main branch. The site is accessible through **11 custom domains**, all pointing to the same deployment:
- **rogeriodocarmo.com** (primary)
- rogeriodocarmo.io
- rogeriodocarmo.info
- rogeriodocarmo.click
- rogeriodocarmo.shop
- rogeriodocarmo.org
- rogeriodocarmo.net
- rogeriodocarmo.tech
- rogeriodocarmo.com.br
- rogeriodocarmo.online
- rogeriodocarmo.xyz
See [docs/DOMAINS.md](./docs/DOMAINS.md) for complete domain configuration and management guide.
## SEO & Search Engine Submission
The website is fully optimized for search engines and submitted to major search platforms:
### β
Completed Submissions
- **Google Search Console**: β
Verified and sitemap submitted
- Primary domain: `rogeriodocarmo.com`
- Verification method: DNS TXT record
- Sitemap: `https://rogeriodocarmo.com/sitemap.xml` (6 URLs)
- Status: **β
Indexed and accessible** (verified May 5, 2026)
- Monitoring: **β
URL inspection and email notifications configured**
- **Bing Webmaster Tools**: β
Verified and sitemap submitted
- Primary domain: `rogeriodocarmo.com`
- Verification method: Imported from Google Search Console
- Sitemap: `https://rogeriodocarmo.com/sitemap.xml` (6 URLs)
- Status: Active and indexing
- Monitoring: **β
Email alerts and site scan configured**
### π Search Visibility
- β
**Domain indexed**: Site appears in search results for `site:rogeriodocarmo.com`
- β
**Content verified**: All pages rendering correctly with proper SEO elements
- β³ **Rich snippets**: Will populate within 24-72 hours of initial indexing
### π SEO Features
- β
**Sitemap.xml**: Auto-generated with all pages and locales
- β
**Robots.txt**: Configured to allow all search engines
- β
**Structured Data**: Schema.org Person and WebSite schemas
- β
**Meta Tags**: Complete Open Graph and Twitter Card tags
- β
**Semantic HTML**: Proper heading hierarchy and semantic elements
- β
**Mobile-Friendly**: Responsive design optimized for all devices
- β
**Performance**: 90+ Lighthouse score
- β
**Accessibility**: WCAG AA compliant
### π Documentation
- [docs/URL-INSPECTION-MONITORING-GUIDE.md](./docs/URL-INSPECTION-MONITORING-GUIDE.md) - **Complete URL inspection and monitoring setup**
- [docs/URL-INSPECTION-QUICK-CHECKLIST.md](./docs/URL-INSPECTION-QUICK-CHECKLIST.md) - **Quick checklist for monitoring setup**
- [docs/GOOGLE-SEARCH-CONSOLE-SETUP.md](./docs/GOOGLE-SEARCH-CONSOLE-SETUP.md) - Complete GSC setup guide
- [docs/GSC-DNS-VERIFICATION.md](./docs/GSC-DNS-VERIFICATION.md) - DNS TXT record verification guide
- [docs/GSC-HOSTINGER-GUIDE.md](./docs/GSC-HOSTINGER-GUIDE.md) - Hostinger-specific DNS setup
- [docs/SEO-SUBMISSION-GUIDE.md](./docs/SEO-SUBMISSION-GUIDE.md) - General search engine submission guide
### π Domain Strategy
The 10 additional domains (`.io`, `.info`, `.click`, etc.) redirect to the primary `.com` domain for SEO consolidation and brand protection. Only the primary domain is submitted to search engines to avoid duplicate content issues.
## Contact
**Professional Email Addresses:**
- **Portuguese (pt-BR)**: [contato@rogeriodocarmo.com](mailto:contato@rogeriodocarmo.com)
- **English/Spanish (en/es)**: [contact@rogeriodocarmo.com](mailto:contact@rogeriodocarmo.com)
**Social Links:**
- **Linktree**: [linktr.ee/rogeriodocarmo](https://linktr.ee/rogeriodocarmo) β all profiles in one place
These custom domain email addresses highlight the professional nature of this portfolio and are prominently displayed throughout the website.
### Environment Variables
See `.env.example` for required environment variables. Create `.env.local` for local development.
## Code Quality
- **Test Coverage**: Minimum 80% enforced in CI/CD
- **Mutation Testing**: Stryker on `lib/` (50% break threshold), non-blocking signal on pull requests and deploys
- **Code Quality**: SonarQube with 90% quality rating (A) requirement
- **Linting**: ESLint with Next.js recommended rules
- **Formatting**: Prettier with consistent formatting
- **Type Safety**: TypeScript strict mode
See [CONTRIBUTING.md](./docs/development/CONTRIBUTING.md) for code style guidelines and development workflow.
## License
MIT
## Documentation
- [ARCHITECTURE.md](./ARCHITECTURE.md) - Design patterns, layer responsibilities, and testing architecture
- [TESTING.md](./docs/testing/TESTING.md) - Comprehensive testing guide and best practices
- [CONTRIBUTING.md](./docs/development/CONTRIBUTING.md) - Code style guidelines and development workflow
- [PWA-MANIFEST-IMPLEMENTATION.md](./docs/fixes/PWA-MANIFEST-IMPLEMENTATION.md) - **Progressive Web App setup and features** π±
- [docs/BADGES.md](./docs/BADGES.md) - **Explanation of all quality badges** (16 badges)
- [docs/GIT-WORKFLOW.md](./docs/GIT-WORKFLOW.md) - **Git workflow and branch protection guide** β οΈ
- [docs/DOMAINS.md](./docs/DOMAINS.md) - **Domain configuration and management** (11 domains)
- [docs/SEO-SUBMISSION-GUIDE.md](./docs/SEO-SUBMISSION-GUIDE.md) - Search engine submission guide
- [docs/firebase-remote-config-setup.md](./docs/firebase-remote-config-setup.md) - **Firebase Remote Config setup and feature flags** π
- [docs/TOGGLE-FEATURE-FLAG.md](./docs/TOGGLE-FEATURE-FLAG.md) - **Quick reference for toggling feature flags** β‘
- [.kiro/docs/test-patterns.md](./.kiro/docs/test-patterns.md) - Quick reference for test patterns
- [.kiro/docs/mutation-testing.md](./.kiro/docs/mutation-testing.md) - **Mutation testing (Stryker): setup, scope, thresholds, CI** π§¬
- [.kiro/docs/code-quality-fixes.md](./.kiro/docs/code-quality-fixes.md) - Code quality improvements log