{"id":23190424,"url":"https://github.com/felipstein/fotodozinho-backend","last_synced_at":"2025-08-18T19:31:45.905Z","repository":{"id":65677123,"uuid":"586390018","full_name":"Felipstein/fotodozinho-backend","owner":"Felipstein","description":null,"archived":false,"fork":false,"pushed_at":"2023-04-03T13:00:16.000Z","size":17997,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2024-04-23T22:52:40.648Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/Felipstein.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}},"created_at":"2023-01-08T00:25:13.000Z","updated_at":"2024-02-26T13:28:15.000Z","dependencies_parsed_at":"2023-02-18T10:15:45.055Z","dependency_job_id":null,"html_url":"https://github.com/Felipstein/fotodozinho-backend","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Felipstein%2Ffotodozinho-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Felipstein%2Ffotodozinho-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Felipstein%2Ffotodozinho-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Felipstein%2Ffotodozinho-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Felipstein","download_url":"https://codeload.github.com/Felipstein/fotodozinho-backend/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230268726,"owners_count":18199806,"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":[],"created_at":"2024-12-18T12:14:26.148Z","updated_at":"2024-12-18T12:14:26.840Z","avatar_url":"https://github.com/Felipstein.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Foto do Zinho\n\n**Foto do Zinho é uma aplicação baseada nos serviços de uma empresa de fotografia e outros serviços relacionados. A aplicação oferece rotas para manipulação e uso desses serviços, registro de usuários, sistema de administração, rotas autenticadas e mais.**\n\n## Tecnologias e Termos Usados\n\n- Manipulação/CRUD das entidades completo por meio dos padrões **REST** e **RESTful**\n- **Banco de dados SQL Postgres** para relações mais complexas\n- **ORM Prisma** para manipualação do banco de dados\n- Desenvolvido com **Node** e **Typescript** para aumentar a robustez e clareza do código\n- Segurança de senhas aprimoradas atráves da **criptografia**\n- Code Style com **ESLint**\n- *\u003e**Testes unitários** e **testes integrais** garantindo a qualidade do software com **Jest*** (Feature congelada no momento)\n- Autenticação segura de usuários com **Tokens JWT**, **Refresh Tokens**, **Tokens Revogados/Invalidados**, e outros tokens, como **Recuperação de senha** e **Validação de E-mail**\n- Suporte ao upload de imagens (tanto local quanto no **Amazon S3** da **AWS**) usando **Multer**\n- Sistema de administração para usuários com permissões especiais\n- Uso do **.env** para armazenação de variáveis de ambientes sensíveis\n- Tratamento de erros personalizados atráves de **middlewares**\n- Verificação de usuário autenticado atráves de **middlewares**\n- Envio automatizados de e-mails com o serviço **SES** da **AWS Amazon** para usuários com recuperação de senhas, notificações de compras, status de fotos para impressão, etc.\n- *Atualização de notificações para os usuários em tempo real atráves de **WebSockets*** (Em breve)\n- Código organizado e estruturado seguindo os princípios **SOLID** e **Clean Architecture**\n- Utilizando **node-cron** para **agendamento** na deleção do banco de dados os tokens expirados\n\n## Como Usar\n\nPara começar a usar o Foto do Zinho, você precisará fazer o clone do repositório e instalar as dependências com o comando `npm install` ou `yarn`. Você também precisará criar um arquivo `.env` na raiz do projeto com as variáveis de ambiente necessárias. Você pode utilizar o arquivo `.env.example` para se basear nas variáveis.\n\n## Rotas Disponíveis\n\nAqui estão as **principais** rotas disponíveis no Foto do Zinho:\n\n### Autenticação\n\n```\nPOST /auth/signin: usada para que o usuário faça login na aplicação. Ela é protegida pelo middleware preventAuthenticatedAccess, que impede o acesso à rota caso o usuário já esteja autenticado.\nPOST /auth/signup: usada para que um novo usuário se cadastre na aplicação. Ela também é protegida pelo middleware preventAuthenticatedAccess.\nDELETE /auth/signout: usada para que o usuário faça logout da aplicação. Ela é protegida pelo middleware ensureAuth, que impede o acesso à rota caso o usuário não esteja autenticado.\nGET /auth/validate: usada para validar se o token de acesso enviado na requisição é válido. Ela também é protegida pelo middleware ensureAuth.\nPOST /auth/refresh-token: usada para gerar um novo token de acesso a partir do refresh token. Ela não é protegida por nenhum middleware, mas requer um refresh token válido na requisição.\n```\n\n### Manipulação de usuários\n\n```\nGET /users: Lista todos os usuários cadastrados no sistema (para administradores apenas)\nGET /users/inactive: Lista todos os usuários inativos (para administradores apenas)\nGET /users/id/:id: Retorna informações sobre um usuário específico (apenas para o próprio usuário ou administradores)\nGET /users/email/:email: Retorna informações sobre um usuário específico, identificado pelo seu endereço de email\nPOST /users: Cria um novo usuário no sistema (para administradores apenas)\nPUT /users/:id: Atualiza informações do usuário com o ID especificado (apenas para o próprio usuário ou administradores)\nPATCH /users/:id/password: Atualiza a senha do usuário com o ID especificado (apenas para o próprio usuário ou administradores)\nDELETE /users/:id: Remove o usuário com o ID especificado (para administradores apenas)\nDELETE /users/account/:id: Remove a conta do próprio usuário com o ID especificado (apenas para o próprio usuário ou administradores)\n```\n\n### Validações e recuperação de senha\n\n```\n/validate-email/:token: Valida o e-mail do usuário;\n/set-password: Define uma nova senha para o usuário que utilizou da recuperação de senha (apenas se o token for válido);\n/recovery-password: Envia um token para recuperação de senha no e-mail do usuário;\n/validate-recovery-password-token/:token: Apenas verifica se o token para recuperação de senha é válido.\n/send-new-validate-email Envia um novo token para validar o e-mail do usuário.\n```\n\n## Segurança\n\nO Foto do Zinho utiliza tokens JWT para autenticação de usuários, e possui sistema de autenticação e autorização de rotas. A aplicação também utiliza criptografia para manter as senhas dos usuários seguras. O projeto também utiliza tokens para recuperação de senha e validação de e-mail, além de tokens refresh para evitar que os usuários tenham que fazer login frequentemente.\n\n## Tratamento de Erros\n\nO Foto do Zinho utiliza middleware para o tratamento de erros, fornecendo respostas claras e adequadas para os usuários em caso de erros na API.\n\n## Envio de E-mails\n\nO Foto do Zinho utiliza o SES da AWS da Amazon para enviar e-mails, com o uso do pacote Nodemailer.\nVocê precisa configurar os dados para autenticação do seu SES caso queira utilizar do serviço de envio de e-mails.\n\n## Código Organizado\n\nO código do Foto do Zinho segue os padrões SOLID e Clean Architecture, tornando-o mais organizado e fácil de manter.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelipstein%2Ffotodozinho-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelipstein%2Ffotodozinho-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelipstein%2Ffotodozinho-backend/lists"}