Skip to content

It is a simple project of a payment application maked point to point to run into browsers — as much mobile as desktop with responsiveness — using technologies like Entity Framework Core and Dapper (in the backend) and React JS with Styled Components (in the frontend).

Notifications You must be signed in to change notification settings

MatheusMacedoDev/paysys-fullstack-payment-system-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

PaySys

💡 Sobre o Projeto

PaySys é uma abreviação de Payment System (Sistema de Pagamento), o que resume as funcionalidades da aplicação. O sistema foi feito baseado no Desafio Back-end do PicPay, porém suas features não se limitam a um PicPay Simplificado, abrangindo um escopo relativamente maior que foi pensado no uso atual e posterior do projeto. De início, os requisitos da aplicação foram pensados como um desafio para a minha própria evolução, me forçando a fazer um projeto utilizando de diversas boas práticas (como Domain-Driven Design, Test-Driven Design e os princípios SOLID no geral), além de tecnologias nunca antes usadas por mim. Trabalhei por meses nesse projeto e, chegando próximo ao fim do back-end do mesmo, espero este sistema sirva como um dos projetos de meu Portfólio Pessoal.

PaySys Figma

🔧 Tecnologias

Back-end

  • C# (linguagem selecionada)
  • Entity Framework Core (ORM para o code-first)
  • Dapper (consultas)
  • Flunt (validações)
  • PostgreSQL (banco de dados)
  • JWT (autenticação e autorização)
  • Argon2id (criptografia)
  • Swagger (documentação da API)
  • MailKit e MimeKit (envio de e-mails)
  • XUnit (testes unitários e de integração)
  • Handlebars.Net (templates HTML)

Front-end

  • Next.js (framework React)
  • Tailwind CSS (framework CSS)
  • Tailwind Merge (une strings tailwind evitando conflitos)
  • PostCSS (transforma JS em CSS)
  • TypeScript (adição de tipos ao JavaScript)
  • ESLint (linter para JavaScript e TypeScript)
  • Prettier (formatador de código)
  • Font Awesome (ícones)

Implantação

Nada para ver ainda...

📜 Funcionalidades

Aqui estão descritas todas as funcionalidades do projeto:

API (Back-end)

  • Listar, listar dados específicos, criar, atualizar e deletar tipos de usuário;
  • Criar usuários dos tipos: comuns, lojistas e administradores;
  • Listar de forma resumida os dados dos usuário, para cada tipo;
  • Listar os dados de um usuário específico, para cada tipo;
  • Fazer login gerando um token JWT que será usado para autenticação e autorização;
  • Criar e listar status que uma tranferência pode ter;
  • Criar e listar categorias as quais uma transferência pode participar;
  • Fazer um transferência (pagamento) de uma conta para outra;
  • Listar histórico de transferências de um usuário específico;
  • Listar dados de uma transferência específica;
  • Enviar e-mail de boas-vindas para novos usuários;
  • Enviar um e-mail assim que uma tranferência é realizada envolvendo o usuário;
  • Transferir dados sensíveis para variáveis de ambiente;
  • Adicionar autorização para todas as rotas.

📖 Planejamento

Diagramas

Aqui estão os diagramas de modelagem de banco de dados, tanto conceitual quanto lógico. O modelo físico foi considerado desnecessário para esse projeto.

PaySys Diagrams (without background)

Organização (com Trello)

A organização das tarefas, datas de entregas e atribuições foi feita utilizando a ferramenta Trello.

PaySys Trello

📌 Pré-requisitos

Antes de fazer a instalação algumas ferramentas e softwares são necessárias para iniciar esse processo posteriormente:

Back-end

  • Um editor de código com suporte a linguagem C#, como: Visual Studio, VS Code ou NeoVim (minha opção);
  • Ter .NET 8 ou superior instalado e adicionado ao PATH do sitema, através do site oficial ou de um gerenciador de versões de runtimes como o ASDF;
  • O gerenciador de banco de dados PostgreSQL 16 instalado e configurado através do instalador oficial ou de uma imagem docker.
  • Ter o Git instalado.

💾 Instalação

O processo de instalação está brevemente descrito a seguir:

Back-end

Primeiramente, deve-se clonar o repositório na sua máquina local com o seguinte comando:

git clone https://github.com/MatheusMacedoDev/paysys-backend.git

Depois, deve-se baixar todas as dependências do projeto usando o seguinte comando do .NET CLI na raiz do projeto da API (não de testes):

.NET CLI

dotnet restore

Então, você deverá modificar o arquivo appsettings.json, em especial na parte relativa a string de conexão que deve ser alterada para as configurações, como indicado no trecho a seguir:

"ConnectionStrings": {
        "LocalConnection": "Host = localhost; Port = your-database-port; Pooling = true; Database = database-name; User Id = your-user; Password = your-password"
},

Os seus dados devem ser colocadas substituindo os campos acima. Mais detalhes sobre strings de conexão no Entity Framework Core podem ser vistas aqui. Logo em seguida, deve-se executar o seguinte comando que vai gerar o banco de dados que foi especificado na string de conexão. Portanto, se houver algum erro na string de coneção, o comando falhará.

.Net CLI

dotnet ef update database

Por fim, agora é só executar a aplicação usando o seguinte comando

.Net CLI

dotnet watch run

About

It is a simple project of a payment application maked point to point to run into browsers — as much mobile as desktop with responsiveness — using technologies like Entity Framework Core and Dapper (in the backend) and React JS with Styled Components (in the frontend).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages