Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/t0malexander/basics-store

A minimalistic fashion store mobile application built with Expo CLI, React Native, Typescript, PostgreSQL, Nest.js, Prisma, Docker and Styled Components
https://github.com/t0malexander/basics-store

docker dotenv eslint expo jwt nest-js nodejs postgresql prisma react-native styled-components typescript vitest zod

Last synced: 28 days ago
JSON representation

A minimalistic fashion store mobile application built with Expo CLI, React Native, Typescript, PostgreSQL, Nest.js, Prisma, Docker and Styled Components

Awesome Lists containing this project

README

        

# Basics Store (em construção 🚧)

> ## Descrição
>
> Aplicativo de e-commerce exclusivo para dispositivos móveis com similaridades sistêmicas a aplicações sólidas do mercado como as chinesas Shopee e Shein, e também brasileiras como Zattini, Netshoes e Kanui. Será necessário ter instalado Expo CLI, Expo Go, Docker e Node.js instalados para testagem da aplicação.

## 🧰 Bibliotecas, frameworks e ferramentas

> **⚠️ Aviso:** esta aplicação ainda está em construção até o presente momento. A estimativa mínima de finalização é em 45 dias ou mais. As ferramentas listadas abaixo estarão separados por uso atual ou ser estipulada futuramente em razão das regras de negócio.

### 🔧 Em uso

- **React Native:** framework JavaScript para o desenvolvimento de aplicativos móveis multiplataforma. Ele permite que os desenvolvedores escrevam código em JavaScript que é executado diretamente nos dispositivos móveis, resultando em aplicativos nativos para iOS e Android

- **Expo:** plataforma de desenvolvimento que permite a criação de aplicativos móveis nativos utilizando React Native. Ela fornece uma série de ferramentas, bibliotecas e serviços para acelerar o desenvolvimento de aplicativos móveis

- **Typescript:** linguagem de programação que estende o JavaScript adicionando tipos estáticos opcionais. O TypeScript oferece recursos avançados de tipagem, autocompletar, refatoração e verificação estática de código, o que pode aumentar a produtividade e ajudar a evitar erros em tempo de execução

- **Babel:** ferramenta de transcompilação de código JavaScript. O Babel permite que os desenvolvedores escrevam código JavaScript moderno, utilizando recursos das versões mais recentes da linguagem, e o converta para uma versão compatível com navegadores e ambientes mais antigos

- **ESLint:** ferramenta de análise de código estática que ajuda a identificar problemas de formatação, estilo e possíveis erros em código JavaScript e TypeScript. O ESLint permite configurar regras personalizadas e integrá-las ao fluxo de desenvolvimento para manter um código limpo e consistente

- **Prisma:** camada de acesso a dados (ORM) que simplifica a interação com bancos de dados relacionais. O Prisma permite definir o modelo de dados, gerar automaticamente o esquema do banco de dados e fornece um cliente poderoso para realizar consultas e operações no banco de dados

- **Docker:** ferramenta para criação, implantação e execução de aplicativos em contêineres. O Docker permite empacotar um aplicativo e suas dependências em um contêiner isolado, enquanto o Docker Compose facilita a definição e o gerenciamento de múltiplos contêineres interligados

- **PostgreSQL:** banco de dados relacional de código aberto. Ele fornece recursos avançados de armazenamento, consulta e manipulação de dados, sendo amplamente utilizado em aplicações web e móveis

- **Nest.js:** framework de desenvolvimento para Node.js, baseado na linguagem TypeScript e na arquitetura de aplicativos orientada por módulos. O Nest.js visa fornecer uma estrutura robusta e escalável para a criação de aplicativos back-end altamente eficientes e modernos

- **Node.js:** ambiente de execução JavaScript baseado no motor V8 do Google Chrome. Ele permite que o JavaScript seja executado no lado do servidor, permitindo a construção de aplicações web escaláveis e de alta performance

- **Jest:** ferramenta de teste criado e mantida pela Meta Incorporation para aplicações baseadas em diversos frameworks e bibliotecas que permite a execução de testes unitários e de integração de forma simples e eficiente

- **Express.js:** framework de desenvolvimento de aplicações web baseadas em Node.js, amplamente adotado pela comunidade de desenvolvedores. Ele permite criar APIs e aplicativos web de forma eficiente, fornecendo uma camada abstrata para lidar com tarefas comuns, como roteamento, manipulação de solicitações e respostas, gerenciamento de sessões e muito mais

- **Dotenv:** biblioteca que permite carregar variáveis de ambiente a partir de um arquivo .env. Ele facilita a configuração de variáveis sensíveis, como chaves de API, em um ambiente de desenvolvimento e produção

- **class-validator:** biblioteca para validação de dados no Nest.js que utiliza decoradores para definir regras de validação nas propriedades dos objetos. Auxilia na garantia, integridade e conformidade dos dados. Importante para a segurança e consistência dos dados em aplicações web e APIs.

- **JSON Web Token (JWT):** padronização de tokens de acesso baseados em JSON. É amplamente utilizado para autenticação e autorização em aplicações web e APIs, permitindo o compartilhamento seguro de informações entre diferentes sistemas

### 🎯 Usos futuros e previstos

> Sem previsões de uso até o momento de novas bibliotecas e/ou frameworks!

## 💾 Modelagem do Banco de Dados

### Tabela User 👤

**Descrição:** representa um usuário na aplicação.

