Skip to content

Latest commit

ย 

History

History
291 lines (234 loc) ยท 16 KB

File metadata and controls

291 lines (234 loc) ยท 16 KB

๐Ÿš€ Meu Portfรณlio - Flutter Web Experience

Tech Stack

Architecture State Management Backend Design Pattern

Um portfรณlio interativo e responsivo desenvolvido com Flutter Web, integrando Supabase como backend e demonstrando arquitetura profissional, UI/UX avanรงada, animaรงรตes complexas e gerenciamento de estado robusto.


๐ŸŽจ Funcionalidades & Destaques

Este projeto vai alรฉm de uma simples landing page estรกtica. Ele implementa conceitos avanรงados de renderizaรงรฃo, interatividade e arquitetura:

๐ŸŽฏ Funcionalidades Principais

  • ๐Ÿ” Sistema de Autenticaรงรฃo: Login com Supabase Auth e persistรชncia de sessรฃo
  • ๐Ÿ“Š Painel Admin (CRUD Completo): Gerenciamento de projetos, experiรชncias, habilidades e certificados em tempo real
  • ๐ŸŒ Internacionalizaรงรฃo (i18n): Suporte para mรบltiplos idiomas (PT-BR e EN)
  • ๐ŸŒ“ Dark Mode: Alternรขncia entre tema claro e escuro com persistรชncia

โœจ UI/UX Avanรงada

  • ๐ŸŒŒ Hero Section com Fรญsica: รcones de tecnologia com efeito magnรฉtico reverso (repulsรฃo ao mouse)
  • ๐ŸงŠ Header Glassmorphism: Navegaรงรฃo flutuante com blur e transparรชncia dinรขmica
  • ๐Ÿ–ฅ๏ธ Cards Hologrรกficos 3D: Efeito tilt 3D seguindo o cursor com iluminaรงรฃo dinรขmica
  • โšก Animaรงรตes Fluidas: Micro-interaรงรตes com flutter_animate e animaรงรตes customizadas
  • ๐Ÿ“ฑ Totalmente Responsivo: Layout adaptativo para Mobile, Tablet e Desktop
  • ๐ŸŽฌ Intro Animada: Loading screen estilo terminal hacker com efeitos de digitaรงรฃo

๐Ÿ› ๏ธ Stack Tecnolรณgica

Core

Arquitetura & Padrรตes

  • Padrรฃo de Projeto: MVVM + Repository Pattern + Clean Architecture Elements
  • Gerรชncia de Estado: provider (ChangeNotifier)
  • Injeรงรฃo de Dependรชncia: Provider DI
  • Design System: Atomic Design (Atoms โ†’ Molecules โ†’ Organisms)

Bibliotecas Principais

  • Animaรงรตes: flutter_animate, AnimationController customizados
  • UI Components: google_fonts, font_awesome_flutter
  • Networking: supabase_flutter, http
  • Utilidades: url_launcher, flutter_dotenv
  • Internacionalizaรงรฃo: flutter_localizations, ARB files

๐Ÿ“‚ Estrutura do Projeto (Clean Architecture)

O projeto segue uma estrutura Atomic Design misturada com Clean Architecture para garantir escalabilidade e manutenรงรฃo:

lib/
โ”œโ”€โ”€ core/                  # Configuraรงรตes globais (Temas, Constantes, Utils)
โ”œโ”€โ”€ data/                  # Camada de Dados
โ”‚   โ”œโ”€โ”€ mocks/             # Dados estรกticos (Currรญculo, Projetos)
โ”‚   โ”œโ”€โ”€ models/            # Modelos de dados (ProjectModel, SkillModel)
โ”‚   โ””โ”€โ”€ repositories/      # Contratos e Implementaรงรตes de Repositรณrio
โ”œโ”€โ”€ presentation/          # Camada de UI
โ”‚   โ”œโ”€โ”€ controllers/       # Lรณgica de Estado (PortfolioController)
โ”‚   โ”œโ”€โ”€ pages/             # Telas principais (HomePage)
โ”‚   โ””โ”€โ”€ widgets/           # Componentes Visuais (Atomic Design)
โ”‚       โ”œโ”€โ”€ atoms/         # Botรตes, Chips, Elementos Magnรฉticos
โ”‚       โ”œโ”€โ”€ molecules/     # Cards Interativos (ProjectCard, ExperienceCard)
โ”‚       โ””โ”€โ”€ organisms/     # Seรงรตes completas (Hero, Skills, Projects)
โ””โ”€โ”€ main.dart              # Ponto de entrada e Injeรงรฃo de Dependรชncias

๐Ÿ—๏ธ Arquitetura do Projeto

Padrรฃo Arquitetural: MVVM + Repository Pattern + Clean Architecture Elements

O projeto implementa uma arquitetura hรญbrida robusta que combina os melhores aspectos de MVVM, Repository Pattern e Clean Architecture:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        PRESENTATION LAYER                           โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚  โ”‚                โ”‚  Provider โ”‚                              โ”‚     โ”‚
โ”‚  โ”‚     VIEW       โ”‚โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บโ”‚      VIEW MODEL              โ”‚     โ”‚
โ”‚  โ”‚   (Pages +     โ”‚   Binding โ”‚    (Controllers)             โ”‚     โ”‚
โ”‚  โ”‚    Widgets)    โ”‚           โ”‚                              โ”‚     โ”‚
โ”‚  โ”‚                โ”‚           โ”‚ โ€ข PortfolioController        โ”‚     โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜           โ”‚ โ€ข AuthController             โ”‚     โ”‚
โ”‚   โ€ข home_page.dart            โ”‚                              โ”‚     โ”‚
โ”‚   โ€ข admin_dashboard_page.dart โ”‚ State Management: Provider   โ”‚     โ”‚
โ”‚   โ€ข Atomic Design Components  โ”‚ (ChangeNotifier Pattern)     โ”‚     โ”‚
โ”‚                                โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                โ”‚
                                                โ”‚ Dependency
                                                โ”‚ Injection
                                                โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                          DATA LAYER                                 โ”‚
โ”‚                                                                     โ”‚
โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚   โ”‚          Repository Interface (Contract)                โ”‚     โ”‚
โ”‚   โ”‚                                                         โ”‚     โ”‚
โ”‚   โ”‚      abstract class IPortfolioRepository {             โ”‚     โ”‚
โ”‚   โ”‚        Future<List<Project>> getProjects();            โ”‚     โ”‚
โ”‚   โ”‚        Future<void> addProject(Project project);       โ”‚     โ”‚
โ”‚   โ”‚      }                                                  โ”‚     โ”‚
โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ”‚                           โ”‚ implements                            โ”‚
โ”‚                           โ†“                                       โ”‚
โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚   โ”‚    Repository Implementation                            โ”‚     โ”‚
โ”‚   โ”‚                                                         โ”‚     โ”‚
โ”‚   โ”‚    class SupabaseRepository                            โ”‚     โ”‚
โ”‚   โ”‚    implements IPortfolioRepository {                   โ”‚     โ”‚
โ”‚   โ”‚                                                         โ”‚     โ”‚
โ”‚   โ”‚      โ€ข getProjects()                                   โ”‚     โ”‚
โ”‚   โ”‚      โ€ข getExperiences()                                โ”‚     โ”‚
โ”‚   โ”‚      โ€ข getSkills()                                     โ”‚     โ”‚
โ”‚   โ”‚      โ€ข getCertificates()                               โ”‚     โ”‚
โ”‚   โ”‚      โ€ข CRUD Operations                                 โ”‚     โ”‚
โ”‚   โ”‚      โ€ข Error Handling                                  โ”‚     โ”‚
โ”‚   โ”‚      โ€ข Logging                                         โ”‚     โ”‚
โ”‚   โ”‚    }                                                    โ”‚     โ”‚
โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ”‚                           โ”‚                                       โ”‚
โ”‚                           โ†“                                       โ”‚
โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚   โ”‚              MODELS (Entities)                          โ”‚     โ”‚
โ”‚   โ”‚                                                         โ”‚     โ”‚
โ”‚   โ”‚   โ€ข ProjectModel         โ€ข SkillModel                  โ”‚     โ”‚
โ”‚   โ”‚   โ€ข ExperienceModel      โ€ข CertificateModel            โ”‚     โ”‚
โ”‚   โ”‚                                                         โ”‚     โ”‚
โ”‚   โ”‚   Responsibilities:                                    โ”‚     โ”‚
โ”‚   โ”‚   - Data structure definition                          โ”‚     โ”‚
โ”‚   โ”‚   - JSON serialization (toMap/fromMap)                 โ”‚     โ”‚
โ”‚   โ”‚   - Type validation                                    โ”‚     โ”‚
โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ”‚                           โ”‚                                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      EXTERNAL DATA SOURCE                           โ”‚
โ”‚                                                                     โ”‚
โ”‚                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                          โ”‚
โ”‚                    โ”‚     SUPABASE        โ”‚                          โ”‚
โ”‚                    โ”‚                     โ”‚                          โ”‚
โ”‚                    โ”‚  โ€ข PostgreSQL DB    โ”‚                          โ”‚
โ”‚                    โ”‚  โ€ข Auth System      โ”‚                          โ”‚
โ”‚                    โ”‚  โ€ข Real-time Sync   โ”‚                          โ”‚
โ”‚                    โ”‚  โ€ข Row Level Sec.   โ”‚                          โ”‚
โ”‚                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Fluxo de Dados

