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.
Este projeto vai alΓ©m de uma simples landing page estΓ‘tica. Ele implementa conceitos avanΓ§ados de renderizaΓ§Γ£o, interatividade e arquitetura:
- π 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
- π 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_animatee animaΓ§Γ΅es customizadas - π± Totalmente Responsivo: Layout adaptativo para Mobile, Tablet e Desktop
- π¬ Intro Animada: Loading screen estilo terminal hacker com efeitos de digitaΓ§Γ£o
- Linguagem: Dart 3.x
- Framework: Flutter 3.27+ (Web, Android, iOS)
- Backend: Supabase (PostgreSQL + Auth + Storage)
- 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)
- AnimaΓ§Γ΅es:
flutter_animate,AnimationControllercustomizados - UI Components:
google_fonts,font_awesome_flutter - Networking:
supabase_flutter,http - Utilidades:
url_launcher,flutter_dotenv - InternacionalizaΓ§Γ£o:
flutter_localizations, ARB files
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ΓͺnciasO 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. β β
β βββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
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
ββββββββββββββββββββββββ
- 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)
- 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Γ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 |
Certifique-se de ter o Flutter SDK instalado.
-
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 -
Instale as dependΓͺncias:
flutter pub get
-
Rode no Chrome:
flutter run -d chrome
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/webFranklyn Roberto Mobile Developer (Flutter) & Fullstack
Desenvolvido com π e Flutter.