{"id":49283315,"url":"https://github.com/resand/personal-website-flutter","last_synced_at":"2026-04-25T20:02:09.752Z","repository":{"id":318512423,"uuid":"1055284961","full_name":"resand/personal-website-flutter","owner":"resand","description":"A modern, fully configurable and multilingual personal website built with Flutter Web to showcase experience, projects, education, certifications, and blog articles professionally.","archived":false,"fork":false,"pushed_at":"2025-10-07T15:29:19.000Z","size":2542,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-07T17:38:43.847Z","etag":null,"topics":["dart","firebase","flutter"],"latest_commit_sha":null,"homepage":"https://renes.dev","language":"Dart","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/resand.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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":"2025-09-12T03:44:00.000Z","updated_at":"2025-10-07T15:29:22.000Z","dependencies_parsed_at":"2025-10-07T17:38:48.094Z","dependency_job_id":"145a9e3c-0410-4b6b-9112-53ec989803bc","html_url":"https://github.com/resand/personal-website-flutter","commit_stats":null,"previous_names":["resand/personal-website-flutter"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/resand/personal-website-flutter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resand%2Fpersonal-website-flutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resand%2Fpersonal-website-flutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resand%2Fpersonal-website-flutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resand%2Fpersonal-website-flutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/resand","download_url":"https://codeload.github.com/resand/personal-website-flutter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resand%2Fpersonal-website-flutter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32274985,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"ssl_error","status_checked_at":"2026-04-25T18:29:32.149Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["dart","firebase","flutter"],"created_at":"2026-04-25T20:02:08.970Z","updated_at":"2026-04-25T20:02:09.743Z","avatar_url":"https://github.com/resand.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Personal Website - Flutter Web 🚀\n\nA modern, fully configurable and multilingual personal website built with Flutter Web to showcase experience, projects, education, certifications, and blog articles professionally.\n\n![Flutter](https://img.shields.io/badge/Flutter-02569B?style=for-the-badge\u0026logo=flutter\u0026logoColor=white)\n![Web](https://img.shields.io/badge/Web-4285F4?style=for-the-badge\u0026logo=google-chrome\u0026logoColor=white)\n![Firebase](https://img.shields.io/badge/Firebase-FFCA28?style=for-the-badge\u0026logo=firebase\u0026logoColor=black)\n\n## 📋 Table of Contents\n\n- [✨ Features](#-features)\n- [🛠️ Technologies and Dependencies](#️-technologies-and-dependencies) \n- [🚀 Quick Start](#-quick-start)\n- [⚙️ Configuration](#️-configuration)\n- [🔧 Environment Variables](#-environment-variables-environment)\n- [🚀 Deployment](#-deployment)\n- [⚡ Useful Commands](#-useful-commands)\n- [🛠️ Project Structure](#️-project-structure)\n- [🎨 Advanced Features](#-advanced-features)\n- [🔧 Advanced Customization](#-advanced-customization)\n- [📝 Blog Integration](#-blog-integration)\n- [🔧 Troubleshooting](#-troubleshooting)\n- [🤝 Contributing](#-contributing)\n- [📄 License](#-license)\n- [🆘 Support](#-support)\n\n## ✨ Features\n\n- 🎨 **Fully configurable** via JSON files\n- 🌍 **Dual-language support** with dynamic selection (default language + English)\n- 📱 **Responsive design** optimized for mobile, tablet, and desktop\n- 📝 **Blog integration** with Medium and Dev.to RSS support\n- 🚀 **Firebase Hosting optimized** with automated deployment\n- 🎯 **10 customizable sections**: Hero, Projects, Skills, Experience, Education, Certifications, About, Blog, Volunteering, Contact\n- 🌙 **Theme selector** (Light/Dark/Auto) with smooth transitions\n- 🎓 **Education section** with complete academic background\n- 🏆 **Certifications section** with adaptive grid layout\n- ⚡ **Performance optimized** with smooth animations\n- 🔧 **Modular architecture** easy to customize and extend\n- 📧 **Email integration** for direct contact\n\n## 🛠️ Technologies and Dependencies\n\n### Main Stack  \n- **Flutter Web** (3.35.3+) - Cross-platform framework\n- **Dart SDK** (3.9.2+) - Programming language\n\n### Core Dependencies\n- **http** (^1.1.0) - HTTP client for APIs and RSS\n- **url_launcher** (^6.1.12) - Open external URLs\n- **google_fonts** (^6.1.0) - Google typography fonts\n- **font_awesome_flutter** (^10.6.0) - Font Awesome icons\n- **lottie** (^3.1.2) - Lottie animations for loaders\n- **shared_preferences** (^2.3.2) - Local persistence of configurations\n- **logger** (^2.0.2+1) - Logging system\n\n### Development Tools\n- **flutter_lints** (^6.0.0) - Recommended linting rules\n- **flutter_test** - Integrated testing framework\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- **Flutter SDK** (3.35.3 or higher)\n- **Dart SDK** (3.9.2 or higher) \n- **Firebase CLI** (optional, for deployment)\n- **Chrome/Edge** (for web development)\n- **Node.js** (for Firebase CLI)\n\n### Installation\n\n**Quick Start (Recommended)**\n```bash\n# Clone and setup everything automatically\ngit clone https://github.com/resand/personal-website-flutter.git\ncd personal-website-flutter\nmake setup\n```\n\n**Development Commands**\n```bash\n# Development with hot reload\nmake dev\n\n# Run web app in Chrome  \nmake web\n\n# Production build locally\nmake web-release\n\n# Build for production\nmake build\n\n# Code analysis\nmake analyze\n\n# Clean project\nmake clean\n```\n\n**Deployment**\n```bash\n# Option 1: Complete deployment (clean + build + deploy)\nmake deploy\n\n# Option 2: Optimized workflow (build once, deploy without rebuilding)\nmake build        # Build for production\nmake deploy-only  # Deploy without rebuilding\n\n# Check status\nmake status\n\n# Open website\nmake open\n```\n\n## ⚙️ Configuration\n\nThe website supports **dual-language configuration** with two JSON files:\n- `assets/config/website_config_default.json` (Your default language - Spanish in this example, but configure for your preferred language)\n- `assets/config/website_config_english.json` (English - secondary language for switching)\n\n**After running `make setup`, edit your personal information in these files:**\n\n### Personal Information\n```json\n{\n  \"personal_info\": {\n    \"name\": \"René Sandoval\",\n    \"title\": \"Ingeniero de Software | GDG Lead Organizer\",\n    \"subtitle\": \"13+ años diseñando y desarrollando soluciones web, backend y móviles\",\n    \"bio\": \"Your complete biography here...\",\n    \"short_bio\": \"Short biography for hero section...\",\n    \"fun_fact\": \"Ex-Carpintero → Programador\",\n    \"email\": \"your.email@example.com\",\n    \"location\": \"Your City, Country\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/5307015?v=4\",\n    \"logo_light_url\": \"images/logos/logo-light.png\",\n    \"logo_dark_url\": \"images/logos/logo_dark.png\",\n    \"years_of_experience\": \"13+\"\n  },\n  \"language_info\": {\n    \"code\": \"ES\",\n    \"name\": \"Español\"\n  }\n}\n```\n\n### Social Links (Array Format)\n```json\n{\n  \"social_links\": [\n    {\n      \"platform\": \"linkedin\",\n      \"url\": \"https://www.linkedin.com/in/your-profile\"\n    },\n    {\n      \"platform\": \"github\", \n      \"url\": \"https://github.com/your-username\"\n    },\n    {\n      \"platform\": \"medium\",\n      \"url\": \"https://medium.com/@your-username\"\n    },\n    {\n      \"platform\": \"x\",\n      \"url\": \"https://x.com/your-username\"\n    },\n    {\n      \"platform\": \"instagram\",\n      \"url\": \"https://instagram.com/your-username\"\n    }\n  ]\n}\n```\n\n### Blog Integration (Medium \u0026 Dev.to)\n```json\n{\n  \"blog_config\": {\n    \"show_latest_posts\": true,\n    \"max_posts_to_show\": 6,\n    \"sources\": [\n      {\n        \"name\": \"Medium\",\n        \"username\": \"resand\",\n        \"rss_url\": \"https://medium.com/feed/@resand\",\n        \"enabled\": true\n      }\n    ],\n    \"section_title\": \"Últimas Publicaciones\",\n    \"section_description\": \"Artículos y reflexiones sobre arquitectura, desarrollo móvil, web y mejores prácticas\",\n    \"error_title\": \"No se pudieron cargar los artículos\",\n    \"error_message\": \"Puedes visitar mi perfil de Medium directamente\",\n    \"empty_message\": \"No hay artículos disponibles\",\n    \"view_all_text\": \"Ver todos los artículos en Medium\"\n  }\n}\n```\n\n### Professional Experience\n```json\n{\n  \"experience\": [\n    {\n      \"company\": \"Fraternitas\",\n      \"position\": \"iOS Developer\",\n      \"duration\": \"Julio 2023 - Noviembre 2024\",\n      \"location\": \"Texas, Estados Unidos (Remoto)\",\n      \"description\": \"Desarrollo y refactorización de aplicaciones de remesas y pagos de servicios desde USA hacia LATAM.\",\n      \"technologies\": [\"iOS\", \"Swift\", \"UIKit\", \"VIPER\", \"JWE\", \"Flutter\"],\n      \"highlights\": [\n        \"Migré aplicación completa de Storyboards a vistas programáticas con UIKit\",\n        \"Implementé patrón VIPER y principios DRY para arquitectura escalable\",\n        \"Integré seguridad avanzada con JWE en servicios críticos\"\n      ]\n    },\n    {\n      \"company\": \"Finerio Connect\",\n      \"position\": \"Mobile Tech Lead\",\n      \"duration\": \"Octubre 2021 - Marzo 2023\",\n      \"location\": \"Ciudad de México, México (Remoto)\",\n      \"description\": \"Liderazgo técnico de equipos móviles y desarrollo de SDKs para Open Banking.\",\n      \"technologies\": [\"iOS\", \"Android\", \"Swift\", \"Open Banking\", \"UI/UX\"],\n      \"highlights\": [\n        \"Dirigí equipos de desarrollo iOS y Android con metodologías ágiles\",\n        \"Diseñé features con fuerte enfoque en principios de UI/UX\"\n      ]\n    }\n  ]\n}\n```\n\n### Technical Skills\n```json\n{\n  \"skills\": {\n    \"categories\": [\n      {\n        \"id\": \"mobile\",\n        \"title\": \"Móvil\",\n        \"icon\": \"flutter_dash\",\n        \"skills\": [\n          { \"name\": \"iOS\", \"level\": \"Avanzado\" },\n          { \"name\": \"Swift\", \"level\": \"Avanzado\" },\n          { \"name\": \"SwiftUI\", \"level\": \"Experto\" },\n          { \"name\": \"Flutter\", \"level\": \"Avanzado\" }\n        ]\n      },\n      {\n        \"id\": \"architectures\",\n        \"title\": \"Arquitecturas\",\n        \"icon\": \"account_tree\",\n        \"skills\": [\n          { \"name\": \"VIPER\", \"level\": \"Experto\" },\n          { \"name\": \"MVVM\", \"level\": \"Experto\" },\n          { \"name\": \"Clean Architecture\", \"level\": \"Avanzado\" }\n        ]\n      },\n      {\n        \"id\": \"backend\",\n        \"title\": \"Backend\",\n        \"icon\": \"cloud_queue\",\n        \"skills\": [\n          { \"name\": \"C#\", \"level\": \"Avanzado\" },\n          { \"name\": \".NET\", \"level\": \"Avanzado\" },\n          { \"name\": \"API REST\", \"level\": \"Experto\" }\n        ]\n      }\n    ]\n  }\n}\n```\n\n### 🎓 Education\n```json\n{\n  \"education\": [\n    {\n      \"institution\": \"Universidad Da Vinci\",\n      \"degree\": \"Maestría en Sistemas Computacionales\",\n      \"field\": \"Ingeniería de Sistemas\",\n      \"duration\": \"Abril 2020 - Diciembre 2021\"\n    },\n    {\n      \"institution\": \"Instituto Tecnológico de Campeche\",\n      \"degree\": \"Licenciatura en Ciencias de la Computación\",\n      \"field\": \"Ingeniería de Software\",\n      \"duration\": \"2009 - 2014\"\n    }\n  ]\n}\n```\n\n### 🏆 Certifications\n```json\n{\n  \"certifications\": [\n    \"CCNA: Introduction to Networks\",\n    \"CCNA: Switching, Routing, and Wireless Essentials\",\n    \"Scrum Foundation Professional Certification - SFPC\",\n    \"edX Honor Code Certificate for the Mobile Devices for Territory Management course\"\n  ]\n}\n```\n\n### Featured Projects\n```json\n{\n  \"projects\": [\n    {\n      \"name\": \"Plataforma de Remesas Escalable\",\n      \"description\": \"Aplicación móvil para envío de remesas y pagos de servicios desde USA hacia LATAM, con arquitectura VIPER y seguridad avanzada.\",\n      \"technologies\": [\"Swift\", \"UIKit\", \"VIPER\", \"JWE\"],\n      \"github_url\": null,\n      \"live_url\": null,\n      \"image_url\": null,\n      \"featured\": true\n    },\n    {\n      \"name\": \"SDK Open Banking\",\n      \"description\": \"Desarrollo de SDKs para Open Banking y PFM con integración multiplataforma y enfoque en experiencia de usuario.\",\n      \"technologies\": [\"Swift\", \"Android\", \"Open Banking\", \"SDK Development\"],\n      \"github_url\": null,\n      \"live_url\": null,\n      \"image_url\": null,\n      \"featured\": true\n    }\n  ]\n}\n```\n\n### Volunteering\n```json\n{\n  \"volunteering\": [\n    {\n      \"organization\": \"Google Developer Group (GDG)\",\n      \"role\": \"Lead Organizer\",\n      \"duration\": \"2019 - Presente\",\n      \"description\": \"Liderazgo y organización de eventos tecnológicos para la comunidad de desarrolladores.\",\n      \"impact\": \"He organizado muchos eventos técnicos y talleres para la comunidad local, impactando a cientos de desarrolladores\",\n      \"website\": \"https://developers.google.com/community/gdg\"\n    }\n  ]\n}\n```\n\n### 🎨 Themes and Customization\n```json\n{\n  \"theme\": {\n    \"default_mode\": \"auto\",\n    \"font_family\": \"Poppins\",\n    \"enable_animations\": true,\n    \"light_colors\": {\n      \"primary\": \"#374151\",\n      \"secondary\": \"#6B7280\", \n      \"accent\": \"#10B981\",\n      \"background\": \"#F9FAFB\",\n      \"surface\": \"#FFFFFF\"\n    },\n    \"dark_colors\": {\n      \"primary\": \"#4B5563\",\n      \"secondary\": \"#6B7280\",\n      \"accent\": \"#10B981\", \n      \"background\": \"#000000\",\n      \"surface\": \"#111111\"\n    }\n  }\n}\n```\n\n### 🎯 Section Control\n```json\n{\n  \"layout\": {\n    \"show_hero_section\": true,\n    \"show_about_section\": true,\n    \"show_experience_section\": true,\n    \"show_skills_section\": true,\n    \"show_projects_section\": true,\n    \"show_volunteering_section\": true,\n    \"show_education_section\": true,\n    \"show_certifications_section\": true,\n    \"show_blog_section\": true,\n    \"show_contact_section\": true,\n    \"enable_dark_mode\": true,\n    \"enable_animations\": true,\n    \"section_order\": [\n      \"hero\",\n      \"projects\",\n      \"skills\",\n      \"experience\",\n      \"education\",\n      \"certifications\",\n      \"about\",\n      \"blog\",\n      \"volunteering\",\n      \"contact\"\n    ]\n  }\n}\n```\n\n## 🔧 Environment Variables \u0026 Configuration\n\n### 🎬 Lottie Loader Configuration\n\nThe project uses a **hardcoded Lottie loader** system for reliable performance:\n\n#### Implementation\n- **Loader Type**: Lottie animation\n- **Lottie File**: `assets/lotties/loader.json`\n- **Size Configuration**: Configurable via environment variables\n\n#### Environment Setup\n\nCreate `web/.env` file:\n```env\n# Loader height/size\nLOADER_HEIGHT=250\n```\n\n#### 🎨 Lottie Assets\n\nAvailable Lottie animations in `assets/lotties/`:\n- **`loader.json`**: Main loader with dynamic color support\n- **`loader_dino.json`**: Alternative dinosaur loader\n\n#### 🔄 How It Works\n\n1. **Direct Loading**: Loads `assets/lotties/loader.json`\n2. **Dynamic Sizing**: Configurable height via `web/.env`\n3. **Theme Adaptive**: Automatic color adaptation for light/dark themes\n4. **Fallback**: Uses CircularProgressIndicator if loading fails\n\n### 🎯 SEO Configuration\n\n#### SEO Config Files\n- `assets/config/seo_config.json` - SEO metadata for your default language\n\n#### Google Analytics Integration\n```json\n{\n  \"analytics\": {\n    \"google_analytics_id\": \"G-26TNM1F3EV\",\n    \"gtag_config\": {\n      \"page_title\": \"René Sandoval - Software Engineer\",\n      \"content_group1\": \"Personal Website\", \n      \"language\": \"en\",\n      \"country\": \"MX\"\n    }\n  }\n}\n```\n\n#### HTML Template Processing\n- Uses placeholder system in `web/index.html`\n- Processed by `scripts/process-html.js` during build\n- Generates SEO-optimized HTML automatically\n\n#### ⚙️ Environment Variables (.env)\n\n**Configuration:**\n```env\n# Loader height/size\nLOADER_HEIGHT=250\n```\n\n## 🚀 Deployment\n\n### Firebase Hosting (Recommended)\n\n#### Initial Setup (One Time Only)\n\n1. **Install Firebase CLI:**\n```bash\nnpm install -g firebase-tools\n```\n\n2. **Login to Firebase:**\n```bash\nfirebase login\n```\n\n3. **Create a project in Firebase Console:**\n   - Go to [Firebase Console](https://console.firebase.google.com/)\n   - Create a new project or select existing one\n   - Enable Firebase Hosting in the project\n\n4. **Configure your local project:**\n```bash\n# List your available projects\nfirebase projects:list\n\n# Edit .firebaserc with your project ID\n{\n  \"projects\": {\n    \"default\": \"your-project-id\"\n  }\n}\n```\n\n5. **Verify configuration:**\n```bash\n# Select your project\nfirebase use your-project-id\n\n# Verify hosting sites\nfirebase hosting:sites:list\n```\n\n#### Automated Deployment\n\n**Option 1: Automated Script (Recommended)**\n```bash\nscripts/deploy.sh\n```\n\n**Option 2: Manual Commands**\n```bash\n# 1. Clean and prepare\nflutter clean\nflutter pub get\n\n# 2. Build for production\nflutter build web --release\n\n# 3. Deploy to Firebase\nfirebase deploy --only hosting\n```\n\nThe `scripts/deploy.sh` script includes:\n- ✅ Flutter and Firebase CLI verification\n- 🧹 Project cleanup (`flutter clean`)\n- 📦 Dependencies installation (`flutter pub get`)\n- 🔨 Optimized production build (`flutter build web --release`)\n- 🚀 Firebase Hosting deployment (`firebase deploy --only hosting`)\n- ✔️ Success verification\n\n#### Example URLs\n- **Console**: `https://console.firebase.google.com/project/your-project-id`\n- **Website**: `https://your-project-id.web.app`\n- **Custom domain**: Configurable in Firebase Console\n\n### Other Services\n\nCompatible with:\n- **Netlify**: Upload `build/web` after `flutter build web --release`\n- **GitHub Pages**: Configure Actions for automated deployment  \n- **Vercel**: Direct deploy from `build/web`\n\n## ⚡ Useful Commands\n\n### Development\n```bash\n# Development server\nflutter run -d chrome\n\n# With hot reload enabled\nflutter run -d chrome --hot\n\n# Debug mode with detailed information\nflutter run -d chrome --verbose\n```\n\n### Build and Testing\n```bash\n# Code analysis\nflutter analyze\n\n# Build for web (development)\nflutter build web\n\n# Build for web (production)\nflutter build web --release\n\n# Build with experimental WASM mode\nflutter build web --wasm\n```\n\n### Maintenance\n```bash\n# Clean complete project\nflutter clean\n\n# Update dependencies\nflutter pub get\n\n# Check outdated dependencies\nflutter pub outdated\n\n# Upgrade dependencies (careful)\nflutter pub upgrade\n\n# View Flutter information\nflutter doctor\n\n# View available devices\nflutter devices\n```\n\n### Firebase\n```bash\n# View projects\nfirebase projects:list\n\n# Change active project\nfirebase use project-id\n\n# View hosting sites\nfirebase hosting:sites:list\n\n# Deploy only (without build)\nfirebase deploy --only hosting\n\n# View hosting channels\nfirebase hosting:channel:list\n\n# Deploy to specific channel\nfirebase hosting:channel:deploy preview-name\n```\n\n## 🛠️ Project Structure\n\n```\nlib/\n├── main.dart                        # Application entry point\n├── models/                          # Data models\n│   ├── blog_post.dart               # Blog post model for RSS integration\n│   └── website_config.dart          # Main configuration and models\n├── services/                        # Application services\n│   ├── config_service.dart          # Configuration loading wrapper\n│   ├── localization_service.dart    # Multi-language localization service\n│   ├── theme_service.dart           # Dynamic theme generation\n│   ├── blog_service.dart            # Blog API integration (Medium RSS)\n│   ├── env_service.dart             # Environment variables service\n│   ├── preferences_service.dart     # User preferences management\n│   └── meta_service.dart            # Dynamic meta tags service\n├── screens/\n│   └── website_screen.dart          # Main website screen\n├── widgets/                         # Modular UI components\n│   ├── navigation_bar.dart          # Responsive navigation bar\n│   ├── hero_section.dart            # Introduction section\n│   ├── about_section.dart           # About me section\n│   ├── experience_section.dart      # Professional experience\n│   ├── skills_section.dart          # Technical skills\n│   ├── projects_section.dart        # Featured projects\n│   ├── volunteering_section.dart    # Volunteer work\n│   ├── education_section.dart       # Academic background\n│   ├── certifications_section.dart  # Technical certifications\n│   ├── blog_section.dart            # Latest blog articles\n│   ├── contact_section.dart         # Contact information\n│   ├── footer.dart                  # Page footer\n│   ├── scroll_animated_section.dart # Scroll animations\n│   ├── theme_selector_dropdown.dart # Theme selector (desktop)\n│   ├── theme_selector_hover.dart    # Theme selector with hover effects\n│   ├── theme_transition_overlay.dart# Theme switching animation\n│   ├── language_selector.dart       # Language selector (mobile)\n│   └── language_selector_hover.dart # Language selector with hover effects\n└── utils/                           # Utility classes\n    ├── responsive_utils.dart        # Responsive design utilities\n    ├── elevation_utils.dart         # Material elevation and shadow utilities\n    ├── app_logger.dart              # Centralized logging system\n    └── theme_types.dart             # Custom theme type definitions\n\nassets/\n├── config/\n│   ├── website_config_default.json  # Default language configuration\n│   ├── website_config_english.json  # English configuration\n│   └── seo_config.json              # SEO metadata and structured data\n└── lotties/                         # Lottie animations\n    ├── loader.json                  # Main loader animation\n    └── loader_dino.json             # Alternative dinosaur loader\n\nweb/\n├── .env                            # Environment variables (optional)\n├── images/                         # Static images served directly\n│   └── logos/                      # Site logos (light/dark versions)\n│       ├── logo-light.png          # Light theme logo\n│       └── logo_dark.png           # Dark theme logo\n├── icons/                          # PWA icons and favicon\n├── js/                             # JavaScript files\n├── index.html                      # HTML template with SEO placeholders\n├── robots.txt                      # Search engine crawler instructions\n├── sitemap.xml                     # Site structure for SEO\n└── ...                             # Other web assets\n\nscripts/\n├── deploy.sh                       # Automated deployment script\n└── process-html.js                 # HTML processing and minification\n\nOther Files:\n├── Makefile                        # Development and deployment commands\n├── CLAUDE.md                       # Development guidelines for AI assistance\n├── firebase.json                   # Firebase hosting configuration\n├── .firebaserc                     # Firebase project configuration\n├── package.json                    # Node.js dependencies for HTML processing\n└── pubspec.yaml                    # Flutter dependencies\n```\n\n\n## 🎨 Advanced Features\n\n### 🌍 Dual-language Support\n- **Dynamic selector**: Switch between your default language and English without reloading\n- **Separate configuration**: Two independent JSON files (default + English)\n- **Complete localization**: All texts, labels and content\n- **Flexible default**: Default language can be any language you choose (Spanish, Portuguese, Ukrainian, Russian, etc.)\n- **Persistence**: Remembers selected language\n\n### 🌙 Theme System\n- **3 available modes**: Light, Dark, Auto (system)\n- **Smooth transitions**: Fluid animations between themes\n- **Customizable colors**: Complete palette configurable via JSON\n- **Responsive**: Adapted for all screen sizes\n\n### 📱 Responsive Design\n- **Mobile**: Optimized navigation with hamburger menu\n- **Tablet**: Hybrid layout with adapted navigation\n- **Desktop**: Full navigation in top bar\n- **Animations**: Scroll effects and transitions\n\n### 🎯 Smart Navigation\n- **Smooth scroll**: Automatic navigation between sections\n- **Active indicator**: Highlights current section\n- **Keyboard**: Support for keyboard navigation\n- **Deep anchors**: URLs that point to specific sections\n\n## 🔧 Advanced Customization\n\n### Granular Section Control\nEach section can be enabled/disabled individually:\n\n```json\n{\n  \"layout\": {\n    \"show_hero_section\": true,\n    \"show_about_section\": true,\n    \"show_experience_section\": true,\n    \"show_skills_section\": true,\n    \"show_projects_section\": true,\n    \"show_volunteering_section\": true,\n    \"show_education_section\": true,      \n    \"show_certifications_section\": true,\n    \"show_blog_section\": true,\n    \"show_contact_section\": true\n  }\n}\n```\n\n### Customizable Order\nYou can change the order of sections:\n\n```json\n{\n  \"section_order\": [\n    \"hero\",      // Always first\n    \"projects\",  // Highlight your work\n    \"skills\",    // Show your abilities\n    \"experience\",// Your trajectory\n    \"education\", // Your education\n    \"certifications\", // Your certifications\n    \"about\",     // Your personal story\n    \"blog\",      // Your publications\n    \"volunteering\", // Your social impact\n    \"contact\"    // Always last\n  ]\n}\n```\n\n## 📝 Blog Integration\n\n### Supported Platforms\nThe website supports multiple blog platforms:\n\n**Medium**\n- RSS URL: `https://medium.com/feed/@your-username`\n- Simple configuration with username only\n\n**Dev.to**  \n- RSS URL: `https://dev.to/feed/your-username`\n- Enable by setting `\"enabled\": true` in sources\n\n**Multiple Sources**\n- Support for multiple blog platforms simultaneously\n- Configurable priority and limits per source\n- Smart fallback when sources fail\n- Customizable error messages\n\n### Configuration Features\n- **Smart fallback**: Shows alternative content if RSS fails\n- **Configurable limit**: Control how many articles to show\n- **Custom texts**: All messages and labels are configurable\n- **Extensible**: Easily add other RSS-compatible platforms\n\n## 🔧 Troubleshooting\n\n### Common Problems\n\n#### Build Errors\n```bash\n# Error: Could not resolve Flutter SDK path\nflutter doctor  # Verify installation\n\n# Error: Outdated dependencies\nflutter clean\nflutter pub get\n\n# Error: Build issues - use different optimization\nflutter build web --release\n# or for WebAssembly (experimental)\nflutter build web --wasm\n```\n\n#### Environment Issues\n```bash\n# .env file not found (normal)\ncp .env.example web/.env\n\n# Permission error in scripts/deploy.sh\nchmod +x scripts/deploy.sh\n\n# Firebase project not found\nfirebase projects:list\nfirebase use your-project-id\n```\n\n#### Development Issues\n```bash\n# Hot reload doesn't work\nflutter run -d chrome --hot\n\n# Port in use - specify custom port\nflutter run -d chrome --web-hostname localhost --web-port 8080\n\n# Cache issues\nflutter clean\nflutter pub get\nflutter pub deps\n```\n\n#### Performance Issues\n```bash\n# Slow build - use profile mode\nflutter run -d chrome --profile\n\n# Production build\nflutter build web --release\n\n# WebAssembly compilation (experimental)\nflutter build web --wasm\n```\n\n### 📋 Pre-Deploy Checklist\n\nBefore deploying, verify:\n\n- ✅ `flutter analyze` passes without errors\n- ✅ Environment variables configured (if using `.env`)\n- ✅ URLs in configuration are accessible\n- ✅ Images are in `web/images/` and assets in `assets/` folders\n- ✅ Firebase project configured correctly\n- ✅ `build/web` is generated without errors\n\n## 🤝 Contributing\n\n1. **Fork** the project\n2. **Create** a feature branch (`git checkout -b feature/new-feature`)\n3. **Commit** changes (`git commit -am 'Add new feature'`)\n4. **Push** to the branch (`git push origin feature/new-feature`)\n5. **Open** a Pull Request\n\n### Guidelines\n\n- Follow existing code conventions\n- Add tests for new features\n- Update documentation when necessary\n- Use descriptive commits in English\n\n## 📄 License\n\nThis project is under the MIT License. See [LICENSE](LICENSE) for details.\n\n## 🆘 Support\n\n- 📖 Complete documentation in the README\n- 🐛 Report bugs in [Issues](https://github.com/resand/personal-website-flutter/issues)\n- 💡 Request features with the `enhancement` tag\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with ❤️ with Flutter by \u003ca href=\"https://github.com/resand\"\u003eRené\u003c/a\u003e\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fresand%2Fpersonal-website-flutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fresand%2Fpersonal-website-flutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fresand%2Fpersonal-website-flutter/lists"}