{"id":21424294,"url":"https://github.com/lucasbecker/ecoleta","last_synced_at":"2026-04-11T07:02:33.456Z","repository":{"id":42810611,"uuid":"268570373","full_name":"lucasbecker/ecoleta","owner":"lucasbecker","description":"Projeto desenvolvido durante a Next Level Week #1 da Rocketseat utilizando React, React Native, Expo e NodeJS.","archived":false,"fork":false,"pushed_at":"2023-01-26T20:47:31.000Z","size":17019,"stargazers_count":0,"open_issues_count":27,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-16T20:45:30.886Z","etag":null,"topics":["css","html","nodejs","react","react-native","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/lucasbecker.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-01T16:11:13.000Z","updated_at":"2020-10-16T21:36:20.000Z","dependencies_parsed_at":"2023-02-14T23:46:56.454Z","dependency_job_id":null,"html_url":"https://github.com/lucasbecker/ecoleta","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lucasbecker/ecoleta","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasbecker%2Fecoleta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasbecker%2Fecoleta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasbecker%2Fecoleta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasbecker%2Fecoleta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucasbecker","download_url":"https://codeload.github.com/lucasbecker/ecoleta/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasbecker%2Fecoleta/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31671630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T17:19:37.612Z","status":"online","status_checked_at":"2026-04-11T02:00:05.776Z","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":["css","html","nodejs","react","react-native","typescript"],"created_at":"2024-11-22T21:20:53.577Z","updated_at":"2026-04-11T07:02:33.440Z","avatar_url":"https://github.com/lucasbecker.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![](https://github.com/lucasbecker/next-level-week/blob/master/header.png?raw=true)\n\n![](https://img.shields.io/badge/npm-6.14.4-34CB79) ![](https://img.shields.io/badge/node.js-12.17.0-6633CC) ![](https://img.shields.io/badge/web-react-34CB79) ![](https://img.shields.io/badge/mobile-react--native-6633CC)\n\nO projeto intitulado \"Ecoleta\" foi inicialmente desenvolvido durante a primeira [Next Level Week](https://nextlevelweek.com/) da [Rocketseat](https://rocketseat.com.br/) com o intuito de aprender na prática ferramentas e conceitos para acelerar a evolução como desenvolvedor. O projeto foi desenvolvido utilizando as tecnologias NodeJS, React, React-Native e outras, de modo que foi contruido um servidor API RESTful e banco de dados SQLite sendo alimentado por dados fornecidos através de uma aplicação web e tendo os seus dados acessados através de uma aplicação mobile. \n\n## Objetivo\n\nO Ecoleta é um marketplace de coleta de resíduos que ajuda pessoas a encontrarem pontos de coleta de forma eficiente. O seu objetivo é conectar entidades que coletam resíduos que precisam de descartes específicos a pessoas que possuem esses resíduos para descarte. Assim, ajudando pessoas a econtrarem pontos de coleta de forma eficiente e reduzindo o descarte indevido de resíduos potencialmente perigosos como pilhas, baterias e lâmpadas.\n\n## Tecnologias\nA proposta do projeto era todas as tecnologias ficarem \"dentro\" do JavaScript, assim, esse projeto foi desenvolvido utilizando as tecnologias listadas a seguir em conjunto do TypeScript.\n\n### Server\n* Node.js, Express, KnexJS, SQLite3, Celebrate, Multer, CORS, Hapi/Joi e outros.\n\n### Web\n* React, React Router Dom, React Dropzone, React Icons, React Leaflet, Leaflet, Axios e outros.\n\n### Mobile\n* React-Native, React Native Maps, React Native SVG, React Navigation, Expo, Expo Google Fonts, Expo Constants, Expo Location, Expo Mail Composer, Axios e outros.\n\n## Funcionalidades da API\n- [X] Cadastrar os pontos de coleta.\n- [X] Listar os itens de coleta.\n- [X] Listar pontos de coleta e filtrar por estado, cidade ou item.\n- [X] Listar um ponto de coleta específico. \n\n## Comandos Para Execução\n#### Iniciar server\n```sh\nnpm run dev\n```\n\n#### Migrar banco de dados e iniciar com dados padrões\n```sh\nnpm run knex:migrate\n\nnpm run knex:seed\n```\n\n#### Iniciar aplicação web\n```sh\nnpm start\n```\n\n#### Iniciar aplicação mobile\n```sh\nexpo start\n```\n\n## Proximos Passos\nDesafios propostos:\n- [ ] Tela de confimação após cadastro do ponto de coleta.\n- [ ] Opção de atualizar e remover cadastro de pontos de cadastro.\n- [ ] Tornar os inputs da Home da aplicação mobile semelhantes aos selects do formulario de cadastro de pontos de coleta da aplicação web utilizando a API do IBGE e o react-native-picker-select.\n- [ ] Implementar o fileFilter do multer para escolher os tipos de arquivos permitidos no cadastro de pontos de coelta.\n\n## Licença\nEsse projeto está sob a licença MIT. Veja o arquivo ``LICENSE`` para mais informações.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasbecker%2Fecoleta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucasbecker%2Fecoleta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasbecker%2Fecoleta/lists"}