A modern, animated portfolio website showcasing Matheus Caiser's work as a Full Stack Developer
π Live Demo β’ π Documentation β’ π¨ Customization
- β¨ Features
- π οΈ Tech Stack
- π Quick Start
- π¦ Available Scripts
- π CI/CD - GitHub Actions
- π Recent Improvements
- π¨ Customization Guide
- π Project Structure
- ποΈ Architecture
- π Deployment
- π³ Docker
- π Changelog
- π License
- π Credits
- π€ Contributing
- π¨βπ» Author
Para garantir a estabilidade do projeto, seguimos um processo rigoroso e bem definido para correΓ§Γ΅es de emergΓͺncia em produΓ§Γ£o. Este fluxo de trabalho Γ© a nossa "Regra de Ouro" para lidar com bugs crΓticos de forma rΓ‘pida e segura.
β‘οΈ Leia o Guia Completo do Processo de Hotfix
- π¨ Modern Portfolio Design - Clean, responsive portfolio with dark theme
- β‘ Animated Background - Canvas-based particle animation system
- π± Responsive Design - Mobile-first approach with adaptive layouts
- π― Smooth Scrolling Navigation - Anchor-based navigation with smooth scroll behavior
- π§ Contact Form - Integrated form with validation and email integration via FormSubmit
- ποΈ Clean Architecture - Services, hooks, and components layered approach
- π§ Type-Safe Development - Full TypeScript implementation with strict typing
- β‘ Performance Optimized - Vite build system with optimized bundle size
- βΏ Accessibility - Semantic HTML, ARIA labels, and keyboard navigation
- π¨ SCSS Styling - Centralized design system with variables and animations
- π CI/CD Integration - GitHub Actions with automated testing and deployment
- React 18.3.1 - UI library with modern hooks and concurrent features
- TypeScript 5.9.3 - Type safety and enhanced developer experience
- SCSS 1.93.2 - Advanced CSS preprocessing with variables and mixins
- Vite 7.2.0 - Fast build tool and development server
- Lucide React 0.552.0 - Beautiful, customizable icons
- React Helmet Async 2.0.5 - Document head management for SEO
- Vercel Analytics 1.5.0 - Privacy-focused web analytics
- ESLint 9.39.1 - Code linting with React and TypeScript rules
- pnpm 10.20.0 - Fast, efficient package manager (via corepack)
- Semantic Release 25.0.1 - Automated versioning and changelog generation
- Vercel CLI 34.2.0 - Deployment and project management
- Node.js: A versΓ£o exata estΓ‘ definida no arquivo
.nvmrc. Se vocΓͺ usanvm, apenas rodenvm usena raiz do projeto. - pnpm: VersΓ£o
10.20.0ou superior (instalado viacorepack).
- Clone the repository
git clone https://github.com/JaegerCaiser/mrdeveloper.git
cd mrdeveloper- Install dependencies
pnpm install- Start development server
pnpm dev- Open in browser
http://localhost:3000
| Command | Description |
|---|---|
pnpm dev |
Start development server |
pnpm build |
Create production build |
pnpm preview |
Preview production build locally |
pnpm lint |
Lint code with ESLint |
pnpm lint:fix |
Fix linting issues automatically |
pnpm lint:yaml |
Lint YAML files in workflows |
pnpm test:ci |
Run CI tests (placeholder) |
Este projeto utiliza GitHub Actions com infraestrutura completa de CI/CD seguindo o padrΓ£o Gitflow, proporcionando deploy automatizado e monitoramento contΓnuo.
- Trigger: Push na branch
develop - Recursos:
- π§ͺ Testes automatizados (
pnpm run test:ci) - π Linting (
pnpm run lint) - ποΈ Build de produΓ§Γ£o (
pnpm run build) - π Deploy automΓ‘tico para Vercel (ambiente develop)
- π Rastreamento de deployments via GitHub Deployments API
- π Upload de logs de erro em caso de falha
- π§ͺ Testes automatizados (
- Trigger: Pull Requests para
main+ Push em branchesrelease/* - Recursos:
- π§ͺ Testes e linting
- π Deploy preview no Vercel (por PR)
- ComentΓ‘rios automΓ‘ticos nos PRs com links de preview
- π‘οΈ Semantic Release: GeraΓ§Γ£o de versΓ΅es beta automΓ‘ticas em push para
release/*(quando nΓ£o hΓ‘ PR aberto). - β‘ OtimizaΓ§Γ£o de Workflow:
- DetecΓ§Γ£o de Duplicatas: Um job
check-duplicate-runverifica se jΓ‘ existe uma execuΓ§Γ£o para o PR, evitando que o workflow depushrode desnecessariamente. - Status Checks Limpos: Jobs sΓ£o pulados (
skipped) ao invΓ©s de cancelados (cancelled), mantendo os status checks do PR sempre corretos e evitando bloqueios de merge. - Economia de Recursos: Evita o desperdΓcio de Actions minutes com execuΓ§Γ΅es duplicadas.
- DetecΓ§Γ£o de Duplicatas: Um job
- Trigger: Push na branch
main(apΓ³s merge derelease/*ouhotfix/*) - Recursos:
- π§ͺ Testes completos e linting
- π Deploy automΓ‘tico para produΓ§Γ£o no Vercel
- π·οΈ Versionamento automΓ‘tico com tags de release
- π Logs detalhados de erro
- π Controle rigoroso de qualidade
- Cache Inteligente: ReduΓ§Γ£o de ~25-40% no tempo de execuΓ§Γ£o
- π¦ Cache de dependΓͺncias pnpm
- ποΈ Cache de build artifacts (
.vite,node_modules/.cache,.eslintcache) - π Cache do Vercel CLI
- π Cache do ESLint
VERCEL_TOKEN=your_vercel_token_here
VERCEL_ORG_ID=your_vercel_org_id_here
VERCEL_PROJECT_ID=your_vercel_project_id_here
- Acesse Vercel Dashboard
- Settings > Tokens β Crie um novo token
- Para Org ID: Execute
vercel org lsno terminal - Para Project ID: Execute
vercel project lsno terminal
- π ProduΓ§Γ£o: www.mrdeveloper.com.br (deploy automΓ‘tico em push para
main) - π§ͺ Desenvolvimento: Deploy automΓ‘tico em push para
develop - π Preview: Deploy automΓ‘tico em PRs (comentΓ‘rios com links)
- π Local: GitHub Repository > Actions
- π Logs: Artefatos de erro disponΓveis em caso de falhas (veja Workflows DisponΓveis)
- π¨ Alertas: NotificaΓ§Γ΅es automΓ‘ticas em falhas de CI/CD
# Criar feature branch
git checkout -b feature/nova-funcionalidade
# Desenvolver e commitar
git add .
git commit -m "feat: adiciona nova funcionalidade"
# Push (executa CI automaticamente)
git push origin feature/nova-funcionalidade
# Criar PR para develop (deploy preview automΓ‘tico)
# ApΓ³s merge, criar PR para main (deploy produΓ§Γ£o)- #107: A complete overhaul of the CI/CD workflows, focusing on efficiency, clarity, and best practices. This historic PR documents a deep-dive into debugging GitHub Actions, resulting in:
- Path Filtering: Workflows now intelligently skip unnecessary jobs for documentation-only changes.
- Workflow Simplification: Removed redundant actions (
bobheadxi/deployments) in favor of native GitHub Actionsenvironmentfeatures. - Bug Fixes: Resolved multiple subtle bugs related to git history, action versions, and environment variable handling.
- Enhanced Documentation: The PR description itself serves as a detailed log of the lessons learned.
- Problema Resolvido: Slow Vercel builds due to
npx pnpmdownloads (~21s overhead) - SoluΓ§Γ£o: Native pnpm support via Node.js corepack integration
- ImplementaΓ§Γ£o: Added
packageManager: "pnpm@10.20.0"field and updatedvercel.jsonwithcorepack pnpmcommands - Resultado: ~55% faster builds (9-13 seconds improvement) with consistent package manager across environments
- Problema Resolvido: ERR_PNPM_BAD_PM_VERSION conflicts between workflow configs and package.json
- SoluΓ§Γ£o: Removed version specifications from
pnpm/action-setup@v4across all workflows - ImplementaΓ§Γ£o: Consistent pnpm@10.20.0 usage via packageManager field in all environments
- Resultado: Eliminated version conflicts and improved CI/CD reliability
- Problema Resolvido: Complex manual versioning and changelog management
- SoluΓ§Γ£o: Automated semantic versioning based on conventional commits
- ImplementaΓ§Γ£o: Industry-standard semantic-release with GitHub integration
- Resultado: Automatic PATCH/MINOR/MAJOR versioning with generated changelogs
- 2 Core Documentation Files in
.github/directory:WORKFLOW.md- Complete CI/CD documentationcopilot-instructions.md- AI assistant guidelines
- Enhanced Copilot Instructions: Improved GitHub CLI command execution guidelines
- Clean Structure: Removed redundant and outdated documentation files
Header (src/components/Header.tsx)
- Change logo initials (currently "BS")
- Update navigation links
Hero Section (src/sections/Hero.tsx)
<h1 className="hero__title">
Hello, I'm <span>Matheus</span>.
<br />
I'm a full stack web developer.
</h1>About Section (src/sections/About.tsx)
- Replace bio paragraphs with personal description
- Update skills array:
const skills = [
"HTML",
"REACT",
"EXPRESS.JS",
"JAVASCRIPT",
"CSS",
"MONGODB",
"GIT",
"SASS",
"NEXT.JS",
"NODE.JS",
];- Replace
src/assets/profile.pngwith your photo
Experience (src/sections/Experience.tsx)
const items: ExperienceItem[] = [
{
company: "DBC Company (Unicred)",
role: "Front-end Developer",
period: "January 2022 β Present",
description:
"Working as front-end developer building products for Unicred's internet banking cooperative...",
},
// Add other experiences from experienceData.tsx
];Contact (src/sections/Contact.tsx)
- Update social media links in Footer component
- Integrate form service (Formspree, EmailJS, etc.)
- Change copyright name to "MATHEUS CAISER"
Edit src/styles/_variables.scss:
$bg: #0a192f; // Main background
$bg-light: #112240; // Card backgrounds
$text: #8892b0; // Body text
$text-bright: #ccd6f6; // Headings
$accent: #64ffda; // Accent colorUpdate Google Fonts import in src/index.scss and variables in src/styles/_variables.scss.
Customize in src/components/AnimatedBackground.tsx:
const particleCount = 80; // Number of particles
const connectionDistance = 150; // Connection distancesrc/
βββ components/
β βββ AnimatedBackground.tsx # Canvas particle animation system
β βββ Header.tsx & Header.scss # Fixed navigation header
β βββ Footer.tsx & Footer.scss # Social links and copyright
β βββ SkillItem.tsx # Reusable skill item component
βββ sections/
β βββ Hero.tsx & Hero.scss # Landing section with animations
β βββ About.tsx & About.scss # Bio and skills section
β βββ Experience.tsx & Experience.scss # Work history
β βββ Contact.tsx & Contact.scss # Contact form (UI only)
β βββ experienceData.tsx # Experience data configuration
βββ services/
β βββ contactService.ts # Contact form business logic & API
β βββ index.ts # Service exports
β βββ __tests__/ # Service unit tests
βββ hooks/
β βββ useContactForm.ts # Contact form state management
β βββ index.ts # Hook exports
βββ styles/
β βββ _variables.scss # Theme variables and design tokens
β βββ animations.scss # CSS animations and keyframes
β βββ layout.scss # Main layout and responsive styles
βββ utils/
β βββ Particle.ts # Particle animation utilities
βββ assets/
β βββ profile.png # Profile photo
β βββ logo.svg # Logo assets
β βββ mustache.svg # Icon assets
βββ App.tsx & App.scss # Main app component and styles
βββ main.tsx # App entry point
βββ index.scss # Global styles
βββ react-app-env.d.ts # TypeScript declarations
This project follows Clean Architecture principles with clear separation of concerns:
- Business Logic: API calls, data validation, and external integrations
- contactService.ts: Handles contact form submission to FormSubmit API
- Error Handling: Centralized error management and user feedback
- State Management: Custom hooks for component logic
- useContactForm.ts: Manages form state, validation, and submission flow
- Reusability: Logic can be reused across multiple components
- UI Only: Pure presentation components focused on rendering
- Props Interface: Clear data contracts with TypeScript interfaces
- Separation: No business logic, only JSX and styling
- Semantic Release: Automated versioning and changelog generation
- Conventional Commits: Intelligent version bumping based on commit types
- Branch Protection: Status checks integration with automated release handling
- Documentation Suite: Streamlined CI/CD documentation in
.github/directory
- Gitflow: Feature branches β develop β release β main
- Automated Testing: Comprehensive CI/CD with preview and production environments
- Quality Gates: Linting, building, and deployment validation at each stage
pnpm build
vercel --prodpnpm build
netlify deploy --prod --dir=build- Add to
package.json:
"homepage": "https://www.mrdeveloper.com.br/"- Install gh-pages:
pnpm add -D gh-pages- Add scripts:
"predeploy": "pnpm build",
"deploy": "gh-pages -d build"- Deploy:
pnpm deploydocker build -t portfolio .docker run -p 3000:3000 portfoliodocker-compose up- β‘ Corepack pnpm Integration: ~55% faster builds with native pnpm support via Node.js corepack
- π§ CI/CD Optimization: Resolved ERR_PNPM_BAD_PM_VERSION conflicts across all workflows
- π¦ Package Manager: Added
packageManager: "pnpm@10.20.0"field for consistent versioning - π Vercel Performance: Eliminated npx overhead, reducing build times by 9-13 seconds
- π‘οΈ Semantic Release Migration: Automated versioning replacing manual release process
- π Documentation Cleanup: Streamlined documentation (removed 5 outdated files)
- π Custom Domain Setup: Added homepage field and CNAME file for GitHub Pages custom domain support
- π README Updates: Updated project structure, features, and deployment instructions
- π Initial release with complete portfolio functionality
- π¨ Modern design with animated background
- π§ Contact form with service layer integration
- ποΈ Clean architecture implementation
- β‘ Vite build system with TypeScript
MIT License - feel free to use this template for your own portfolio!
- Design inspiration: benscott.dev
- Icons: Lucide React
- Fonts: Google Fonts
Contributions, issues, and feature requests are welcome!
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add: amazing feature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Matheus Caiser
- GitHub: @JaegerCaiser
- Email: matheus.caiser@gmail.com
Made with β€οΈ using React + TypeScript + Vite
Portfolio of Matheus Caiser - Full Stack Developer
β If this project helped you, leave a star!
Made with β€οΈ and β by Matheus Caiser