Skip to content

Commit

Permalink
Merge pull request #10 from bruno-valero/dev
Browse files Browse the repository at this point in the history
completed: api development completed, must feed the readme
  • Loading branch information
bruno-valero authored Jun 24, 2024
2 parents b513679 + a7ee043 commit f433a56
Show file tree
Hide file tree
Showing 103 changed files with 7,857 additions and 1,661 deletions.
10 changes: 10 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
NODE_ENV=dev

# DATABASE (PRISMA)
DATABASE_URL="postgresql://postgres:docker@localhost:5432/fast-feet?schema=public"

# UPLOADT (AWS / CLOUDFARE)
CLOUDFARE_R2_ACCOUNT_ID="your id"
AWS_BUCKET_NAME="your bucket"
AWS_STORAGE_API_KEY="your key"
AWS_STORAGE_SECRET_API_KEY="your key"
4 changes: 4 additions & 0 deletions .env.test.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# override variables during test

AWS_BUCKET_NAME="fast-feet-api-teste"
REDIS_DB=1
40 changes: 40 additions & 0 deletions .github/workflows/run-e2e-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Run E2E Tests

on: [pull_request]

jobs:
run-e2e-tests:
name: Run E2E Tests
runs-on: ubuntu-latest

services:
postgres:
image: bitnami/postgresql
ports:
- 5432:5432
env:
POSTGRESQL_USERNAME: postgres
POSTGRESQL_PASSWORD: docker
POSTGRESQL_DATABASE: find-a-friend

cache:
image: bitnami/redis
ports:
- 6379:6379
env:
ALLOW_EMPTY_PASSWORD: yes

steps:
- uses: actions/checkout@v3

- uses: actions/setup-node@v3
with:
node-version: 18
cache: "npm"

- run: npm ci
- run: npm run ci:gen-jwt-keys

- run: npm run test:e2e
env:
DATABASE_URL: "postgresql://postgres:docker@localhost:5432/fast-feet?schema=public"
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ lerna-debug.log*
# dotenv environment variable files
.env
.env.development.local
.env.test
.env.test.local
.env.production.local
.env.local
Expand Down
113 changes: 25 additions & 88 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,99 +8,36 @@ Nesse desafio desenvolveremos uma API para controle de encomendas de uma transpo

