Console app em .NET que monitora um banco de dados do Notion e classifica automaticamente os cards por prazo, atualizando o status de cada um e enviando um resumo diário pelo Telegram.
- Busca todos os cards do banco de dados configurado no Notion via API REST
- Para cada card elegível (com prazo e status não ignorado), classifica o status com base na distância até o prazo
- Atualiza o status no Notion caso tenha mudado
- Envia um resumo com todas as atualizações para um chat do Telegram
| Prazo | Status atribuído |
|---|---|
| Antes de hoje | Atrasado |
| Hoje | Hoje |
| Até o próximo sábado | Esta semana |
| Até o sábado seguinte | Próxima semana |
| Ainda neste mês | Este mês |
| No próximo mês | Próximo mês |
Os status
Completo,Em andamentoeLembretesão ignorados — cards com esses status nunca têm o prazo reclassificado.
As credenciais são lidas via variáveis de ambiente ou User Secrets (desenvolvimento local).
| Variável | Descrição |
|---|---|
NOTION_TOKEN |
Token de integração do Notion |
NOTION_DATABASE_ID |
ID do banco de dados do Notion |
TELEGRAM_BOT_TOKEN |
Token do bot do Telegram |
TELEGRAM_CHAT_ID |
ID do chat que receberá o resumo |
dotnet user-secrets set "NOTION_TOKEN" "secret_..."
dotnet user-secrets set "NOTION_DATABASE_ID" "..."
dotnet user-secrets set "TELEGRAM_BOT_TOKEN" "..."
dotnet user-secrets set "TELEGRAM_CHAT_ID" "..."dotnet run --project src/NotionManagerNet/NotionManagerNet.csprojdotnet testOs testes cobrem:
CardClassifier— todas as regras de classificação por prazo com data fixa (determinístico)NotionCardMapper— mapeamento de JSON da API para o modelo de domínioTelegramService— montagem da mensagem, escape de HTML e pluralização
src/
NotionManagerNet/
Configurations/ # NotionSettings, TelegramSettings
Interfaces/ # INotionService, ITelegramService
Mappers/ # NotionCardMapper
Models/ # TaskCard
Services/ # NotionService, TelegramService, CardClassifier
Program.cs
tests/
NotionManagerNet.Tests/
CardClassifierTests.cs
NotionCardMapperTests.cs
TelegramServiceTests.cs
Acesse o template utilizado neste projeto e duplique para o seu Notion:
Clique em Duplicate no canto superior direito para copiar o template para o seu workspace.