{"id":23649634,"url":"https://github.com/andresilvase/tree-view","last_synced_at":"2025-11-13T16:30:16.965Z","repository":{"id":255768358,"uuid":"852979634","full_name":"andresilvase/tree-view","owner":"andresilvase","description":"A new Flutter project designed to render companies' assets disposition in a tree view structure interface.","archived":false,"fork":false,"pushed_at":"2024-09-29T21:45:32.000Z","size":7855,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-28T15:39:48.910Z","etag":null,"topics":["asset-management-app","flutter-application","flutter-challenge","mobile-app-ui","performance-optimization","software-engineering","tech-challenge","tree-view-app"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andresilvase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-09-05T19:04:14.000Z","updated_at":"2024-09-29T21:45:35.000Z","dependencies_parsed_at":"2024-12-18T16:30:00.157Z","dependency_job_id":null,"html_url":"https://github.com/andresilvase/tree-view","commit_stats":null,"previous_names":["andredrummer/tree-view","andresilvase/tree-view"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresilvase%2Ftree-view","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresilvase%2Ftree-view/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresilvase%2Ftree-view/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresilvase%2Ftree-view/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andresilvase","download_url":"https://codeload.github.com/andresilvase/tree-view/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239605123,"owners_count":19666998,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["asset-management-app","flutter-application","flutter-challenge","mobile-app-ui","performance-optimization","software-engineering","tech-challenge","tree-view-app"],"created_at":"2024-12-28T15:39:52.723Z","updated_at":"2025-11-13T16:30:16.880Z","avatar_url":"https://github.com/andresilvase.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tractian Challenge - Tree View App\n\n**Choose your language**: 🇧🇷 \u003ca href=\"https://github.com/AndreDrummer/tree-view/blob/main/PTREADME.md\"\u003eBrazilian Portuguese\u003c/a\u003e | 🇺🇸 \u003ca href=\"https://github.com/AndreDrummer/tree-view/blob/main/README.md\"\u003eAmerican English\u003c/a\u003e\n\nA new Flutter project designed to render companies' assets disposition in a tree view structure interface.\n\nThe app does not use ANY external library to build the tree but nevertheless esteems the performance and user experience.\n\n## Table of Contents\n\n- [Presenting Video](#presenting-video)\n- [Screenshots](#screenshots)\n- [Next steps](#next-steps)\n\n\n## Presenting Video\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://www.youtube.com/watch?v=0psuA54bVgQ\" target=\"_blank\"\u003e\n    \u003cimg src=\"screenshots/youtube-thumbnail.png\" alt=\"Watch the video\" width=\"560\"/\u003e\n  \u003c/a\u003e\n  \u003cp\u003e\u003cstrong\u003eBuilding a Custom Tree View for Asset Management | Mobile Software Engineer Challenge\u003c/strong\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n\n\n\n\n\n## Screenshots\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" colspan=\"4\"\u003eSplashscreen\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" colspan=\"4\"\u003eLoading states\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/splash-wait.png\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/splash-lets-get-started.png\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/splash-is-great.png\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/splash-continue.png\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" colspan=\"4\"\u003eError states\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e    \n    \u003ctd align=\"center\"\u003e\u003cimg src=\"screenshots/connection-error.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"screenshots/server-error.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"screenshots/unexpected-error.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e           \n    \u003ctd align=\"center\"\u003e\u003cimg src=\"screenshots/unexpected-error.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e           \n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" colspan=\"4\"\u003eHome\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" colspan=\"4\"\u003eCompany List Screen\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/home-light.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/error-home-light.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/home-dark.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/error-home-dark.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e  \n  \u003c/tr\u003e \n\u003c/table\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" colspan=\"4\"\u003eAssets View\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" colspan=\"4\"\u003eLight Mode\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/no-filter-light.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/energy-filter-light.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/critical-filter-light.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/text-filter-light.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e  \n  \u003c/tr\u003e \n  \u003ctr\u003e\n    \u003ctd align=\"center\" colspan=\"4\"\u003eDark Mode\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/no-filter-dark.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/energy-filter-dark.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/critical-filter-dark.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"screenshots/text-filter-dark.jpeg\" alt=\"Splashscreen\" width=\"200\"/\u003e\u003c/td\u003e  \n  \u003c/tr\u003e \n\u003c/table\u003e\n\n\n## Next Steps\n\n#### Caching Mechanisim\n\nIt would be great to have a mechanism to cache the downloaded company data to live during a pre-established time. Today, the time to pull down this data is not a problem, but it would allow the offline use of the app.\n\n#### Better management device connection state\n\nFor simplicity, this project poorly handles the HTTP states. It can sharpened by manipulating the state of the device's internet connection so that when it doesn't have a connection, not even try to pull data.\n\n#### Testings Overall\n\nUntil the date of publishing, this project does not have any piece of testing code of kind unity or integration.\n\n#### Internationalization\n\nTo target a global public, it's fundamental to have an application that speaks to them in their mother language. The ability to communicate is one of the most valuable in a so fast-paced world and a company that does it well is in a head start over its competitors.\n\n#### Memoization\n\nTo speed up the tree mout time, memoization could be used by passing as argument the company id to trigger the cache. This way, the code would not even enter into the Isolation step making the assets visualization view to be presented more radpidly.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandresilvase%2Ftree-view","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandresilvase%2Ftree-view","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandresilvase%2Ftree-view/lists"}