Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lipej/4pets-monorepo
https://github.com/lipej/4pets-monorepo
monorepo nestjs react sqlite typescript yarn-workspaces
Last synced: 6 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/lipej/4pets-monorepo
- Owner: lipej
- Created: 2021-08-09T18:08:00.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2021-09-15T02:24:47.000Z (over 3 years ago)
- Last Synced: 2023-03-07T15:23:24.121Z (almost 2 years ago)
- Topics: monorepo, nestjs, react, sqlite, typescript, yarn-workspaces
- Language: JavaScript
- Homepage: https://4pets.company
- Size: 9.36 MB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# 🐶 🐱 4Pets
## Deploy link
[4pets.company](https://4pets.company)
## Time
**Hipster:** Otávio, Leonardo, Marcela, Débora
**Hacker:** Felipe
## Introdução
Nosso desafio foi criar uma vitrine para produto digital, preferencialmente utilizando PWA (é uma aplicação híbrida entre web e mobile). Após muita conversa e debate entre os membros da equipe, foi escolhido o mercado pet.
Essa decisão foi tomada através de um dot voting feito no Miro, no qual cada um do time escolheu um tema diverso e foi feito um levantamento dos prós e contras de cada um deles. No final do processo cada um deu um voto para o tema favorito.
Através de pesquisa com o usuário, mercado e benchmark optamos por utilizar somente roupas e acessórios para cachorros e gatos. Futuramente o site deve ser ampliado para atender outros animais de estimação.
## 🧰 Principais técnologias utilizadas
**Client:** React, Javascript
**Server:** Node, NestJS, Typescript, MySQL, Jest
**Deploy:** DigitalOcean
**Automação:** GitHub Actions
## 💻 Screenshots
# 🏭 Instalar e rodar o projeto
## Sem docker
1. Clonar o projeto
2. Instalar as dependências com: (caso não tenha yarn instalado executar antes ```npm i -g yarn```)```bash
yarn install
```
3. Configurar as váriaveis de ambiente (seguindo os arquivos .env.example em casa projeto)
4. Rodar front
```bash
yarn start:front
```
5. Rodar back
```bash
yarn start:back
```## Com docker
1. Clonar o projeto
2. Configurar as váriaveis de ambiente (dentro do Dockerfile)
3. Realizar o build do docker
```bash
docker-compose up --build
```## 📖 API
#### GET - todos produtos/paginado
```http
GET /api/v1/store/products?page=:number
```#### GET - um produto
```http
GET /api/v1/store/product/:id
```| Parametro | Tipo | Descrição |
| :-------- | :------- | :-------------------------------- |
| `id` | `number` | **Required** - Id do produto |-----
#### POST - adicionar produto
```http
GET /api/v1/store/product
```| body | Tipo atributo | Descrição |
| :-------- | :------- | :-------------------------------- |
| `name` | `string` | **Required** - nome do produto |
| `description` | `string` | **Required** - descrição do produto |
| `image` | `string` | **Required** - link da imagem do produto |
| `storeName` | `string` | **Required** - nome da loja |
| `linkToProd` | `string` | **Required** - link para loja |
| `sizes` | `Array` | **Required** - tamanhos do produto |
| `categoryId` | `number` | **Required** - id da categoria que o produto pertence |-----
#### DELETE - deletar produto```http
DELETE /api/v1/store/product/:id
```| Parametro | Tipo | Descrição |
| :-------- | :------- | :-------------------------------- |
| `id` | `number` | **Required** - Id do produto |-----
#### PUT - atualizar produto
```http
PUT /api/v1/store/product/:id
```| Parametro | Tipo | Descrição |
| :-------- | :------- | :-------------------------------- |
| `id` | `number` | **Required** - Id do produto || body | Tipo atributo | Descrição |
| :-------- | :------- | :-------------------------------- |
| `name` | `string` | **Not Required** - nome do produto |
| `description` | `string` | **Not Required** - descrição do produto |
| `image` | `string` | **Not Required** - link da imagem do produto |
| `storeName` | `string` | **Not Required** - nome da loja |
| `linkToProd` | `string` | **Not Required** - link para loja |
| `categoryId` | `number` | **Not Required** - id da categoria que o produto pertence |-----
#### GET - Procurar por categoria e departamento
```http
GET /api/v1/store/findby?department=:department&category=:category&limit=:limit&page=:page&by=:by&order=:order
```| Parametro | Tipo | Descrição |
| :-------- | :------- | :-------------------------------- |
| `department` | `number` | **Required** - id do departamento |
| `category` | `number` | **Required** - id da categoria |
| `limit` | `number` | **Required** - limite de produtos retornados |
| `page` | `number` | **Required** - pagina atual |
| `by` | `number` | **Required** - parametro a ser considerado na ordem (id, updatedAt...) |
| `order` | `string` | **Required** - ordem de retorno ASC/DESC |-----
#### GET - um produto
```http
GET /api/v1/store/store/search?name=:name&page=:page
```| Parametro | Tipo | Descrição |
| :-------- | :------- | :-------------------------------- |
| `name` | `string` | **Required** - parametro a ser buscado|
| `page` | `number` | **Required** - pagina atual |-----
#### POST - criar categoria
```http
POST /api/v1/store/department
```| body | Tipo atributo | Descrição |
| :-------- | :------- | :-------------------------------- |
| `name` | `string` | **Required** nome do departamento|-----
#### POST - criar categoria
```http
POST /api/v1/store/category
```| body | Tipo atributo | Descrição |
| :-------- | :------- | :-------------------------------- |
| `name` | `string` | **Required** - nome da categoria |
| `departmentId` | `number` | **Required** - id do departamento a qual vai pertencer|-----
#### GET - procurar produtos de um departamento
```http
GET /api/v1/store/getAllByDep?department=:id&limit=:limit&page=:page
```| Parametro | Tipo | Descrição |
| :-------- | :------- | :-------------------------------- |
| `id` | `number` | **Required** - id do departamento |
| `limit` | `number` | **Required** - limite de retorno |
| `page` | `number` | **Required** - pagina atual |## Autores
- [@fej0se](https://www.github.com/fej0se)