Coder Social home page Coder Social logo

ronan99 / api-accounts Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 207 KB

API em laravel utilizando docker. Consiste na transferência de valores entre contas aplicando conceitos para lidar com Requisições concorrentes.

PHP 80.87% JavaScript 0.19% Blade 18.24% Dockerfile 0.70%

api-accounts's Introduction

Descrição

API em laravel utilizando PHP. Consiste na transferência de saldo entre contas aplicando conceitos lock pessimista, unit of work e jobs/queues para envio de e-mail. Foco da aplicação é a consistência dos dados e transações.

Tecnologias Utilizadas

A aplicação foi desenvolvida utilizando as Tecnologias abaixo, segue links para consultas de documentação:

Arquitetura

A arquitetura é de uma API, utilizando o framework Laravel, adicionando o Repository Pattern com uma camada de Services.

1. Model

Responsável pela representação e manipulação dos dados no banco de dados

2. Middleware

Faz o controle de autenticação da aplicação.

3. Controller

É a camada de entrada da aplicação. Nele são validados os parâmetros, os endpoints dos recursos e os serviços que serão utilizados para operação. O controller utiliza de FormRequests para validação dos parâmetros de entrada.

4. Services

Local onde as regras de negócio da aplicação são desenvolvidas, estabelecendo a conexão entre o controlador e os repositórios.

5. Repositories

Funciona como uma camada de abstração para operações de banco de dados.

6. Queues/Jobs

São utilizados para envio de e-mails com o mock de confirmação.

7. Tests

São utilizados para envio de e-mails com o mock de confirmação.

Pré-requisitos

Certifique-se de ter as seguintes ferramentas instaladas em sua máquina:

  • Git
  • Docker docker
  • Docker Compose

Instruções para Execução

1. Clone o Repositório

git clone <url-do-repo>
cd nome-do-repo

2. Configuração projeto

Crie a .env a partir da .env.example

cd backend
cp .env.example .env

3. Configuração do Docker

Na raiz do projeto, execute:

docker-compose build
docker-compose run --rm composer install --ignore-platform-reqs
docker-compose run --rm artisan key:generate
docker-compose run --rm artisan jwt:secret
docker-compose up -d
docker-compose run --rm composer init-db

4. Rota Backend

Url padrão do backend:

http://localhost:8080

Testes

Para a realização dos testes, é utilizado o PHPUnit. Foram desenvolvidos testes de integração para a API. Para consultar o funcionamento dos testes com laravel, basta acessar a documentação de Testes.

Rodar testes

Para rodar os testes, basta executar dentro da pasta backend:

php artisan test

OU rodar com docker:

docker compose run --rm --entrypoint bash artisan
php artisan test

obs: bash pode ser trocado por 'sh' em caso de Sistemas diferentes.

TODO/Melhorias

  • Melhoria da Unit of Work para as transações.
  • Travar somente o usuário que está a enviar o dinheiro para melhoria de performance.
  • Criar fila para processar o saldo a ser enviado na conta de destino.
  • Disparar notificações baseados nas transações ocorridas.
  • Construção de Load Balancer e Rate limiter para requisições.

api-accounts's People

Contributors

ronan99 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.