https://github.com/reinaldoper/myprojectlaravel
Tecnical test for job opportunity at BE backend software house.
https://github.com/reinaldoper/myprojectlaravel
Last synced: 8 months ago
JSON representation
Tecnical test for job opportunity at BE backend software house.
- Host: GitHub
- URL: https://github.com/reinaldoper/myprojectlaravel
- Owner: reinaldoper
- Created: 2024-06-24T15:44:53.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-07-03T00:34:29.000Z (almost 2 years ago)
- Last Synced: 2025-02-05T16:19:11.567Z (over 1 year ago)
- Language: PHP
- Size: 86.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Projeto Laravel com MySQL e Docker
Este projeto é um projeto de API construída com Laravel, utilizando MySQL como banco de dados e Docker para facilitar o desenvolvimento e a execução do ambiente.
## Pré-requisitos
- Docker e Docker Compose instalados na máquina.
- Git instalado para clonar o repositório.
- Composer instalado na máquina(V2x).
## Passos para Clonar e Configurar o Projeto
1. Clone o repositório:
```sh
git clone
cd myprojectlaravel
```
2. Crie um arquivo `.env` na raiz do projeto e adicione as seguintes configurações:
```env
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:1p7qVkorm6QM2KVc1iy+K6Zaz2/dyb9yCeKG5kOQor4=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel_user
DB_PASSWORD=secret
JWT_SECRET=o0gqNWvsQHv2PDabGQkjUs1bQ5j2QtwIu0zpeDcJIUmJjkurF8hFdWqUKra2JyEE
```
3. Suba o ambiente Docker na raiz da aplicação:
```sh
docker-compose up -d
```
4. Instale as dependências do Laravel:
```sh
composer install
```
5. Gere a chave secret da aplicação:
```sh
php artisan jwt:secret
```
6. Comando para expor a chave secret da aplicação:
```sh
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
```
7. Execute as migrações para criar as tabelas no banco de dados:
```sh
php artisan migrate
```
8. Execute o servidor:
```sh
php artisan serve
```
## Estrutura do Projeto
- **app/Http/Controllers**: Contém os controladores da aplicação.
- **app/Models**: Contém os modelos Eloquent.
- **routes/api.php**: Define as rotas da API.
- **.env**: Arquivo de configuração de ambiente.
## Rotas da API
### Autenticação
- **Cadastro de Usuário (signup)**
```sh
curl -X POST http://localhost:8000/api/signup \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "password"}'
```
- **Login de Usuário (login)**
```sh
curl -X POST http://localhost:8000/api/login \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "password"}'
```
### Clientes
- **Listar Clientes**
```sh
curl -X GET http://localhost:8000/api/clientes \
-H "Authorization: Bearer SEU_TOKEN"
```
- **Adicionar Cliente**
```sh
curl -X POST http://localhost:8000/api/clientes \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN" \
-d '{
"nome": "Cliente Nome",
"cpf": "320.583.140-34",
"telefones": [
{"numero_telefone": "(11) 98765-4321"},
{"numero_telefone": "(11) 12345-6789"}
],
"enderecos": [
{"rua": "Rua Principal", "cidade": "São Paulo", "estado": "SP", "cep": "12345-678"},
{"rua": "Avenida Secundária", "cidade": "Rio de Janeiro", "estado": "RJ", "cep": "54321-098"}
]
}'
```
- **Mostrar Cliente**
```sh
curl -X GET http://localhost:8000/api/clientes/1 \
-H "Authorization: Bearer SEU_TOKEN"
```
- **Trazer Cliente com Vendas Filtradas por Mês e Ano**
```sh
curl -X GET "http://localhost:8000/api/clientes/1?mes=6&ano=2024" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN"
```
- **Atualizar Cliente**
```sh
curl -X PUT http://localhost:8000/api/clientes/1 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN" \
-d '{
"nome": "Cliente Novo",
"cpf": "320.583.140-34",
"telefones": [
{"numero_telefone": "(11) 98765-4321"},
{"numero_telefone": "(11) 12345-6789"}
],
"enderecos": [
{"rua": "Rua Principal", "cidade": "São Paulo", "estado": "SP", "cep": "12345-678"},
{"rua": "Avenida Secundária", "cidade": "Rio de Janeiro", "estado": "RJ", "cep": "54321-098"}
]
}'
```
- **Excluir Cliente**
```sh
curl -X DELETE http://localhost:8000/api/clientes/1 \
-H "Authorization: Bearer SEU_TOKEN"
```
### Produtos
- **Listar Produtos**
```sh
curl -X GET http://localhost:8000/api/produtos \
-H "Authorization: Bearer SEU_TOKEN"
```
- **Adicionar Produto**
```sh
curl -X POST http://localhost:8000/api/produtos \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN" \
-d '{"nome": "Produto Nome", "preco": 100.00}'
```
- **Mostrar Produto**
```sh
curl -X GET http://localhost:8000/api/produtos/1 \
-H "Authorization: Bearer SEU_TOKEN"
```
- **Atualizar Produto**
```sh
curl -X PUT http://localhost:8000/api/produtos/1 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN" \
-d '{"nome": "Produto Nome", "preco": 100.00}'
```
- **Excluir Produto**
```sh
curl -X DELETE http://localhost:8000/api/produtos/1 \
-H "Authorization: Bearer SEU_TOKEN"
```
### Vendas
- **Registrar Venda**
```sh
curl -X POST http://localhost:8000/api/vendas \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN" \
-d '{"cliente_id": 2, "produto_id": 1, "quantidade": 2, "preco_unitario": 100.00}'
```