{"id":48837643,"url":"https://github.com/rogeriodocarmo/curriculo","last_synced_at":"2026-07-03T01:01:05.254Z","repository":{"id":348799273,"uuid":"1198903338","full_name":"RogerioDoCarmo/curriculo","owner":"RogerioDoCarmo","description":"Personal web site to work as a resume and professional portifiolio/show case.","archived":false,"fork":false,"pushed_at":"2026-06-29T01:02:18.000Z","size":75106,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-29T02:06:52.813Z","etag":null,"topics":["nextjs","portfolio","reactjs","website"],"latest_commit_sha":null,"homepage":"https://rogeriodocarmo.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RogerioDoCarmo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY-CHECKLIST.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-01T21:49:32.000Z","updated_at":"2026-06-29T01:02:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"1a4d5585-694f-4ab9-8aa7-ff60ca99c897","html_url":"https://github.com/RogerioDoCarmo/curriculo","commit_stats":null,"previous_names":["rogeriodocarmo/curriculo"],"tags_count":56,"template":false,"template_full_name":null,"purl":"pkg:github/RogerioDoCarmo/curriculo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RogerioDoCarmo%2Fcurriculo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RogerioDoCarmo%2Fcurriculo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RogerioDoCarmo%2Fcurriculo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RogerioDoCarmo%2Fcurriculo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RogerioDoCarmo","download_url":"https://codeload.github.com/RogerioDoCarmo/curriculo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RogerioDoCarmo%2Fcurriculo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35068135,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nextjs","portfolio","reactjs","website"],"created_at":"2026-04-15T00:05:11.693Z","updated_at":"2026-07-03T01:01:05.237Z","avatar_url":"https://github.com/RogerioDoCarmo.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Personal Resume Website\n\n\u003c!-- Build \u0026 Deployment Status --\u003e\n\n[![CI](https://github.com/RogerioDoCarmo/curriculo/actions/workflows/ci.yml/badge.svg)](https://github.com/RogerioDoCarmo/curriculo/actions/workflows/ci.yml)\n[![Vercel](https://deploy-badge.vercel.app/?url=https://rogeriodocarmo.com\u0026name=Vercel)](https://rogeriodocarmo.com)\n\n\u003c!-- Code Quality --\u003e\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=RogerioDoCarmo_curriculo\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=RogerioDoCarmo_curriculo)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=RogerioDoCarmo_curriculo\u0026metric=coverage)](https://sonarcloud.io/summary/new_code?id=RogerioDoCarmo_curriculo)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=RogerioDoCarmo_curriculo\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=RogerioDoCarmo_curriculo)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=RogerioDoCarmo_curriculo\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=RogerioDoCarmo_curriculo)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=RogerioDoCarmo_curriculo\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=RogerioDoCarmo_curriculo)\n\n\u003c!-- Tech Stack --\u003e\n\n[![Next.js](https://img.shields.io/badge/Next.js-16.2.6-black?logo=next.js)](https://nextjs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-6.x-blue?logo=typescript)](https://www.typescriptlang.org/)\n[![React](https://img.shields.io/badge/React-19-61dafb?logo=react)](https://reactjs.org/)\n[![Tailwind CSS](https://img.shields.io/badge/Tailwind-4.x-38bdf8?logo=tailwind-css)](https://tailwindcss.com/)\n[![PWA](https://img.shields.io/badge/PWA-Enabled-5A0FC8?logo=pwa\u0026logoColor=white)](https://rogeriodocarmo.com)\n[![Vercel Speed Insights](https://img.shields.io/badge/Vercel-Speed_Insights-000000?logo=vercel\u0026logoColor=white)](https://vercel.com/docs/speed-insights)\n[![Vercel Analytics](https://img.shields.io/badge/Vercel-Web_Analytics-000000?logo=vercel\u0026logoColor=white)](https://vercel.com/docs/analytics)\n\n\u003c!-- Project Info --\u003e\n\n[![GitHub Release](https://img.shields.io/github/v/release/RogerioDoCarmo/curriculo)](https://github.com/RogerioDoCarmo/curriculo/releases)\n[![GitHub Stars](https://img.shields.io/github/stars/RogerioDoCarmo/curriculo?cacheSeconds=3600)](https://github.com/RogerioDoCarmo/curriculo/stargazers)\n[![Open Issues](https://img.shields.io/github/issues/RogerioDoCarmo/curriculo)](https://github.com/RogerioDoCarmo/curriculo/issues)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Node.js](https://img.shields.io/badge/Node.js-%3E%3D24.0.0-green?logo=node.js)](https://nodejs.org/)\n[![Code Size](https://img.shields.io/github/languages/code-size/RogerioDoCarmo/curriculo)](https://github.com/RogerioDoCarmo/curriculo)\n[![Last Commit](https://img.shields.io/github/last-commit/RogerioDoCarmo/curriculo)](https://github.com/RogerioDoCarmo/curriculo/commits/main)\n\n\u003c!-- AI Development Tools --\u003e\n\n[![Built with Kiro](https://img.shields.io/badge/Built_with-Kiro_IDE-7C3AED?logo=amazon-aws\u0026logoColor=white)](https://kiro.dev)\n[![Built with Claude Code](https://img.shields.io/badge/Built_with-Claude_Code-D97706?logo=anthropic\u0026logoColor=white)](https://claude.ai/code)\n[![Chromatic](https://img.shields.io/badge/storybook-chromatic-FC521F?logo=storybook\u0026logoColor=white)](https://www.chromatic.com/builds?appId=6a1b4e8a78d533ad545f5bc0)\n\nA 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.\n\n[![Personal Resume Website — hero section preview](public/images/projects/resume.png)](https://rogeriodocarmo.com)\n\n\u003e **🤖 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).\n\u003e e\n\n## 🎬 Demo\n\n[![Walkthrough demo — rogeriodocarmo.com](showcase-media/walkthrough-video-image-thumbnail.png)](https://rogeriodocarmo.com)\n\nA 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).\n\n**Responsive — mobile \u0026 desktop, side by side:**\n\n\u003cvideo src=\"https://github.com/RogerioDoCarmo/curriculo/raw/main/showcase-media/walkthrough-combined.mp4\" controls muted width=\"100%\"\u003e\u003c/video\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eIndividual recordings (mobile · desktop)\u003c/summary\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cb\u003e📱 Mobile\u003c/b\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cb\u003e🖥️ Desktop\u003c/b\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\"\u003e\n      \u003cvideo src=\"https://github.com/RogerioDoCarmo/curriculo/raw/main/showcase-media/walkthrough-mobile.mp4\" controls muted width=\"100%\"\u003e\u003c/video\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\"\u003e\n      \u003cvideo src=\"https://github.com/RogerioDoCarmo/curriculo/raw/main/showcase-media/walkthrough-desktop.mp4\" controls muted width=\"100%\"\u003e\u003c/video\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/details\u003e\n\n\u003e 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/).\n\n## Development Progress\n\nThis project follows an incremental development approach with checkpoints to validate progress:\n\n| Checkpoint   | Tag                   | Status      | Description                                        |\n| ------------ | --------------------- | ----------- | -------------------------------------------------- |\n| Checkpoint 1 | `v0.1.0-checkpoint-1` | ✅ Complete | Project setup and core infrastructure              |\n| Checkpoint 2 | `v0.2.0-checkpoint-2` | ✅ Complete | Content management, i18n, theme system             |\n| Checkpoint 3 | `v0.3.0-checkpoint-3` | ✅ Complete | Core UI components, layout, forms                  |\n| Checkpoint 4 | _(validation only)_   | ✅ Complete | Core functionality validation                      |\n| Checkpoint 5 | `v0.5.0-checkpoint-5` | ✅ Complete | Firebase integration                               |\n| Checkpoint 6 | `v1.2.0`              | ✅ Complete | SEO, accessibility, print, exit intent, responsive |\n| Checkpoint 7 | `v1.2.1`              | ✅ Complete | Tech stack, testing, CI/CD, deployment, SEO        |\n\nSee [tasks.md](.kiro/specs/personal-resume-website/tasks.md) for detailed implementation plan.\n\n## Features\n\n- **📱 Progressive Web App (PWA)**: Install on mobile devices with customized home screen shortcut\n- **Multi-Language Support**: Brazilian Portuguese (pt-BR), English (en), Spanish (es)\n- **Professional Email**: Custom domain email addresses (\u003ccontato@rogeriodocarmo.com\u003e for Portuguese, \u003ccontact@rogeriodocarmo.com\u003e for English/Spanish)\n- **Linktree**: All social links in one place at [linktr.ee/rogeriodocarmo](https://linktr.ee/rogeriodocarmo)\n- **Dark/Light Mode**: Automatic theme detection with manual toggle\n- **Responsive Design**: Mobile-first approach with tablet and desktop optimizations\n- **Career Path Selection**: Toggle between Professional Developer and Academic career paths\n- **Portfolio Showcase**: Interactive project gallery with detailed views\n- **Contact Form**: Integrated with Formspree for email delivery\n- **SEO Optimized**: Structured data, sitemap, and meta tags\n- **Accessibility**: WCAG AA compliant with keyboard navigation\n- **Performance**: 90+ Lighthouse score with lazy loading\n- **Print/PDF Export**: Professional print styling for resume export\n- **Analytics**: Firebase Analytics and Vercel Analytics integration\n- **Error Monitoring**: Firebase Crashlytics and Sentry integration\n- **Push Notifications**: Firebase Cloud Messaging for new content\n- **Deployment Notifications**: Automated push notifications on successful deployments (via Firebase Admin SDK in CI/CD)\n- **URL Anchor Navigation**: Deep linking to specific sections\n- **Tech Stack Explanation**: Simple explanations of technologies used\n\n### 📱 Progressive Web App (PWA) Features\n\nThis website can be installed as a Progressive Web App on mobile devices, providing a native app-like experience:\n\n- **🏠 Home Screen Installation**: Add to home screen with a clean, professional shortcut\n  - **Shortcut Title**: \"Rogério do Carmo\" (optimized for mobile screens)\n  - **Full Title for Sharing**: \"Rogério do Carmo | Desenvolvedor React Native Mobile\" (used in WhatsApp, social media)\n- **📲 Standalone Mode**: Opens without browser UI, looks like a native app\n- **🎨 Custom Theme**: Branded theme color (#2563eb) for Android UI elements\n- **⚡ Splash Screen**: Professional splash screen on app launch\n- **🔔 Push Notifications**: Receive updates about new content (Firebase Cloud Messaging)\n- **📴 Offline Ready**: Core functionality available without internet connection\n\n**How to Install:**\n\n- **iOS**: Safari → Share → \"Add to Home Screen\"\n- **Android**: Chrome → Menu → \"Add to Home screen\" or \"Install app\"\n\nSee [PWA-MANIFEST-IMPLEMENTATION.md](./docs/fixes/PWA-MANIFEST-IMPLEMENTATION.md) for technical details.\n\n## Tech Stack\n\n- **Framework**: Next.js 16.2.6 (App Router) with TypeScript\n- **Styling**: Tailwind CSS + CSS Modules\n- **Content**: Markdown files with Gray-matter parsing\n- **Internationalization**: next-intl 4.9.2\n- **PWA**: Web App Manifest for mobile installation\n- **Testing**: Jest, React Testing Library, Playwright, fast-check, Stryker (mutation testing)\n- **Component Documentation**: Storybook 8\n- **Analytics**: Firebase Analytics + Vercel Analytics\n- **Error Monitoring**: Firebase Crashlytics + Sentry\n- **Forms**: Formspree with react-hook-form\n- **Push Notifications**: Firebase Cloud Messaging\n- **CI/CD**: GitHub Actions + SonarQube Cloud\n- **Deployment**: Vercel with custom domains\n- **Code Quality**: ESLint, Prettier, TypeScript strict mode\n\n\u003e **Note**: Upgraded from Next.js 14 to 16.2.6 for security fixes and performance improvements.\n\n## Project Structure\n\n```text\npersonal-resume-website/\n├── app/                          # Next.js App Router\n│   ├── [locale]/                 # Internationalized routes\n│   ├── api/                      # API routes\n│   ├── manifest.ts               # PWA Web App Manifest\n│   ├── sitemap.ts                # Dynamic sitemap generation\n│   └── robots.ts                 # Robots.txt generation\n├── components/                   # React components\n│   ├── ui/                       # Reusable UI components\n│   └── sections/                 # Page sections\n├── content/                      # Markdown content files\n├── messages/                     # i18n translation files\n├── lib/                          # Utility functions\n├── hooks/                        # Custom React hooks\n├── public/                       # Static assets\n├── styles/                       # Additional stylesheets\n├── tests/                        # Test files\n├── .storybook/                   # Storybook configuration\n└── .github/                      # GitHub Actions workflows\n```\n\n## Architecture \u0026 Design Patterns\n\nThe codebase follows a set of consistent design patterns and clean code conventions across all layers.\n\n| Pattern                  | Where                                                                             |\n| ------------------------ | --------------------------------------------------------------------------------- |\n| Provider (Context)       | `ThemeProvider`, `AnalyticsProvider`, `NextIntlClientProvider` composed in layout |\n| Custom Hook              | All stateful logic lives in `hooks/` — components are thin shells                 |\n| Strategy (lookup tables) | `Button` variant/size maps replace if/switch chains                               |\n| Error Boundary           | `ErrorBoundary` integrates error logging + analytics in `componentDidCatch`       |\n| Cache-Aside              | `feature-flags.ts` — in-memory Map → Remote Config → default value                |\n| Lazy Loading Registry    | `lib/lazy-components.tsx` centralizes all `next/dynamic` imports                  |\n\nKey conventions enforced across the project:\n\n- **Readonly props** on every interface — no accidental mutation\n- **`import type`** for type-only imports throughout\n- **No `!` non-null assertions** — type guards only (enforced in CI and CLAUDE.md)\n- **Pure helpers extracted** from hooks for direct testability (e.g. `getStoredTheme`, `getInitialTheme`)\n- **Named constants** over magic values (`THEME_STORAGE_KEY`, `CACHE_TTL`, `SUPPORTED_LOCALES`)\n- **Graceful degradation** — `localStorage` and Firebase calls always have try/catch + defaults\n- **SSR guards** — `typeof window === \"undefined\"` before any browser API\n\nSee [ARCHITECTURE.md](./ARCHITECTURE.md) for the full breakdown of patterns, layer responsibilities, and testing architecture.\n\n## Development\n\n### Prerequisites\n\n- Node.js 24+\n- npm or yarn\n- Git\n\n### Installation\n\n```bash\n# Clone the repository\ngit clone \u003crepository-url\u003e\ncd personal-resume-website\n\n# Install dependencies\nnpm install\n# or\nyarn install\n```\n\n### ⚠️ Important: Branch Protection\n\n**The `main` and `develop` branches are protected.**\n\nAlways create a feature branch before making changes:\n\n```bash\n# Check current branch\ngit branch --show-current\n\n# Create feature branch (if on main/develop)\ngit checkout -b feature/your-feature-name\n```\n\nSee [docs/GIT-WORKFLOW.md](./docs/GIT-WORKFLOW.md) for complete Git workflow guide.\n\n### Development Server\n\n```bash\nnpm run dev\n# or\nyarn dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) in your browser.\n\n### Build\n\n```bash\nnpm run build\n# or\nyarn build\n```\n\n### Production\n\n```bash\nnpm start\n# or\nyarn start\n```\n\n### Testing\n\n```bash\n# Run all tests\nnpm test\n\n# Run unit tests\nnpm run test:unit\n\n# Run integration tests\nnpm run test:integration\n\n# Run E2E tests\nnpm run test:e2e\n\n# Run property-based tests\nnpm run test:properties\n\n# Run mutation tests (Stryker — measures test quality, scoped to lib/)\nnpm run test:mutation\n\n# Run Lighthouse performance tests (all-in-one: builds, serves, tests)\nnpm run test:lighthouse:full\n\n# Run Lighthouse tests manually (requires production build)\nnpm run build \u0026\u0026 npm run serve  # Terminal 1\nnpm run test:lighthouse         # Terminal 2\n```\n\n**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.\n\nSee [TESTING.md](./docs/testing/TESTING.md) for comprehensive testing guidelines and best practices.\n\n## Deployment\n\nThe 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:\n\n- **rogeriodocarmo.com** (primary)\n- rogeriodocarmo.io\n- rogeriodocarmo.info\n- rogeriodocarmo.click\n- rogeriodocarmo.shop\n- rogeriodocarmo.org\n- rogeriodocarmo.net\n- rogeriodocarmo.tech\n- rogeriodocarmo.com.br\n- rogeriodocarmo.online\n- rogeriodocarmo.xyz\n\nSee [docs/DOMAINS.md](./docs/DOMAINS.md) for complete domain configuration and management guide.\n\n## SEO \u0026 Search Engine Submission\n\nThe website is fully optimized for search engines and submitted to major search platforms:\n\n### ✅ Completed Submissions\n\n- **Google Search Console**: ✅ Verified and sitemap submitted\n  - Primary domain: `rogeriodocarmo.com`\n  - Verification method: DNS TXT record\n  - Sitemap: `https://rogeriodocarmo.com/sitemap.xml` (6 URLs)\n  - Status: **✅ Indexed and accessible** (verified May 5, 2026)\n  - Monitoring: **✅ URL inspection and email notifications configured**\n\n- **Bing Webmaster Tools**: ✅ Verified and sitemap submitted\n  - Primary domain: `rogeriodocarmo.com`\n  - Verification method: Imported from Google Search Console\n  - Sitemap: `https://rogeriodocarmo.com/sitemap.xml` (6 URLs)\n  - Status: Active and indexing\n  - Monitoring: **✅ Email alerts and site scan configured**\n\n### 🔍 Search Visibility\n\n- ✅ **Domain indexed**: Site appears in search results for `site:rogeriodocarmo.com`\n- ✅ **Content verified**: All pages rendering correctly with proper SEO elements\n- ⏳ **Rich snippets**: Will populate within 24-72 hours of initial indexing\n\n### 📊 SEO Features\n\n- ✅ **Sitemap.xml**: Auto-generated with all pages and locales\n- ✅ **Robots.txt**: Configured to allow all search engines\n- ✅ **Structured Data**: Schema.org Person and WebSite schemas\n- ✅ **Meta Tags**: Complete Open Graph and Twitter Card tags\n- ✅ **Semantic HTML**: Proper heading hierarchy and semantic elements\n- ✅ **Mobile-Friendly**: Responsive design optimized for all devices\n- ✅ **Performance**: 90+ Lighthouse score\n- ✅ **Accessibility**: WCAG AA compliant\n\n### 📚 Documentation\n\n- [docs/URL-INSPECTION-MONITORING-GUIDE.md](./docs/URL-INSPECTION-MONITORING-GUIDE.md) - **Complete URL inspection and monitoring setup**\n- [docs/URL-INSPECTION-QUICK-CHECKLIST.md](./docs/URL-INSPECTION-QUICK-CHECKLIST.md) - **Quick checklist for monitoring setup**\n- [docs/GOOGLE-SEARCH-CONSOLE-SETUP.md](./docs/GOOGLE-SEARCH-CONSOLE-SETUP.md) - Complete GSC setup guide\n- [docs/GSC-DNS-VERIFICATION.md](./docs/GSC-DNS-VERIFICATION.md) - DNS TXT record verification guide\n- [docs/GSC-HOSTINGER-GUIDE.md](./docs/GSC-HOSTINGER-GUIDE.md) - Hostinger-specific DNS setup\n- [docs/SEO-SUBMISSION-GUIDE.md](./docs/SEO-SUBMISSION-GUIDE.md) - General search engine submission guide\n\n### 🔍 Domain Strategy\n\nThe 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.\n\n## Contact\n\n**Professional Email Addresses:**\n\n- **Portuguese (pt-BR)**: [contato@rogeriodocarmo.com](mailto:contato@rogeriodocarmo.com)\n- **English/Spanish (en/es)**: [contact@rogeriodocarmo.com](mailto:contact@rogeriodocarmo.com)\n\n**Social Links:**\n\n- **Linktree**: [linktr.ee/rogeriodocarmo](https://linktr.ee/rogeriodocarmo) — all profiles in one place\n\nThese custom domain email addresses highlight the professional nature of this portfolio and are prominently displayed throughout the website.\n\n### Environment Variables\n\nSee `.env.example` for required environment variables. Create `.env.local` for local development.\n\n## Code Quality\n\n- **Test Coverage**: Minimum 80% enforced in CI/CD\n- **Mutation Testing**: Stryker on `lib/` (50% break threshold), non-blocking signal on pull requests and deploys\n- **Code Quality**: SonarQube with 90% quality rating (A) requirement\n- **Linting**: ESLint with Next.js recommended rules\n- **Formatting**: Prettier with consistent formatting\n- **Type Safety**: TypeScript strict mode\n\nSee [CONTRIBUTING.md](./docs/development/CONTRIBUTING.md) for code style guidelines and development workflow.\n\n## License\n\nMIT\n\n## Documentation\n\n- [ARCHITECTURE.md](./ARCHITECTURE.md) - Design patterns, layer responsibilities, and testing architecture\n- [TESTING.md](./docs/testing/TESTING.md) - Comprehensive testing guide and best practices\n- [CONTRIBUTING.md](./docs/development/CONTRIBUTING.md) - Code style guidelines and development workflow\n- [PWA-MANIFEST-IMPLEMENTATION.md](./docs/fixes/PWA-MANIFEST-IMPLEMENTATION.md) - **Progressive Web App setup and features** 📱\n- [docs/BADGES.md](./docs/BADGES.md) - **Explanation of all quality badges** (16 badges)\n- [docs/GIT-WORKFLOW.md](./docs/GIT-WORKFLOW.md) - **Git workflow and branch protection guide** ⚠️\n- [docs/DOMAINS.md](./docs/DOMAINS.md) - **Domain configuration and management** (11 domains)\n- [docs/SEO-SUBMISSION-GUIDE.md](./docs/SEO-SUBMISSION-GUIDE.md) - Search engine submission guide\n- [docs/firebase-remote-config-setup.md](./docs/firebase-remote-config-setup.md) - **Firebase Remote Config setup and feature flags** 🚀\n- [docs/TOGGLE-FEATURE-FLAG.md](./docs/TOGGLE-FEATURE-FLAG.md) - **Quick reference for toggling feature flags** ⚡\n- [.kiro/docs/test-patterns.md](./.kiro/docs/test-patterns.md) - Quick reference for test patterns\n- [.kiro/docs/mutation-testing.md](./.kiro/docs/mutation-testing.md) - **Mutation testing (Stryker): setup, scope, thresholds, CI** 🧬\n- [.kiro/docs/code-quality-fixes.md](./.kiro/docs/code-quality-fixes.md) - Code quality improvements log\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frogeriodocarmo%2Fcurriculo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frogeriodocarmo%2Fcurriculo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frogeriodocarmo%2Fcurriculo/lists"}