From 90e71be8d15d02370d35d5db79afdea92d9cfe5f Mon Sep 17 00:00:00 2001 From: "Jefferson L. da Silva" Date: Sun, 18 May 2025 20:37:50 -0300 Subject: [PATCH] Adicionados detalhes ao README.md --- README.md | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) diff --git a/README.md b/README.md index e69de29..f8da512 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,161 @@ +# InvoiceReminder + +Sistema para envio automático de lembretes de pagamento de boletos bancários. + +## Índice + +- [Sobre o Projeto](#sobre-o-projeto) +- [Funcionalidades](#funcionalidades) +- [Tecnologias Utilizadas](#tecnologias-utilizadas) +- [Pré-requisitos](#pré-requisitos) +- [Instalação](#instalação) +- [Configuração](#configuração) +- [Como Usar](#como-usar) +- [Contribuição](#contribuição) +- [Licença](#licença) +- [Contato](#contato) + +--- + +## Sobre o Projeto + +O **InvoiceReminder** é um sistema desenvolvido em C# para automatizar o envio de lembretes referentes a pagamentos de boletos bancários (invoices). Ele pode ser utilizado por empresas ou profissionais autônomos que desejam organizar e automatizar o processo de cobrança/reminder, evitando atrasos e otimizando o fluxo de caixa. + +## Funcionalidades + +- Cadastro de clientes e notas fiscais +- Agendamento de lembretes automáticos via Telegram chat bot +- Personalização de mensagens de lembrete +- Relatórios de notas fiscais pendentes e lembretes enviados +- Suporte a múltiplos usuários +- Interface Rest API + +## Tecnologias Utilizadas + +- **Linguagem:** C# +- **Framework:** .NET Core 9 +- **Autenticação:** JSON Web Token +- **Banco de Dados:** PostgreSQL +- **Solução de ORM:** Entity Framework Core 9 e Dapper +- **Serviços Externos:** Google Api, iText, Telegram.Bot +- **Agendamento de Tarefas:** Quartz.net +- **Testes Unitários:** MSTest, NSubstitute e Shouldly + +## Pré-requisitos + +- [.NET SDK](https://dotnet.microsoft.com/download) (versão recomendada: 9.0 ou superior) +- [PostgreSQL](https://www.postgresql.org/download/) (versão recomendada: 16 ou superior) +- [Google OAuth Client](https://console.cloud.google.com/) para gerar chave de integração com o sistema de autenticação sem senha +- Criar um chat bot do Telegram através da interação com @BotFather +- Acesso à internet para recuperação de e-mails e posterior envio de mensagens + +## Instalação + +Clone o repositório: + +```bash +git clone https://github.com/jldsilva/InvoiceReminder.git +cd InvoiceReminder +``` + +Restaure os pacotes NuGet e compile o projeto: + +```bash +dotnet restore +dotnet build +``` + +## Configuração + +Antes de executar, configure os parâmetros de banco de dados e outros no arquivo de configuração (exemplo: `appsettings.json`): + +```json +{ + "ProviderName": "Npgsql", + "appKeys": { + "googleOauthClientId": "CLIENT_ID", + "googleOauthClientSecret": "CLIENT_SECRET", + "telegramBotToken": "BOT_TOKEN" + }, + "ConnectionStrings": { + "DatabaseConnection": "CONNECTION_STRING" + }, + "JwtOptions": { + "Issuer": "ISSUER", + "Audience": "AUDIENCE", + "SecretKey": "SECRET_KEY" + } +} +``` + +> **Nota:** Nunca compartilhe suas credenciais em repositórios públicos dê preferência ao recurso de user secrets do Visual Studio ou VS Code. + +## Como Usar + +Execute o projeto: + +```bash +dotnet run +``` + +Em ambiente development, a interface Rest API Scalar estará disponível para uso. +Siga as instruções exibidas na tela para cadastrar clientes, notas fiscais e configurar os lembretes. + +### Exemplo de uso (CLI): + +```bash +# Adicionar cliente +curl https://localhost:7104/api/user \ + --request POST \ + --header 'Content-Type: application/json' \ + --data '{ + "id": "", + "name": null, + "email": null, + "password": null +}' + +# Adicionar um scan de boleto +curl https://localhost:7104/api/scan_email \ + --request POST \ + --header 'Content-Type: application/json' \ + --data '{ + "id": "", + "userId": "", + "invoiceType": 1, + "beneficiary": null, + "description": null, + "senderEmailAddress": null, + "attachmentFileName": null +}' + +# Adicionar um job_schedule +curl https://localhost:7104/api/job_schedule \ + --request POST \ + --header 'Content-Type: application/json' \ + --data '{ + "id": "", + "userId": "", + "cronExpression": null +}' +``` + +## Contribuição + +Contribuições são bem-vindas! Para contribuir: + +1. Faça um fork do projeto +2. Crie uma branch com sua feature (`git checkout -b feature/nova-feature`) +3. Commit suas alterações (`git commit -m 'Adiciona nova feature'`) +4. Push para a branch (`git push origin feature/nova-feature`) +5. Abra um Pull Request + +## Licença + +Este projeto está sob licença [MIT](LICENSE). + +## Contato + +Feito por [jldsilva](https://github.com/jldsilva) - Entre em contato para dúvidas ou sugestões! + +--- \ No newline at end of file