{"id":25791172,"url":"https://github.com/normyee/authentication-system","last_synced_at":"2026-06-12T00:31:40.836Z","repository":{"id":275611734,"uuid":"926611057","full_name":"normyee/authentication-system","owner":"normyee","description":"Simple authentication system with Redis, email verification, and token management.","archived":false,"fork":false,"pushed_at":"2025-02-25T16:29:50.000Z","size":599,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-27T16:26:20.702Z","etag":null,"topics":["authentication-backend","clean-architecture","ddd-architecture","docker-compose","dockerfile","jwt-token","memory-cache","postgresql","prisma-orm","redis-cache"],"latest_commit_sha":null,"homepage":"","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/normyee.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":"2025-02-03T15:06:56.000Z","updated_at":"2025-02-25T16:29:54.000Z","dependencies_parsed_at":"2025-02-03T16:45:10.037Z","dependency_job_id":null,"html_url":"https://github.com/normyee/authentication-system","commit_stats":null,"previous_names":["normyee/authentication-system"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/normyee/authentication-system","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/normyee%2Fauthentication-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/normyee%2Fauthentication-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/normyee%2Fauthentication-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/normyee%2Fauthentication-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/normyee","download_url":"https://codeload.github.com/normyee/authentication-system/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/normyee%2Fauthentication-system/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34224103,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"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":["authentication-backend","clean-architecture","ddd-architecture","docker-compose","dockerfile","jwt-token","memory-cache","postgresql","prisma-orm","redis-cache"],"created_at":"2025-02-27T12:54:53.283Z","updated_at":"2026-06-12T00:31:40.774Z","avatar_url":"https://github.com/normyee.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sobre a solução\nEste projeto é uma aplicação de cadastro e autenticação feita com NestJS e Express, seguindo a Clean Architecture. Ele oferece funcionalidades como cadastro de usuários, login, logout, e gerenciamento de listas. O fluxo de autenticação envolve o envio de um e-mail de validação com Nodemailer e gerenciamento de filas de e-mail usando RabbitMQ no padrão Pub/Sub.\n\nAo cadastrar ou logar, o sistema gera um JWT para autenticação. No caso de logout, o token é invalidado com Redis. As rotas que exigem autenticação são protegidas por um middleware que verifica a validade do token.\n\nA criação de listas pelos usuários é uma funcionalidade disponível, mas é uma rota protegida, ou seja, só pode ser acessada por usuários autenticados. O projeto é dividido em camadas: Domain, que lida com as regras de negócio; Application, que gerencia os serviços e fluxos; e Infra, responsável pela comunicação com serviços externos como Redis e RabbitMQ.\n\nEssa arquitetura facilita a escalabilidade e a manutenção da aplicação, garantindo segurança e boa performance.\n\n## Requisitos\n- Uma conta na Google\n- Senha de APP do Gmail para o uso de envio de e-mails\n- Node LTS\n- Docker\n\n### Como executar em minha máquina?\n- Clone o projeto em sua máquina: `git clone https://github.com/normyee/authentication-system.git`\n- Entre no projeto: `cd uthentication-system`\n`\n- Crie um arquivo no pasta raiz com nome de `.env`\n- Abra o `.env.example` e passe no `.env` as mesmas variáveis\n- Instale as dependências: `npm install`\n- Builde a aplicação: `npm run build`\n- Inicialize o contêiner: `docker-compose up -d`\n- Crie as migrations da schema do prisma: `npx prisma migrate dev --name init`\n- Inicialize a aplicação: `npm run start:prod`\n  \n#### Pronto 🎉\n- Agora pode cadastrar o seu usuário em `/localhost:3000/auth/signup`\n## Documentação\n- [Como o Backend está estruturado?](API-STRUCTURE.md/)\n\n### Endpoints\n`POST - /auth/signup`\n```\nhttp://localhost:3000/auth/signup -\u003e Cadastra um novo usuário e um e-mail de validação do e-mail registrado é enviado\n```\n#### Exemplo:\n```\n{\n    \"name\": \"user\",\n    \"email\": \"user@gmail.com\",\n    \"password\": \"user123pass_\"\n}\n```\n----------------------------------------------------------------------------------\n`POST - /auth/login`\n```\nhttp://localhost:3000/auth/login-\u003e retorna um bearer token que usaremos para acessar rotas protegidas\n```\n\n#### Exemplo:\n```\n{\n    \"email\": \"user@gmail.com\",\n    \"password\": \"user123pass_\"\n}\n```\n\n#### Retorno:\n```\n{\n    \"data\": {\n        \"accessToken\": {\n            \"accessToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNzM4NzU1NTA4LCJleHAiOjE3Mzg3NTkxMDh9.zBnnH7nwYhGwjAZ3J6MHbohnPHnciHjEtBzxQkJWlvA\"\n        }\n    },\n    \"message\": \"Login efetuado com successo\",\n    \"success\": true\n}\n```\n----------------------------------------------------------------------------------\n`GET - /auth/logout`\n```\nhttp://localhost:3000/auth/logout-\u003e Desloga usuário. É necessário que passemos o bearer token gerado pelo login\n```\n----------------------------------------------------------------------------------\n`POST - /list`\n```\nhttp://localhost:3000/list -\u003e Cria uma lista. Só será possível utilizar esta rota se o e-mail está validado\n```\n#### Exemplo:\n```\n{\n    \"name\": \"jogos\",\n    \"items\": [\"minecraft\"]\n}\n```\n----------------------------------------------------------------------------------\n`GET - /list/:id`\n```\nhttp://localhost:3000/list -\u003e Busca uma lista de um usuário.\n```\n\n\n\n\n\n\n\n\n\n\n   \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnormyee%2Fauthentication-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnormyee%2Fauthentication-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnormyee%2Fauthentication-system/lists"}