{"id":21486044,"url":"https://github.com/felipecastrosales/site","last_synced_at":"2026-03-06T10:05:18.990Z","repository":{"id":54637186,"uuid":"447036502","full_name":"felipecastrosales/site","owner":"felipecastrosales","description":"🏆 My Website made with Flutter","archived":false,"fork":false,"pushed_at":"2025-06-15T14:21:34.000Z","size":16979,"stargazers_count":27,"open_issues_count":1,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-07T01:45:54.580Z","etag":null,"topics":["cross-platform","dart","firebase","firebase-hosting","flutter","flutter-apps","flutter-demo","flutter-examples","flutter-portfolio","flutter-ui","flutter-web","hosting","links","linktree","portfolio","portfolio-website","social","social-links","social-media","website"],"latest_commit_sha":null,"homepage":"https://felipecastrosales.com/","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/felipecastrosales.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":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":"2022-01-12T01:26:55.000Z","updated_at":"2025-06-30T07:22:19.000Z","dependencies_parsed_at":"2024-03-10T00:31:47.173Z","dependency_job_id":"09d08a69-ac85-473f-ba74-e52074b1c0d0","html_url":"https://github.com/felipecastrosales/site","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/felipecastrosales/site","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipecastrosales%2Fsite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipecastrosales%2Fsite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipecastrosales%2Fsite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipecastrosales%2Fsite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/felipecastrosales","download_url":"https://codeload.github.com/felipecastrosales/site/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipecastrosales%2Fsite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30171657,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["cross-platform","dart","firebase","firebase-hosting","flutter","flutter-apps","flutter-demo","flutter-examples","flutter-portfolio","flutter-ui","flutter-web","hosting","links","linktree","portfolio","portfolio-website","social","social-links","social-media","website"],"created_at":"2024-11-23T13:18:45.714Z","updated_at":"2026-03-06T10:05:18.919Z","avatar_url":"https://github.com/felipecastrosales.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\u003ca href=\"https://felipecastrosales.com\"\u003eMy Portfolio 🔥\u003c/a\u003e\u003c/h1\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](.github/docs/CONTRIBUTING.md)\n[![License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE)\n[![codecov](https://codecov.io/gh/felipecastrosales/site/branch/feature/new_version/graph/badge.svg?token=3T6SS801FW)](https://codecov.io/gh/felipecastrosales/site)\n\n\u003c/div\u003e\n\n## 📋 Topics\n\n- [📋 Topics](#-topics)\n- [📋 About](#-about)\n- [🎨 Layout](#-layout)\n- [🚀 Technologies and Tools](#-technologies-and-tools)\n- [🤯 Challenges and Learnings](#-challenges-and-learnings)\n- [🤔 How to Use](#-how-to-use)\n- [🤩 Want to do](#-want-to-do)\n- [🤝 Contributing](#-contributing)\n- [📝 License](#-license)\n\n---\n\n## 📋 About\n\nWith a single codebase, you can access this example from mobile, web and even desktop.\n\nI'm sure this will be one of the best examples of the Flutter Web project in a completely open-source way and with the amount of features that exist.\n\n---\n\n## 🎨 Layout\n\n\u003cp align=\"center\"\u003e\n      You can access the website at \u003ca href=\"https://felipecastrosales.com\"\u003efelipecastrosales.com\u003c/a\u003e and see the result of the project; it is adapted for mobiles, tablets and desktops. \n\n   \u003cp align=\"center\"\u003e\n      \u003cimg alt=\"Website Demo\" title=\"Website Demo\" src=\".github/images/cover.png\" /\u003e\n   \u003c/p\u003e\n\n   \u003cp align=\"center\"\u003e\n      The layout was developed by \u003ca href=\"https://www.instagram.com/karoldepaulasm/\"\u003eKarol de Paula\u003c/a\u003e and me, and you can access it on \u003ca href=\"https://www.figma.com/file/Dgq4C5dLgtWK2sb0KebmEZ/%40felipecastrosales---Portfolio?type=design\u0026node-id=0%3A1\u0026mode=design\u0026t=RTugDZN5S2knn3Nk-1\"\u003eFigma\u003c/a\u003e.\n   \u003c/p\u003e\n\n---\n\n## 🚀 Technologies and Tools\n\n- Extremely Responsive Design using [`LayoutBuilder`](https://api.flutter.dev/flutter/widgets/LayoutBuilder-class.html) and other various strategies;\n- Dependency Injection with [`GetIt`](https://pub.dev/packages/get_it);\n- Use of [`scrollable_positioned_list`](https://pub.dev/packages/scrollable_positioned_list) to perform the \"scroll to index\" feature;\n- Fancy and custom pre-load, using HTML and CSS;\n- Firebase ecosystem:\n  - [`firebase_analytics`](https://pub.dev/packages/firebase_analytics);\n  - [`firebase_core`](https://pub.dev/packages/firebase_core);\n  - [`firebase_remote_config`](https://pub.dev/packages/firebase_remote_config);\n  - [`firebase_core_platform_interface`](https://pub.dev/packages/firebase_core_platform_interface) - for tests.\n- Tests:\n  - Unitary, Widgets and Integration Test;\n  - The current coverage is 79.5% (PRs are welcome to increase this value);\n  - All of them using [`mocktail`](https://pub.dev/packages/mocktail).\n- Internationalization:\n  - With support to 3 languages: English, Portuguese and Spanish;\n- Feature to send an email to the user using [`AWS SES`](https://aws.amazon.com/ses/), [`AWS Lambda`](https://aws.amazon.com/lambda/) and [`AWS API Gateway`](https://aws.amazon.com/api-gateway/);\n- Settings:\n  - Firebase Hosting;\n  - Google Domains;\n  - Google Analytics;\n  - Firebase Remote Config.\n- Use of good practices in general, such as:\n  - [`Clean Code`](https://www.google.com/search?q=Clean+Code+book\u0026rlz=1C5CHFA_enBR1041BR1041\u0026sxsrf=AJOqlzWiUKnodTrErtwjEw0mr60aKlAQ9A%3A1679360561304\u0026ei=MQIZZICZEpDM1sQPqrSdsAI\u0026ved=0ahUKEwjA9dLN6ev9AhUQppUCHSpaByYQ4dUDCA8\u0026uact=5\u0026oq=Clean+Code+book\u0026gs_lcp=Cgxnd3Mtd2l6LXNlcnAQAzIFCC4QgAQyBQgAEIAEMgYIABAHEB4yBggAEAcQHjIGCAAQBxAeMgYIABAHEB4yBggAEAcQHjIICAAQBxAeEAoyBggAEAcQHjIGCAAQBxAeOgoIABBHENYEELADOgcIABCwAxBDOg0IABDkAhDWBBCwAxgBOgwILhDIAxCwAxBDGAJKBAhBGABQnQZYnQZg7wdoAXABeACAAaMBiAGjAZIBAzAuMZgBAKABAqABAcgBEcABAdoBBggBEAEYCdoBBggCEAEYCA\u0026sclient=gws-wiz-serp);\n  - [`Clean Architecture`](https://www.google.com/search?q=Clean+Architecture+book\u0026rlz=1C5CHFA_enBR1041BR1041\u0026sxsrf=AJOqlzWTbx1VkaRMx9Y0pkUmhUFVrdPbew%3A1679360551842\u0026ei=JwIZZKnyMuLf1sQP0-y2MA\u0026ved=0ahUKEwjpoZHJ6ev9AhXir5UCHVO2DQYQ4dUDCA8\u0026uact=5\u0026oq=Clean+Architecture+book\u0026gs_lcp=Cgxnd3Mtd2l6LXNlcnAQAzIFCC4QgAQyCAgAEIAEEMsBMggIABCABBDLATIICAAQgAQQywEyCAgAEIAEEMsBMggIABCABBDLATIGCAAQFhAeMgYIABAWEB4yBggAEBYQHjIGCAAQFhAeOgoIABBHENYEELADOgcIABCwAxBDOgUIABCABEoECEEYAFC5BVi2CmC4DGgCcAF4AIABnwGIAeAEkgEDMC40mAEAoAEByAEJwAEB\u0026sclient=gws-wiz-serp);\n  - [`SOLID principles`](https://www.google.com/search?q=SOLID+principles\u0026rlz=1C5CHFA_enBR1041BR1041\u0026oq=SOLID+principles\u0026aqs=chrome..69i57j69i60j69i61.152j0j4\u0026sourceid=chrome\u0026ie=UTF-8);\n  - [`Naming Cheatsheet`](https://github.com/kettanaito/naming-cheatsheet);\n  - [`dart_code_metrics`](https://pub.dev/packages/dart_code_metrics) - for code analysis;\n  - [`flutter_lints`](https://pub.dev/packages/flutter_lints) - for linting.\n- CI / CD configurations inside [`workflows` folder](.github/workflows/).\n- Among other various packages and internal resources. 🔥\n\n---\n\n## 🤯 Challenges and Learnings\n\nChallenges are always an opportunity for growth, and in this project that became even more real. Making something from scratch, where development was perfected from start to finish - with lots of continual tweaks, for the better. One of the main ones was precisely to adjust all these behaviours for the most varied platforms, to work with breakpoints and to guarantee the best UI and UX for the project.\n\nOne thing I realized was that Flutter Web still has a lot to evolve, but id does very well it proposes ([see here](https://docs.flutter.dev/development/platform-integration/web/faq#what-scenarios-are-ideal-for-flutter-on-the-web)). One of the main ones that still annoys me a little is the loading and rendering speed of the elements (there are some pre-load strategies, but that could be better and clearer IMHO.\n\nI feel that the project can evolve a lot, and for that reason I was very carefully with its development. For it to be simple, scalable and capable of any developer, of any level, being able to use and understand it. Also, I'll always be on the lookout for issues and PRs to improve it. 🚀\n\nThis project took me out of my comfort zone, and I'm very happy with the result. Also, releasing it to the community did me a lot of good. Let's grow together, because the **Forge is Daily**. 🏆\n\n---\n\n## 🤔 How to Use\n\nFirst of all, configure the Flutter development environments, see \u003chttps://flutter.dev/docs/get-started/install\u003e.\n\n- Clone this repository:\n`$ git clone https://github.com/felipecastrosales/site`\n\n- Enter in directory:\n`$ cd site`\n\n- Open in your favorite editor (e.g. VSCode):\n`$ code .`\n\n- For install dependencies:\n`$ flutter pub get`\n\n- Run the app:\n`$ flutter run`\n\n---\n\n## 🤩 Want to do\n\nIf you want to do this project with yours informations and datas, see the [Want To Do](.github/docs/WANTTODO.md).\n\n---\n\n## 🤝 Contributing\n\n- Fork this repository;\n- Create a branch with your feature: git checkout -b my-feature;\n- Commit your changes: git commit -m 'feat: My new feature';\n- Push your branch: git push origin my-feature.\n- Make a pull request, describing the changes you made and await approval.\n- You can also make suggestions by opening an issue, reporting bugs or requesting new features.\n\nIf you plan to contribute even more, see the [Contribution Guide](.github/docs/CONTRIBUTING.md).\n\nIf you want to know more about the Contributors section, see the [Contributors](.github/docs/CONTRIBUTORS.md).\n\nSee [Changelog](.github/docs/CHANGELOG.md).\n\n---\n\n## 📝 License\n\n\u003cp align=\"center\"\u003e\n   This repository is under MIT license. You can see the \u003ca href=\"https://github.com/felipecastrosales/site/blob/master/LICENSE\"\u003eLICENSE\u003c/a\u003e file for more details.\n\n   Please, avoid any usage from my keys and datas. 🚀\n\u003c/p\u003e\n\n---\n\n\u003eThis project was developed with ❤️ by **[@Felipe Sales](https://www.linkedin.com/in/felipecastrosales/)**, with [Karol de Paula](https://www.instagram.com/karoldepaulasm/).\n\nIf it helped you, give ⭐, contribute, it will help me too.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n[![Linkedin Badge](https://img.shields.io/badge/-Felipe%20Sales-292929?style=flat-square\u0026logo=Linkedin\u0026logoColor=white\u0026link=https://www.linkedin.com/in/felipecastrosales/)](https://www.linkedin.com/in/felipecastrosales/)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelipecastrosales%2Fsite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelipecastrosales%2Fsite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelipecastrosales%2Fsite/lists"}