Este é o repositório do projeto API Café Debug. Essa API tem como objetivo manter o backend separado do frontend
trazendo informações do podcast como episódios e agenda e outros conteúdos relacionado a tecnologia.
site café debug atual.
Este projeto utiliza as seguintes tecnologias principais:
- .NET 9 (C#) — plataforma do backend
- Entity Framework Core — ORM para acesso ao MySQL
- MySQL — banco de dados relacional
- Docker / docker-compose — facilitação do ambiente local
- xUnit / Moq — framework de testes unitários e mocking
Você pode clonar o repositório diretamente ou criar um fork no GitHub e clonar seu fork. Exemplo:
git clone https://github.com/JessicaNathany/cafedebug-backend.api.git
cd cafedebug-backend.apiPara rodar a base local, faça um clone deste projeto e execute os comandos abaixo:
Dê permissão ao arquivo .sh:
chmod +x cafedebug-setup.shExecute o script do banco de dados:
./cafedebug-setup.shCopie o arquivo de template:
cp appsettings.json appsettings.Development.jsonEdite o arquivo appsettings.Development.json e substitua os placeholders:
{
"ConnectionStrings": {
"CafedebugConnectionStringMySQL": "Server=localhost;Port=3306;Database=cafedebug;User=root;Password=sua-senha;"
},
"JwtSettings": {
"Issuer": "https://api.cafedebug.com.br",
"Audience": "https://cafedebug.com.br",
"SigningKey": "sua-chave-secreta-minimo-32-caracteres-aqui",
"ValidForMinutes": 15,
"RefreshTokenValidForMinutes": 10080
},
"HealthChecksUI": {
"HealthChecks": [
{
"Name": "Cafe Debug API Health",
"Uri": "http://localhost:5000/health"
}
]
},
"Storage": {
"AWS": {
"S3": {
"Bucket": "cafedebug-images",
"ServiceUrl": "http://localhost:9000",
"BaseUrl": "http://localhost:9000/cafedebug-uploads",
"Region": null,
"ForcePathStyle": true,
"UseHttp": true
}
}
}
}appsettings.Development.json com dados reais!
| Placeholder | Descrição | Exemplo |
|---|---|---|
{connection-string} |
String de conexão MySQL | Server=localhost;Port=3306;Database=cafedebug;User=root;Password=senha; |
{issuer} |
Emissor do token JWT | https://api.cafedebug.com.br |
{audience} |
Audiência do token JWT | https://cafedebug.com.br |
{signing-key} |
Chave secreta para assinar tokens (mínimo 32 caracteres) | Use uma string aleatória forte |
{valid-for-minutes} |
Tempo de validade do access token em minutos | 15 |
{refresh-token-valid-for-minutes} |
Tempo de validade do refresh token em minutos | 10080 (7 dias) |
{health-check-uri} |
URI do health check | http://localhost:5000/health |
{bucket} |
Nome do bucket do S3 | cafedebug-images |
{s3-url} |
Url da AWS S3 ou do MinIO | http://localhost:9000/cafedebug-uploads |
{region} |
Região do serviço AWS (se aplicável). MinIO usar sempre null |
us-east-1 ou null |
{force-path-style} |
Se true, acessa o bucket como caminho da URL (host/bucket). MinIO usar sempre true |
true ou false |
{use-http} |
Se true, usa HTTP ao invés de HTTPS. MinIO usar sempre true |
true ou false |
{service-url} |
Url do serviço do MinIO. | http://localhost:9000 |
dotnet restoredotnet run --project src/cafedebug-backend.apiA API estará disponível em: http://localhost:5000 ou https://localhost:5001
dotnet testAuth
POST /api/auth/login- autenticação do usuário retornando um token de validação.
BannerAdmin
POST /api/banner-admin/novo-banner- adiciona um novo banner aa área administrativa.PUT /api/banner-admin/editar-banner- edita o banner da área administrativa.GET /api/banner-admin/banners- retorna uma lilsta de banners da área administrativa.GET /api/banner-admin/banner/{id}- retorna banner por id.DELETE /api/banner-admin/banner/{id}- apaga banner por id.
Admin - Episódios
GET /api/v1/admin/episodes— lista episódiosGET /api/v1/admin/episodes/{id}— obtém episódio por idPOST /api/v1/admin/episodes— cria episódio (Authorize)PUT /api/v1/admin/episodes/{id}— atualiza episódio (Authorize)DELETE /api/v1/admin/episodes/{id}— remove episódio (Authorize)
Confira o guia de contribuição em CONTRIBUTING.md