| Coluna | Descrição |
| ------------- | -------------------------------------------------- |
| id | ID do usuário (UUID) |
| name | Nome do usuário |
| email | Email do usuário (único) |
| password | Senha do usuário |
| creation_date | Data de criação do usuário |
| notifications | Relação com as notificações recebidas pelo usuário |
| cartItems | Relação com os itens do carrinho do usuário |
| Wishlist | Relação com a lista de desejos do usuário |

### Tabela Seller 🏪

**Descrição:** representa um vendedor na aplicação

| Coluna | Descrição |
| ------------- | ---------------------------------------------------- |
| seller_id | ID do vendedor (UUID) |
| name | Nome do vendedor |
| email | Email do vendedor (único) |
| password | Senha do vendedor |
| creation_date | Data de criação do vendedor |
| products | Relação com os produtos vendidos pelo vendedor |
| notifications | Relação com as notificações enviadas para o vendedor |

### Tabela Notification 🔔

**Descrição:** representa uma notificação enviada para um usuário ou vendedor

| Coluna | Descrição |
| ------------ | -------------------------------------------------- |
| id | ID da notificação (UUID) |
| message | Mensagem da notificação |
| readCheck | Indica se a notificação foi lida (booleano) |
| receipt_date | Data de recebimento da notificação |
| user_id | ID do usuário destinatário da notificação |
| user | Relação com o usuário destinatário da notificação |
| seller | Relação com o vendedor destinatário da notificação |
| seller_id | ID do vendedor destinatário da notificação |

### Tabela Wishlist 🌟

**Descrição:** representa a lista de desejos de um usuário

| Coluna | Descrição |
| ---------- | ------------------------------------------------------ |
| user_id | ID do usuário (único) |
| user | Relação com o usuário |
| products | Relação com os produtos adicionados à lista de desejos |
| product_id | ID do produto adicionado à lista de desejos |

### Tabela Cart 🛒

**Descrição:** representa o carrinho de compras de um usuário

| Coluna | Descrição |
| ------------- | ------------------------------------------- |
| user_id | ID do usuário (único) |
| user | Relação com o usuário |
| items | Relação com os itens do carrinho de compras |
| creation_date | Data de criação do carrinho de compras |

### Tabela CartItem 🛍️

**Descrição:** representa um item do carrinho de compras

| Coluna | Descrição |
| ---------- | --------------------------------- |
| item_id | ID do item (autoincremental) |
| product | Relação com o produto |
| product_id | ID do produto |
| cart | Relação com o carrinho de compras |
| cart_owner | ID do proprietário do carrinho |

### Tabela ProductCategory 🏷️

**Descrição:** representa uma categoria de produto

| Coluna | Descrição |
| ------------- | ------------------------------------------------ |
| category_id | ID da categoria (autoincremental) |
| name | Nome da categoria |
| creation_date | Data de criação da categoria |
| products | Relação com os produtos pertencentes à categoria |

### Tabela Product 👕

**Descrição:** representa um produto

| Coluna | Descrição |
| --------------- | ----------------------------------------------------------------- |
| product_id | ID do produto (UUID) |
| seller | Relação com o vendedor |
| seller_id | ID do vendedor |
| name | Nome do produto |
| price | Preço do produto |
| photos | Relação com as fotos do produto |
| colours | Relação com as cores do produto |
| product_details | Relação com os detalhes do produto |
| soldCount | Quantidade de vendas do produto |
| rating | Avaliação do produto |
| quantity | Quantidade disponível do produto |
| creation_date | Data de criação do produto |
| stock | Estoque do produto |
| category | Relação com a categoria do produto |
| category_id | ID da categoria do produto |
| isCartItem | Relação com os itens do carrinho de compras em que o produto está |
| favouritedCount | Contagem de vezes em que o produto foi adicionado aos favoritos |
| wishlist_id | ID da lista de desejos em que o produto foi adicionado |

### Tabela Photo 🖼️

**Descrição:** representa uma foto associada a um produto

| Coluna | Descrição |
| ---------- | -------------------------------------- |
| id | ID da foto (autoincremental) |
| url | URL da foto |
| product | Relação com o produto associado à foto |
| product_id | ID do produto associado à foto |

### Tabela Colour 🎨

**Descrição:** representa uma cor associada a um produto

| Coluna | Descrição |
| ---------- | ------------------------------------- |
| id | ID da cor (autoincremental) |
| name | Nome da cor |
| product | Relação com o produto associado à cor |
| product_id | ID do produto associado à cor |

### Enum ProductGender ♂️♀️

**Descrição:** representa o gênero de um produto

| Valor | Descrição |
| ------- | --------- |
| Male | Masculino |
| Female | Feminino |
| Unissex | Unissex |

### Tabela Description 📝

**Descrição:** representa os detalhes de um produto

| Coluna | Descrição |
| ---------- | -------------------------------------------- |
| id | ID dos detalhes (autoincremental) |
| product_id | ID do produto (único) |
| product | Relação com o produto associado aos detalhes |
| gender | Gênero do produto |
| material | Material do produto |
| sleeveType | Tipo de manga do produto |

## 📑 Instalação e uso

> ### 🔨 Em construção
>
> Esta seção encontra-se em construção e em breve será preenchida com instruções detalhadas sobre como instalar e utilizar esta aplicação

## ⚖️ Termos de uso

Este projeto é de livre uso para outros sem nenhuma restrição para cópias ou forks 👍🏻

### 🖋️ Autor: Tom Alexander