{"id":28477580,"url":"https://github.com/gomdimapps/gmail-2fa","last_synced_at":"2025-06-30T08:31:44.302Z","repository":{"id":296445504,"uuid":"993268546","full_name":"GomdimApps/gmail-2fa","owner":"GomdimApps","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-01T00:00:26.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-07T16:50:27.905Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/GomdimApps.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-30T13:54:46.000Z","updated_at":"2025-06-01T00:00:30.000Z","dependencies_parsed_at":"2025-05-31T03:45:33.180Z","dependency_job_id":"02e1fa6a-ea3b-4530-9202-4d4740f67363","html_url":"https://github.com/GomdimApps/gmail-2fa","commit_stats":null,"previous_names":["gomdimapps/gmail-2fa"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/GomdimApps/gmail-2fa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GomdimApps%2Fgmail-2fa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GomdimApps%2Fgmail-2fa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GomdimApps%2Fgmail-2fa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GomdimApps%2Fgmail-2fa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GomdimApps","download_url":"https://codeload.github.com/GomdimApps/gmail-2fa/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GomdimApps%2Fgmail-2fa/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262738970,"owners_count":23356620,"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":"2025-06-07T16:37:46.487Z","updated_at":"2025-06-30T08:31:44.291Z","avatar_url":"https://github.com/GomdimApps.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Para iniciar o ambiente de produção:\n```bash\ndocker compose --profile prod up -d\n```\n\n### Para derrubar o ambiente de produção:\n```bash\ndocker compose --profile prod down\n```\n\n## Migrações de Banco de Dados\n\nEste projeto utiliza o `golang-migrate` para gerenciar as alterações no esquema do banco de dados. As migrações são arquivos SQL localizados no diretório `database/migrations`.\n\n### Migrações Automáticas na Inicialização da Aplicação\n\nO arquivo `main.go` está configurado para executar automaticamente quaisquer migrações \"up\" pendentes quando a aplicação inicia.\nQuando a aplicação é executada dentro de um container Docker (conforme definido no `Dockerfile`):\n1.  O `Dockerfile` copia o diretório `database/migrations` do seu projeto para dentro da imagem do container (para `/app/database/migrations/` por padrão, se `WORKDIR` for `/app`).\n2.  A aplicação, ao iniciar dentro do container, utiliza os detalhes de conexão do banco de dados e a variável de ambiente `MIGRATIONS_PATH` (especificados no arquivo `.env` e passados para o container) para localizar e aplicar as migrações. O valor de `MIGRATIONS_PATH` deve corresponder ao caminho onde as migrações foram copiadas dentro do container (ex: `database/migrations` se o `WORKDIR` da aplicação for `/app`).\n\nSe as migrações forem aplicadas com sucesso ou se não houver alterações, a aplicação prosseguirá para iniciar o servidor. Se as migrações falharem, a aplicação registrará um erro fatal e será encerrada.\n\n\n### Instalação da CLI `golang-migrate`\n\nVocê precisa instalar a ferramenta CLI `golang-migrate` para criar e gerenciar arquivos de migração manualmente.\n\n```bash\ngo install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest\n```\n\nVerifique a instalação:\n```bash\nmigrate -version\n```\n\n### Criando Novos Arquivos de Migração\n\nPara criar um novo conjunto de arquivos de migração (por exemplo, para adicionar uma nova tabela ou alterar uma existente), use o comando `migrate create` a partir da raiz do projeto:\n\n```bash\nmigrate create -ext sql -dir database/migrations -seq \u003cnome_da_migracao\u003e\n```\n\nSubstitua `\u003cnome_da_migracao\u003e` por um nome descritivo para sua migração (ex: `adicionar_coluna_telefone_usuario`). Isso gerará dois arquivos no diretório `database/migrations`:\n\n*   `YYYYMMDDHHMMSS_\u003cnome_da_migracao\u003e.up.sql`: Contém as instruções SQL para aplicar a migração.\n*   `YYYYMMDDHHMMSS_\u003cnome_da_migracao\u003e.down.sql`: Contém as instruções SQL para reverter (rollback) a migração.\n\n**Exemplo:**\n```bash\nmigrate create -ext sql -dir database/migrations -seq criar_tabela_clientes\n```\nIsso criará (assumindo que esta é a primeira migração ou a próxima na sequência):\n*   `database/migrations/000001_criar_tabela_clientes.up.sql`\n*   `database/migrations/000001_criar_tabela_clientes.down.sql`\n\nEdite esses arquivos com as instruções SQL DDL desejadas.\n\n### Executando Migrações Manualmente (Levantar e Derrubar)\n\nA aplicação tenta executar as migrações pendentes na inicialização, mas você também pode executá-las manualmente usando a CLI. Certifique-se de que seu arquivo `.env` esteja configurado corretamente ou forneça a URL do banco de dados diretamente.\n\nAs variáveis de ambiente do arquivo `.env` usadas para construir a URL do banco de dados para as migrações são:\n*   `DB_USER`, `DB_PASSWORD`, `DB_HOST`, `DB_PORT`, `DB_NAME`, `DB_SSLMODE`\n\nO caminho das migrações é definido por `MIGRATIONS_PATH` no `.env`.\n\n**Para aplicar (levantar) todas as migrações \"up\" pendentes:**\n```bash\n# Exemplo usando os valores típicos de um .env:\nmigrate -database \"postgres://youruser:yourpassword@localhost:5432/yourdbname?sslmode=disable\" -path database/migrations up\n```\n\n**Para reverter (derrubar) a última migração aplicada:**\n```bash\nmigrate -database \"postgres://youruser:yourpassword@localhost:5432/yourdbname?sslmode=disable\" -path database/migrations down 1\n```\n\n**Para reverter (derrubar) todas as migrações:**\n```bash\nmigrate -database \"postgres://youruser:yourpassword@localhost:5432/yourdbname?sslmode=disable\" -path database/migrations down -all\n```\n\n## Endpoints da API\n\n### Clientes\n\n#### `POST /v1/clients/create`\n\nCria um novo cliente.\n\n**Corpo da Requisição:**\n```json\n{\n  \"name\": \"Nome do Cliente\",\n  \"email\": \"cliente@exemplo.com\",\n  \"password\": \"senhaSegura123\"\n}\n```\n\n#### `POST /v1/clients/login`\n\nAutentica um cliente e retorna um token JWT.\n\n**Corpo da Requisição:**\n```json\n{\n  \"email\": \"cliente@exemplo.com\",\n  \"password\": \"senhaSegura123\"\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgomdimapps%2Fgmail-2fa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgomdimapps%2Fgmail-2fa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgomdimapps%2Fgmail-2fa/lists"}