Projeto pessoal, cuja finalidade principal é apresentar uma sugestão de APi para procedimentos de transferências financeiras simplificada entre usuários. Projeto em Laravel.

Overview

Desafio

Autor: Fábio Sousa de Sant'Ana

Projeto pessoal, cuja finalidade principal é apresentar uma sugestão de APi para procedimentos de transferências financeiras simplificada entre usuários. Projeto em Laravel.

Funções

  • Criação de usuário comum.
  • Criação de usuário companhia.
  • Transferências financeiras online entre usuários.
  • Consulta de saldo.
  • Notificação de transação financeira.
  • Por padrão, o sistema criará uma Companhia (Company Teste, com idUser = 1) com o saldo de R$ 1000 para testarmos a API.

Documentação API

  • A documentação da API pode ser obtida aqui

Ferramentas

O projeto utiliza o ferramentário a seguir:

  • Docker-compose
  • Laravel v8.0
  • Mysql 5.0

Arquitetura do Projeto

Dependências

Clone do projeto

git clone https://github.com/fabiosantanarp/desafio.git

Configuração do Docker

  • Abra o diretório desafio e edite o arquivo docker-compose.yml informando uma senha para o usuário root através da variável MYSQL_ROOT_PASSWORD.

Crie o ambiente Laravel dentro do container.

  • Dentro do diretório desafio, digite os comandos abaixo:

    docker-compose up -d
    docker-compose exec app bash -c "cd .. && composer create-project laravel/laravel new"
    docker-compose exec app bash -c "cd .. && cp -r sistema/* new"
    docker-compose exec app bash -c "cd .. && rm -rf sistema && mv new sistema"
    
    

Configuração do Variáveis

  • Copie o arquivo app/sistema/.env.example para app/sistema/.env e edite conforme abaixo.

    EXTERNAL_AUTHORIZATION_MOCK=https://run.mocky.io/v3/8fafdd68-a090-496f-8c9a-3442cf30dae6
    NOTIFICATION_SENDER_MOCK=http://o4d9z.mocklab.io/notify
    
  • Altere as configurações do seu banco de dados e do servidor de envio de e-mail.

    DB_CONNECTION=mysql
    DB_HOST={IP DO HOST FISICO}
    DB_PORT=3306 (previamente configurada em docker-composer.yml)
    DB_DATABASE=challenge
    DB_USERNAME=root
    DB_PASSWORD= (previamente configurada em docker-composer.yml)
    
    MAIL_MAILER=smtp
    MAIL_HOST=smtp.server.com
    MAIL_PORT=587
    MAIL_USERNAME=username
    MAIL_PASSWORD=password
    MAIL_ENCRYPTION=tls
    MAIL_FROM_ADDRESS=desafio@teste
    
  • Altere o mecanismo de filas para database, se não estiver.

    QUEUE_CONNECTION=database
    
  • Crie uma nova encryption key

    docker-compose exec app bash -c "php artisan key:generate"
    

Incialização dos serviços

Ainda dentro do diretório desafio, proceda como abaixo:

  • Inicie o webserver integrado do Laravel, na porta 8080.

    docker-compose exec app bash -c "php artisan serve --port 8080 --host 0.0.0.0" &
    

    Aperte ENTER após a execução do comando.

  • Faz o carregamento das estruturas iniciais do banco de dados com a {SENHA} criada no arquivo docker-compose.yml

    docker-compose exec -T db sh -c 'exec mysql -uroot -p{SENHA}' < dump.sql
    

    Caso retorne uma mensagem de insegurança, não se preocupe. Esse contexto de importação de estrutura inicial é para ambientes de desenvolvimento e não corremos riscos.

  • Agora, devemos rodar as migrations:

    docker-compose exec app bash -c "php artisan migrate:refresh"
    
  • (opcional) Caso queira executar as filas de e-mail, utilize:

    docker-compose exec app bash -c "php artisan queue:work"
    

    Obs.: Esse comando pode travar o terminal, aguardando disparo de e-mails.

Realização de Testes (PHPUnit)

  • (opcional) Para rodar os testes, execute:

    docker-compose exec app bash -c "php artisan test"
    

Enjoy!

You might also like...
Projeto utilizado para prática de TDD usando PHP com a equipe de desenvolvimento.

🚀 TDD com PHP 📄 Detalhamento do projeto Projeto desenvolvido durante um DOJO que organizei com os colegas de equipe da GAM Distribuidora. A proposta

Projeto de TCC. Sistema para melhoria de gestão e administração de bibliotecas.

