Mini Asaas

O projeto "Mini Asaas" é uma aplicação de controle de recebíveis que oferece funcionalidades essenciais, como cadastro de pagadores, geração de cobranças e confirmação de pagamentos. Além disso, possui um sistema de notificações por e-mail, gestão multiusuário e mecanismos específicos no backend, como o uso do Spring Security para controle de conta e soft delete para registros no banco de dados.

Quickstart

Requisitos

  • JDK 11
  • Grails 5
  • MySQL

Passos para Rodar o Projeto

  1. Clone o repositório:

    git clone https://github.com/L-W-payments/asaas-payment.git
    cd asaas-payment
  2. Configure o banco de dados no arquivo application.yml:

  • Altere as variáveis username, password e url para as credenciais do seu banco de dados.

    dataSource:
        pooled: true
        jmxExport: true
        driverClassName: com.mysql.cj.jdbc.Driver
        dialect: org.hibernate.dialect.MySQL8Dialect
        username: yourUsername
        password: yourPassword
    
      environments:
            development:
                dataSource:
                    dbCreate: update
                    url: yourDatabaseUrl
  1. Configure o smtp no arquivo application.yml:
  • Altere as variáveis username e password para as credenciais do seu email.

    grails:
       mail:
          host: "smtp.gmail.com"
          port: 587
          username: "youremail@email.com"
          password: "yourAppPassowrd"
    
  1. Execute o projeto:

    grails run-app
  2. Acesse a aplicação em http://localhost:8080

RFs (Requisitos funcionais)

  • Deve ser possível um cliente se cadastrar;
  • Deve ser possível um cliente se autenticar;
  • Deve ser possível um cliente deletar sua conta;
  • Deve ser possível um cliente atualizar seus dados;
  • Deve ser possível um cliente criar uma cobrança;
  • Deve ser possível um cliente listar todas as cobranças;
  • Deve ser possível um cliente listar uma cobrança específica;
  • Deve ser possível um cliente deletar uma cobrança;
  • Deve ser possível um cliente restaurar uma cobrança;
  • Deve ser possível um cliente selecionar um pagador para uma cobrança;
  • Deve ser possível um cliente criar um pagador;
  • Deve ser possível um cliente listar todos os pagadores;
  • Deve ser possível um cliente listar um pagador específico;
  • Deve ser possível um cliente atualizar um pagador;
  • Deve ser possível um cliente deletar um pagador;
  • Deve ser possível um cliente restaurar um pagador;
  • Deve ser possível um cliente listar todas as notificações;
  • Deve ser possível um cliente confirmar o recebimento em dinheiro de uma cobrança;
  • Deve ser possível um pagador pagar uma cobrança;
  • Deve ser possível um pagador ver o comprovante de pagamento;
  • Deve ser possível receber um email após uma cobrança ser criada;
  • Deve ser possível receber um email após uma cobrança ser deletada;
  • Deve ser possível receber um email após uma cobrança ser vencida;
  • Deve ser possível receber um email após uma cobrança ser paga;

RNs (Regras de negócio)

  • O cliente não deve se cadastrar com um email duplicado;
  • O cliente não deve se cadastrar com um cpf ou cnpj duplicado;
  • O cliente não deve se cadastrar com informações inválidas;
  • O cliente não deve se cadastrar um pagador com informações inválidas;
  • O cliente não deve deletar um pagador que possui cobranças em aberto;
  • O cliente não deve alterar uma cobrança;
  • O cliente não deve criar uma cobrança com data de vencimento menor que a data atual;
  • O cliente não deve criar uma cobrança com data de vencimento maior que 6 meses;
  • O cliente não deve criar uma cobrança com valor menor que R$ 10;
  • O cliente não deve criar uma cobrança com valor maior que R$ 10.000;
  • O cliente não deve criar uma cobrança com descrição maior que 500 caracteres;
  • O cliente não deve criar uma cobrança sem uma forma de pagamento;
  • O cliente não deve criar uma cobrança sem um pagador;
  • O cliente não deve confirmar o recebimento em dinheiro de uma cobrança se ela não estiver pendente;
  • O pagador não deve pagar uma cobrança recebida em dinheiro;

RNFs (Requisitos não funcionais)

  • A senha do cliente deve ser criptografada;
  • Todos os domínios devem possuir um campo dateCreated, lastUpdated e deleted;
  • Todos os domínios que recebem informações de fora da aplicação devem possuir um adapter;
  • Todos os services devem ser implementados de maneira explícita;
  • Nenhum domínio deve ser deletado explicitamente;
  • Os dados da aplicação devem estar persistido em um banco MySQL;
  • A aplicação deve ser desenvolvida em Grails;
  • A aplicação deve ser desenvolvida em Groovy;
  • A aplicação deve ser desenvolvida com Spring Security;
  • A aplicação deve ser desenvolvida com o Atlas;
  • A aplicação deve utilizar repositórios para interação com domínios;
  • A aplicação deve utilizar Jobs para vencer as cobranças;

Criadores

Este projeto foi criado por Luiz Filipe e Wollace Buarque.