{"id":18602923,"url":"https://github.com/jeffersonribeiro/react-nodejs-mongodb-crud","last_synced_at":"2026-02-12T02:37:20.890Z","repository":{"id":37413156,"uuid":"133609015","full_name":"jeffersonRibeiro/react-nodejs-mongodb-crud","owner":"jeffersonRibeiro","description":"👨‍💻 Fullstack web app built with MongoDB, NodeJs, React and Redux. Features: Protected routes client/server side, MaterialUI layout","archived":false,"fork":false,"pushed_at":"2022-12-22T07:52:52.000Z","size":1375,"stargazers_count":99,"open_issues_count":29,"forks_count":41,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-17T06:46:42.569Z","etag":null,"topics":["code-splitting","express","jwt-authentication","localstorage","materialui","mongodb","mongoose","nodejs","react","redux","restful-api","spa"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/jeffersonRibeiro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-16T04:09:01.000Z","updated_at":"2025-05-12T17:40:49.000Z","dependencies_parsed_at":"2023-01-30T06:01:38.449Z","dependency_job_id":null,"html_url":"https://github.com/jeffersonRibeiro/react-nodejs-mongodb-crud","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jeffersonRibeiro/react-nodejs-mongodb-crud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffersonRibeiro%2Freact-nodejs-mongodb-crud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffersonRibeiro%2Freact-nodejs-mongodb-crud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffersonRibeiro%2Freact-nodejs-mongodb-crud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffersonRibeiro%2Freact-nodejs-mongodb-crud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeffersonRibeiro","download_url":"https://codeload.github.com/jeffersonRibeiro/react-nodejs-mongodb-crud/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffersonRibeiro%2Freact-nodejs-mongodb-crud/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29355129,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T01:03:07.613Z","status":"online","status_checked_at":"2026-02-12T02:00:06.911Z","response_time":55,"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":["code-splitting","express","jwt-authentication","localstorage","materialui","mongodb","mongoose","nodejs","react","redux","restful-api","spa"],"created_at":"2024-11-07T02:12:54.694Z","updated_at":"2026-02-12T02:37:20.853Z","avatar_url":"https://github.com/jeffersonRibeiro.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Aplicação fullstack utilizando MongoDB, NodeJs, React e Redux\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Mongoose-5.1.1-blue.svg?colorB=449a45\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/React-16.3.2-blue.svg\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Redux-4.0.0-blue.svg?colorB=764abc\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Nodejs-9.11.1-blue.svg?colorB=90c53f\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Express-4.16.3-blue.svg?colorB=47535e\"\u003e\n  \u003cbr/\u003e\n  \u003cimg src=\"./doc/img/crud.gif\"\u003e\n\u003c/p\u003e\n\n#### Backend features\nO banco de dados Mongo foi hospedado no MLab por conveniência.\nFoi implementado gravatar para foto de perfil, se o email do usuário tiver um avatar\nno wordpress ela automaticamente é salva no banco.\nRotas sensíveis foram protegidas por meio de JWT em conjunto com passport.\n\n\n#### Usando\n- Nodejs\n  * Express\n  * Nodemon - Para restartar o server sempre que houver uma alteração\n  * Passport - Para proteger rotas privadas \n  * Jwt - Para proteger rotas privadas\n  * Bcrypt - Para Cryptografar as senhas de usuários antes de salvar no banco\n- MongoDB\n  * Mongoose\n\n#### Frontend features\nFoi usado React em conjunto com Redux e React-router para construir a SPA.\nRotas protegidas redirecionam para a home e só são acessíveis por meio de auth.\nLocalstorage foi utilizado para persistir o state de usuário no recarregamento das páginas.\n\n#### Usando\n- React\n  * Redux - Para gerenciar o state da aplicação\n  * asyncRoutes - As rotas carregam em chunks, dessa forma evita da aplicação ficar pesada num primeiro carregamento\n- Axios - Para fazer as requisições HTTP\n- Local storage nativo - Para persistir o state e o auth nas rotas privadas\n- MaterialUI components\n\n## Como iniciar a aplicação\n\n#### Requerimentos\n\n- Node.js\n- NPM\n\n### Instalando os pacotes\n\nExecute o comando abaixo para instalar as dependências:\n``` bash\nnpm install\n```\n\n### Iniciando o servidor\n\nExecute o comando abaixo para iniciar o Nodejs e conectar ao banco de dados MongoDB:\n``` bash\nnpm run server\n```\n\nAguarde a execução e a API estará rodando na Url  `http://localhost:8001/api/`\n\nOs endpoints disponíveis são:\n- Post - Login [more](https://documenter.getpostman.com/view/4374482/teste-fullstack/RW87p9Mq#0e46cf7d-edf9-416c-bfab-84022d8a346e)\n- Post - Register [more](https://documenter.getpostman.com/view/4374482/teste-fullstack/RW87p9Mq#db625518-ec7d-41c7-9894-189322033ac6)\n- Put  - Update Profile [more](https://documenter.getpostman.com/view/4374482/teste-fullstack/RW87p9Mq#ee34ae20-fe46-46f5-8666-7ed784448d65)\n- Del  - Delete Account [more](https://documenter.getpostman.com/view/4374482/teste-fullstack/RW87p9Mq#1481a07f-160a-4b9c-ba95-7ceb20266b53)\n- Get  - List Users [more](https://documenter.getpostman.com/view/4374482/teste-fullstack/RW87p9Mq#5f812e40-7bf1-47e8-87bb-1390b2fdf70b)\n\n[A documentação completa pode ser encontrada no Postman](https://documenter.getpostman.com/view/4374482/teste-fullstack/RW87p9Mq)\n\nDeixe o servidor rodando em um terminal, abra outro e siga para o próximo passo:\n\n### Iniciando a SPA React\n\nPara isso basta executar o comando abaixo, e pronto! :D\n``` bash\nnpm start\n```\n\nA aplicação irá iniciar automaticamente no browser na Url `http://localhost:3000`\n\n\u003cbr/\u003e\n\n### Copyright and license\nThe MIT License (MIT). Please see License File for more information.\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"http://www.jeffersonribeiro.com/assets/img/apple-icon-180x180.png\" width=\"35\" height=\"35\"/\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003csub\u003eA little project by \u003ca href=\"http://www.jeffersonribeiro.com/\"\u003eJefferson Ribeiro\u003c/a\u003e\u003c/sub\u003e\n\u003c/p\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffersonribeiro%2Freact-nodejs-mongodb-crud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeffersonribeiro%2Freact-nodejs-mongodb-crud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffersonribeiro%2Freact-nodejs-mongodb-crud/lists"}