TCC PROJETO ATHENA. (BIBLIOTECA ATHENA). Projeto criado por mim e integrantes do meu grupo de TCC na ETEC Juscelino Kubitschek de Oliveira. INTEGRANTE

Desafio de Back-End da Alura: Crie uma API Rest funcional focada em controle financeiro.

Lumen PHP Framework Laravel Lumen is a stunningly fast PHP micro-framework for building web applications with expressive, elegant syntax. We believe d

Este es un sitema bibliotecario para registro de adquisiciones y prestamos para INATEC Siuna

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Plugin de Wordpress para criar um Hacker News-like para o ManualdoUsuario.net

🪐 Órbita Plugin de Wordpress para criar um painel de debates baseado em links, similar ao Hacker News, para o Manual do Usuário. Rodar o projeto Requ

Uma loja virtual de teclados feita nas aulas de PW-II na ETEC com PHP e bootstrap
Uma loja virtual de teclados feita nas aulas de PW-II na ETEC com PHP e bootstrap

etec-tectok-teclados Uma loja virtual de teclados feita nas aulas de PW-II na ETEC com PHP e bootstrap Translations: 🇺🇸 English tectok.herokuapp.com

Video_Sharing_Platform - Fala Devs! Estou trazendo aqui uma plataforma de compartilhamento de vídeo (como um YouTube)

Video Sharing Platform Sobre o Projeto Fala Devs! Estou trazendo aqui uma plataforma de compartilhamento de vídeo (como um YouTube). A aplicação possu

Arquivos do Curso do Projeto EAD - API

Setup Docker Para Projetos Laravel Assine a Academy, e Seja VIP! Passo a passo Clone Repositório git clone https://github.com/especializati/setup-dock

CRUD API em Laravel para registrar produtos.
CRUD API em Laravel para registrar produtos.

CRUD API feito em laravel manipulando dados/registros de produtos. Criar um banco de dados chamado laravel_api utf8mb4_unicode_ci. Baixe o composer. P

Owner
Fábio Santana
Um pouco de tudo! Desenvolvedor e Analista de Redes. Hoje: mais desenvolvedor! Pai de família, jiujiteiro. Programação: um hobby que virou profissão!
Fábio Santana
O manager Box é um projeto da disciplina de Projeto e prática 2 do IFPE - Igarassu, que consiste em uma aplicação web com funções de gerenciamento de estoque para pequenos empreendimentos.

ManagerBox O Manager Box é um projeto da disciplina de Projeto e prática 2 do IFPE - Igarassu, que consiste em uma aplicação web com funções de gerenc

Alan José 4 Apr 15, 2022
Jéssica Paula 7 Aug 12, 2022
API REST para CRUD de usuários

Crud de Usuários QUAL A FUNÇÃO DA API? Esta API tem como objetivo cadastrar usuários e seus respectivos endereços por meio de requests e também fazer

Gabriel Cruz 1 Mar 26, 2022
Repositório, usado para testar integração entre laravel e vercel

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

3ret 2 Dec 6, 2021
Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de login, guarda de rotas e cadastro de usuários no banco de dados MySQL

Times-de-Futebol-BR Descrição do Projeto Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de l

Lucas Henrique Pessutto 5 Mar 14, 2022
Classe criada com a finalidade de retornar um intervalo de data, como um dia, mês ou ano.

DateCalculator Classe criada com a finalidade de retornar um intervalo de data, como um dia, mês ou ano. Instalação git clone [email protected]:DaniloC

DaniloChagas 2 Oct 7, 2022
Uma solucão simples para integrar sua aplicação Laravel a API PIX do Banco Central do Brasil

Uma solução simples para integrar a sua aplicação Laravel com a API PIX do Banco Central do Brasil Instalação Publicando os assets Publicando o arquiv

Mateus Junges 74 Dec 19, 2022
Projeto de um blog com funções de (criar, editar, deletar e dar update) em uma página web. Introdução ao Laravel 8.x.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Isabella 1 Nov 7, 2021
Capitalize uma frase para o padrão brasileiro de capitalização.

php-capitalize-pt-br Esta biblioteca basicamente está resumida em uma única função. Ela capitaliza uma frase para o padrão brasileiro de capitalização

Cristian Curtinaz 15 Jan 4, 2023
Projeto criador para aplicar conhecimento em Laravel/PHP

nutrimais Projeto criador para aplicar conhecimento em Laravel/PHP Hoje, 04/05/2022 eu inicio esse projeto para começar a praticar o Laravel e abaixo

Vitor Silva 1 May 6, 2022