{"id":20636227,"url":"https://github.com/lucasmc64/ecoleta","last_synced_at":"2026-04-12T17:44:59.737Z","repository":{"id":56217012,"uuid":"268917513","full_name":"lucasmc64/ecoleta","owner":"lucasmc64","description":"Ecoleta arrives to help people find collection points for recycling efficiently.","archived":false,"fork":false,"pushed_at":"2021-07-11T18:49:38.000Z","size":3265,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-16T08:36:14.732Z","etag":null,"topics":["nextlevelweek","nextlevelweek1","nodejs","react-native","reactjs","rocketseat","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/lucasmc64.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}},"created_at":"2020-06-02T22:00:34.000Z","updated_at":"2021-07-11T18:49:41.000Z","dependencies_parsed_at":"2022-08-15T14:50:43.748Z","dependency_job_id":null,"html_url":"https://github.com/lucasmc64/ecoleta","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lucasmc64/ecoleta","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasmc64%2Fecoleta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasmc64%2Fecoleta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasmc64%2Fecoleta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasmc64%2Fecoleta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucasmc64","download_url":"https://codeload.github.com/lucasmc64/ecoleta/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasmc64%2Fecoleta/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27524886,"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","status":"online","status_checked_at":"2025-12-05T02:00:07.920Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["nextlevelweek","nextlevelweek1","nodejs","react-native","reactjs","rocketseat","typescript"],"created_at":"2024-11-16T15:09:43.956Z","updated_at":"2025-12-05T17:02:01.240Z","avatar_url":"https://github.com/lucasmc64.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Ecoleta](readme-images/cover.png)\n\n# :recycle: Ecoleta\n\n\u003e This was a project developed during Next Level Week #01 (Track: Booster).\n\n## :rocket: What is Next Level Week?\n\nThe [NLW](https://nextlevelweek.com/) is a week programmed by [Rocketseat](https://rocketseat.com.br/) in which, through classes, lives, practice and with support from the community, it will help you take the next step in your evolution as a dev.\n\n## :mountain: What is the difference between the Booster and Starter tracks?\n\nThis edition of NLW offers two different fronts according to the student's knowledge:\n\n- The “Starter” path is for those who are just beginning to learn application development;\n- The \"Booster\" path is for those who are willing to go a step further and who already have basic development concepts. \n\n## :dart: Goal\n\nConcerned about environmental pollution and how it will impact our lives in the future, Ecoleta arrives to help people find collection points for recycling efficiently, in order to avoid the waste disposal in a wrong way and promote the reuse of components.\n\n## :scroll: Some details\n\n- The back-end is built with Node.JS, Express and SQLite;\n- The font-end is built with the ReactJS framework.\n- The mobile is built with the React Native framework and the Expo platform.\n\n## :thinking: How do I run the project on my machine?\n\nThe first step is to clone the project, either via terminal or GitHub Desktop, or even by downloading the compressed file (.zip). After that, go ahead.\n\n### :hammer_and_wrench: Requirements\n\n- [Node.JS](https://nodejs.org/).\n- (Optional) [Yarn](https://yarnpkg.com/).\n\n### :mag: Installing dependencies\n\nWith Node.JS installed, access each of the directories (**server**, **web** and **mobile**) via terminal and run the `npm install` command. If you prefer to use Yarn, just run the command `yarn`.\n\n### :goggles: Running the Back-end\n\nAccess the **server** directory via terminal, run the command `npm run dev` or ` yarn dev` and a message similar to the following will appear for you:\n\n![Result of the command in the terminal](readme-images/backend.png)\n\n\u003e If this was not the result, check that the requirements and previous steps have been met.\n\n### :sparkles: Running the Front-end\n\nAccess the **web** directory via terminal, run `npm start` or `yarn start`. A message similar to the following will appear for you:\n\n![Result of the command in the terminal](readme-images/frontend.png)\n\nAutomatically, in your default browser, a tab will open for the link http://localhost:3000/ (where the project will be running).\n\n\u003e If this was not the result, check that the requirements and previous steps have been fulfilled.\n\n### :iphone: Running Mobile\n\n#### :hammer_and_wrench: Requirements\n\n- Expo app: ([Android](https://play.google.com/store/apps/details?id=host.exp.exponent) - [iOS](https://apps.apple.com/br/app/expo-client/id982107779)).\n- [Expo Command Line](https://expo.io/learn).\n\n#### :hiking_boot: Steps\n\nAccess the **mobile** directory via terminal and run `npm start` or ` yarn start`.\n\nThen, a message similar to the following will appear for you:\n\n![Expo-cli terminal](readme-images/mobile.png)\n\nAutomatically, in your default browser, a tab will open for the link http://localhost:9002/ with the following screen:\n\n![Expo on browser](readme-images/browser-expo.png)\n\nAs you can see, there is a QRCode both on the terminal and on the website that opened (they are the same). Now, open the Expo app on your smartphone, scan the QRCode and wait until the project is synchronized.\n\n\u003e If this was not the result, check that the requirements and previous steps have been fulfilled.\n### :brain: A few small details...\n\n#### :game_die: Database\n\nWe have a few more things to do. As my intention in this project was purely educational, I uploaded the project together with my test database.\n\nIdeally, before you run the project on your computer, do the following steps:\n\n1. Open the folder *server/src/database/* and delete the archive *database.sqlite*.\n2. Open the folder *server/uploads/* and delete all files that do not have the extension *.svg*.\n3. Open the terminal in the folder *server* and run the following command: `npm run knex:migrate` or `yarn knex:migrate`.\n4. Still in the open terminal in the folder *server* and run the following command: `npm run knex:seed` or `yarn knex:seed`.\n\n#### :triangular_flag_on_post: Switching to your IP \n\nAs we are running the project locally, the routes are based on the computer's current IP, so it may be necessary to change them. But how do I know my IP of localhost? One way is, when you run the *mobile* project, when you open the browser window, look at the address on the left side of the site or in the browser bar:\n\n![IP Address](readme-images/ip.png)\n\nAbove, in the blue rectangle, is your current local IP.\n\nFollow the steps for replacement:\n\n##### :goggles: Back-end\n\nAccess the *server* folder and change the IP in the following files:\n\n- *server/src/controllers/ItemsController.ts* - line 11.\n- *server/src/controllers/PointsController.ts* - line 15, line 33.\n\n##### :sparkles: Front-end\n\nThere are no lines that need to be changed.\n\n##### :iphone: Mobile\n\nAccess the *mobile* folder and change the IP in the following files:\n\n* *mobile/src/services/api.ts* - line 4.\n\n## :tada: If everything went well...\n\nNow you are running the project beautifully!\n\n## :memo: License\n\nThis project is under the MIT license. See the [LICENSE](LICENSE) for more information.\n\n---\n\nMade with :white_heart: by Lucas Coutinho :wave: [Get in touch!](https://www.linkedin.com/in/lucasmc64/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasmc64%2Fecoleta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucasmc64%2Fecoleta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasmc64%2Fecoleta/lists"}