USER INTERACTION
      โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   View (Widget)      โ”‚  โ†’ User taps button, enters text
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚
           โ†“ Event (onPressed, onChange)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   ViewModel          โ”‚  โ†’ Receives event, updates state
โ”‚   (Controller)       โ”‚  โ†’ Calls repository methods
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚
           โ†“ Method call
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Repository         โ”‚  โ†’ Handles data operations
โ”‚   (Data Layer)       โ”‚  โ†’ Interacts with Supabase
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚
           โ†“ HTTP/gRPC
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Supabase API       โ”‚  โ†’ Returns data
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚
           โ†“ Response
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Repository         โ”‚  โ†’ Converts to Models
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚
           โ†“ Models
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   ViewModel          โ”‚  โ†’ Updates state
โ”‚   (Controller)       โ”‚  โ†’ notifyListeners()
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚
           โ†“ State change
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   View (Widget)      โ”‚  โ†’ Rebuilds with new data
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Princรญpios Aplicados

โœ… SOLID Principles

  • S - Single Responsibility: Cada classe tem uma responsabilidade รบnica
  • O - Open/Closed: Extensรญvel via interfaces (IPortfolioRepository)
  • L - Liskov Substitution: SupabaseRepository pode ser substituรญdo por MockRepository
  • I - Interface Segregation: Interfaces especรญficas para cada tipo de repositรณrio
  • D - Dependency Inversion: Controllers dependem de abstraรงรตes (interfaces)

โœ… Design Patterns

  • Repository Pattern: Abstraรงรฃo da camada de dados
  • MVVM: Separaรงรฃo entre View e lรณgica de negรณcio
  • Dependency Injection: Provider para injeรงรฃo de dependรชncias
  • Observer Pattern: ChangeNotifier para reatividade
  • Atomic Design: Componentizaรงรฃo hierรกrquica de UI

Benefรญcios da Arquitetura

Benefรญcio Descriรงรฃo
๐Ÿงช Testabilidade Fรกcil criar mocks para testes unitรกrios
๐Ÿ”ง Manutenibilidade Mudanรงas isoladas nรฃo afetam outras camadas
๐Ÿ“ˆ Escalabilidade Fรกcil adicionar novas features sem quebrar cรณdigo existente
๐Ÿ”„ Reusabilidade Componentes podem ser reutilizados em diferentes contextos
๐Ÿ‘ฅ Colaboraรงรฃo Estrutura clara facilita trabalho em equipe
๐Ÿ› Debugging Fluxo de dados previsรญvel facilita identificaรงรฃo de bugs

๐Ÿš€ Como Rodar o Projeto

Prรฉ-requisitos

Certifique-se de ter o Flutter SDK instalado.

  1. Clone o repositรณrio:

    git clone [https://github.com/DevFullStack-Franklyn-R-Silva/meu_curriculo_flutter.git](https://github.com/DevFullStack-Franklyn-R-Silva/meu_curriculo_flutter.git)
    cd meu_curriculo_flutter
  2. Instale as dependรชncias:

    flutter pub get
  3. Rode no Chrome:

    flutter run -d chrome

๐Ÿ“ฆ Como Fazer o Deploy (GitHub Pages)

Para gerar a versรฃo de produรงรฃo e hospedar gratuitamente:

# Gere o build de web (substitua o href pelo nome do seu repositรณrio)
flutter build web --release --base-href "/meu_curriculo_flutter/"

# O conteรบdo gerado estarรก na pasta /build/web

๐Ÿ‘จโ€๐Ÿ’ป Autor

Franklyn Roberto Mobile Developer (Flutter) & Fullstack


Desenvolvido com ๐Ÿ’™ e Flutter.