GithubHelp home page GithubHelp logo

diegoandcontroll / api-azapfy-challenge Goto Github PK

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

Este repositório contém um projeto back-end desenvolvido em Laravel, que serve como uma estrutura robusta e funcional para o teste técnico proposto. O objetivo principal deste projeto é demonstrar habilidades e conhecimentos em desenvolvimento back-end utilizando o framework Laravel.

PHP 74.74% JavaScript 0.22% Blade 25.04%

api-azapfy-challenge's Introduction

Controle de Notas Fiscais - Desafio Backend

Este projeto é uma API REST para gerenciamento de notas fiscais dos usuários, desenvolvido como parte de um desafio de backend.

Desafio

O objetivo é desenvolver uma API REST para controle de notas fiscais dos usuários. Principais funcionalidades incluem:

  • Endpoints para cadastro e login de usuários
  • CRUD para gerenciamento de notas fiscais
  • Restrição de acesso às APIs de notas fiscais apenas para usuários autenticados
  • Cada nota só pode ser acessada pelo usuário que a criou
  • Envio de email para o usuário ao criar uma nota fiscal
  • Retornos de response e HTTP status code adequados

Estrutura da Nota Fiscal

A nota fiscal deve conter campos obrigatórios e passar por validações específicas:

  • numero: Identificador único do documento (String)
  • valor: Valor da nota fiscal (Numérico)
  • data_emissao: Dia da emissão do documento (Data)
  • cnpj_remetente: Identificador do remetente da nota (String, 9 dígitos, válido, não no futuro)
  • nome_remetente: Nome do remetente da nota (String, até 100 caracteres)
  • cnpj_transportador: Identificador do transportador da nota (String, válido)
  • nome_transportador: Nome do transportador da nota (String, até 100 caracteres)

Aspectos Principais

  • Arquitetura em Camadas: Utilização de uma estrutura organizada em camadas como Presentation, Application, Domain e Infrastructure para separar as responsabilidades e facilitar o desenvolvimento e manutenção do código.

  • Princípios SOLID: Aplicação de alguns princípios do SOLID para garantir um código mais coeso e extensível.

  • Design Patterns: Utilização de alguns Design Patterns para resolver desafios de design comuns.

  • Geração de PDF: Foi incorporada a capacidade de criar documentos em formato PDF a partir dos dados do sistema. Isso permite a geração dinâmica de relatórios ou documentos essenciais para o usuário ou processos internos.

  • Storage: Foi implementado um serviço para gerenciar o armazenamento e o acesso aos documentos do sistema por meio de soluções de storage, como armazenamento em nuvem, bancos de dados ou sistemas de arquivos locais.

Recomendações

Algumas sugestões para a realização do teste:

  • Utilizar Form Request para validações dos campos das APIs
  • Implementar camada de transformação dos dados com Api Resources
  • Restringir acesso utilizando Polices e/ou Gates
  • Utilizar Notifications para envio de emails e coloque-os em fila para disparo assíncrono
  • Desenvolver testes automatizados
  • Criar documentação da API usando Postman, Swagger ou outras ferramentas de preferência

Setup do Projeto

Para executar o projeto localmente, siga os passos abaixo:

Pré-requisitos

  • Docker

Instalação

  1. Clone o repositório
  2. Configure o ambiente de acordo com o .env.example cp .env.example .env
  3. Instalar as dependências do composer
    docker run --rm \
     -u "$(id -u):$(id -g)" \
     -v "$(pwd):/var/www/html" \
     -w /var/www/html \
     laravelsail/php83-composer:latest \
     composer install --ignore-platform-reqs
  4. Inicie o projeto com docker ./vendor/bin/sail up
  5. Execute as migrações do banco ./vendor/bin/sail artisan migrate

Documentação da API

A documentação completa da API está disponível aqui.

api-azapfy-challenge's People

Contributors

diegoandcontroll 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.