Confira o enunciado do desafio no [Notion](https://efficient-sloth-d85.notion.site/Desafio-04-a3a2ef9297ad47b1a94f89b197274ffd)

## Etapa Atual

- Entities

- deliver domain entities
- [x] administrator (adm)
- [x] attachment (para enviar o foto ao entregar a encomenda)
- [x] courier (entregador)
- [x] order attachment (ligação entre os attachments e uma order)
- [x] order (encomenda)
- [x] recipient (destinatário)
- [x] update adm (registros do update de um adm)
- [x] update courier (registros do update de um entregador)
- [x] update order (registros do update de uma encomenda)
- [x] update recipient (registros do update de um destinatário)
- notification domain entities
- [x] notification

- Use Cases

- deliver domain use cases
- [x] authentication and users register
- [x] adm
- [x] authenticate adm
- [x] courier
- [x] register courier
- [x] authenticate courier
- [x] recipient
- [x] register recipient
- [x] authenticate recipient
- [x] other actions
- [x] courier
- [x] delete courier
- [x] fech couriers
- [x] find courier
- [x] update courier password
- [x] delete courier
- [x] recipient
- [x] delete recipient
- [x] fech recipients
- [x] find recipient
- [x] update recipient password
- [x] delete recipient
- [x] order
- [x] collect order
- [x] create order
- [x] delete order
- [x] deliver order
- [x] fetch orders
- [x] fetch recipient orders
- [x] fetch courier orders
- [x] fetch nearby orders
- [x] find order
- [x] mark order as awaiting for pickup
- [x] return order
- notification domain use cases
- [x] read notification
- [x] send notification

- Events
- [x] on order awaiting for pickup (when an order is ready and awaiting for a courier to pick it up)
- [x] on order courier accept (when a courier accepts deliver an order)
- [x] on order courier cancelled (when a courier cancels de delivery of an order)
- [x] on order courier collected (when a courier collects an order that is awaiting to be picked up)
- [x] on order courier deliver (when a courier delivers an order to it's recipient)
- [x] on order returned (when a recipient returns an order after receiving it)

### Requisitos Funcionais

- [ ] A aplicação deve ter dois tipos de usuário, entregador e/ou admin
- [ ] Deve ser possível realizar login com CPF e Senha
- [ ] Deve ser possível realizar o CRUD dos entregadores
- [ ] Deve ser possível realizar o CRUD das encomendas
- [ ] Deve ser possível realizar o CRUD dos destinatários
- [ ] Deve ser possível marcar uma encomenda como aguardando (Disponível para retirada)
- [ ] Deve ser possível retirar uma encomenda
- [ ] Deve ser possível marcar uma encomenda como entregue
- [ ] Deve ser possível marcar uma encomenda como devolvida
- [ ] Deve ser possível listar as encomendas com endereços de entrega próximo ao local do entregador
- [ ] Deve ser possível alterar a senha de um usuário
- [ ] Deve ser possível listar as entregas de um usuário
- [ ] Deve ser possível notificar o destinatário a cada alteração no status da encomenda
- [x] A aplicação deve ter dois tipos de usuário, entregador e/ou admin
- [x] Deve ser possível realizar login com CPF e Senha
- [x] Deve ser possível realizar o CRUD dos entregadores
- [x] Deve ser possível realizar o CRUD das encomendas
- [x] Deve ser possível realizar o CRUD dos destinatários
- [x] Deve ser possível marcar uma encomenda como aguardando (Disponível para retirada)
- [x] Deve ser possível retirar uma encomenda
- [x] Deve ser possível marcar uma encomenda como entregue
- [x] Deve ser possível marcar uma encomenda como devolvida
- [x] Deve ser possível listar as encomendas com endereços de entrega próximo ao local do entregador
- [x] Deve ser possível alterar a senha de um usuário
- [x] Deve ser possível listar as entregas de um usuário
- [x] Deve ser possível notificar o destinatário a cada alteração no status da encomenda

### Regras de Negócio

- [ ] Somente usuário do tipo admin pode realizar operações de CRUD nas encomendas
- [ ] Somente usuário do tipo admin pode realizar operações de CRUD dos entregadores
- [ ] Somente usuário do tipo admin pode realizar operações de CRUD dos destinatários
- [ ] Para marcar uma encomenda como entregue é obrigatório o envio de uma foto
- [ ] Somente o entregador que retirou a encomenda pode marcar ela como entregue
- [ ] Somente o admin pode alterar a senha de um usuário
- [ ] Não deve ser possível um entregador listar as encomendas de outro entregador
- [x] Somente usuário do tipo admin pode realizar operações de CRUD nas encomendas
- [x] Somente usuário do tipo admin pode realizar operações de CRUD dos entregadores
- [x] Somente usuário do tipo admin pode realizar operações de CRUD dos destinatários
- [x] Para marcar uma encomenda como entregue é obrigatório o envio de uma foto
- [x] Somente o entregador que retirou a encomenda pode marcar ela como entregue
- [x] Somente o admin pode alterar a senha de um usuário
- [x] Não deve ser possível um entregador listar as encomendas de outro entregador

### Requisitos Não Funcionais

- [ ]
- [x] os dados devem ser persistidos num banco de dados postgreSql
- [x] as fotos comprovando a entrega devem ser armazenadas no cloudfare R2
- [x] Devem se realizados testes unitários para todas as funcionalidades
- [x] Devem se realizados testes end-to-end para todas as rotas http
- [x] Deve ser implementado o CI (Continuous Integration) através das Github Actions
6 changes: 3 additions & 3 deletions client.http
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
@authToken = {{authenticate.response.body.token}}


@firstCourierId = {{fetchCourier.response.body.couriers[0]._id._value}}
@firstRecipientId = {{fetchRecipient.response.body.recipients[0]._id._value}}
@firstCourierId = {{fetchCourier.response.body.couriers[0].id}}
@firstRecipientId = {{fetchRecipient.response.body.recipients[0].id}}

@firstOrderId = {{fetchAllOrders.response.body.orders[0]._id._value}}
@firstOrderId = {{fetchAllOrders.response.body.orders[0].id}}

@currentLatitude = -23.3963853
@currentLongitude = -46.3086881
Expand Down
20 changes: 9 additions & 11 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,12 @@ services:
volumes:
- ./data/pg:/data/postgres

# cache:
# container_name: nest-clean-cache
# image: bitnami/redis
# ports:
# - 6379:6379
# environment:
# - ALLOW_EMPTY_PASSWORD=yes
# # - REDIS_DATABASE=0
# # - REDIS_MASTER_PORT_NUMBER=6379
# volumes:
# - ./data/redis:/data
cache:
container_name: fast-feet-cache
image: bitnami/redis
ports:
- 6379:6379
environment:
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- ./data/redis:/data
Loading

0 comments on commit f433a56

Please sign in to comment.