/ecommerce-nodejs-react-mongodb

Sistema Ecommerce utilizando as tecnologias NodeJS, react e mongodb

Primary LanguageJavaScript

Sistema Ecommerce utilizando as tecnologias NodeJS, react e mongodb

Alt text

Badge

O termo e-commerce é a comercialização de produtos e serviços pela internet, onde as transações são realizadas via dispositivos eletrônicos, como computadores e smartphones.

Esse tipo de comércio pode contar com diversos canais de vendas. O mais conhecido é a loja virtual. Porém, também temos outros, como marketplaces, vendas nas redes sociais e até vendas por e-mail marketing.

Embora seja uma ferramenta popular nos dias de hoje, muitas pessoas, s e até a imprensa ainda não sabem a definição correta e tratam o termo e-commerce como sinônimo de loja virtual. Isso já se provou ser um grande equívoco, tendo em vista que uma coisa não é a mesma que a outra.

É válido frisar que a expressão e-commerce se diferencia do termo “loja virtual”, uma vez que o segundo conceito se refere ao website em que os clientes adquirem os produtos, ou seja, é um dos canais do e-commerce. No entanto, existem outros, como citado anteriormente.

Criando um Ecommerce do Zero com Node.js, Express, React e Redux - Estrutura de vídeos

Link do curso: https://go.hotmart.com/W10551234Y

Introdução

Sobre o Curso
Sobre mim
Instalando aplicações necessárias - NodeJS
Instalando aplicacoes necessarias - MongoDB
Instalando aplicações necessárias - VSCode

Planejamento

Definindo os Casos de Uso da Loja - Administrador
Definindo os Casos de Uso da Loja - Cliente e Visitante
Especificando os relacionamentos e estrutura entre modelos
Instalando pacotes globais - Create-React-App e Mocha

API

- Preparação

Instalando as dependências
Criando as Pastas e Estrutura Inicial da API
Criando e Configurando o Arquivo de Entrada - Server.JS
Preparando os Arquivos de Configuração
(EXTRA) Como Configurar o E-mail GMAIL para usar na API
Configurando a Base das Rotas
Finalizando a Preparação
(EXTRA) Instalando Nodemon e criando Scripts

- Usuário

Criando o middleware de Autenticação
Criando e Configurando o Modelo (parte 1/2)
Criando e Configurando o Modelo (parte 2/2)
Criando as Rotas
Criando o Controller e Funcionalidades para as Rotas (1/3)
Criando o Controller e Funcionalidades para as Rotas (2/3)
Criando o Controller e Funcionalidades para as Rotas (3/3)
Criando Views para Recuperação de Senha
Criando Helper para envio do email de Recuperação de Senha
Testando Rotas e Controller (1/2)
Testando Rotas e Controller para Recuperação de Senha e Finalizando (2/2)

- Loja

Criando Modelo
Criando Rotas e Validação de Administração da Loja
Criando Controller
Fazendo os testes manuais e Finalizando

- Validações

Preparando e Fazendo Setup da Validação
Atualizando as validações nos Usuários
Atualizando a validação para o Controller de Lojas

- Clientes

Criando o Modelo de Clientes
Criando as Rotas para Clientes
Criando metodos do Controller para Administradores
Criando metodos do Controller para Clientes
Criando as Validações
Testando o Módulo de Clientes e Finalizando

- Categorias

Criando Modelo
Criando Rotas
Criando Controller
Criando Validações
Fazendo Testes no Módulo e Finalizando

- Produtos

Criando modelo
Criando rotas
Criando Controller para Administradores
Criando Controller para Cliente/Visitantes
Criando validações
Fazendo as atualizações de produtos em categorias
Testando e Finalizando módulo

- Avaliações

Criando Modelo
Criando rotas
Criando Controllers para Administrador e Cliente
Fazendo as validações com Joi
Testando todo o módulo e Finalizando

- Variações

Criando modelo
Criando e preparando as rotas
Desenvolvendo o Controller para Administrador e Clientes
Desenvolvendo as validações automatizadas
Testando todo o módulo e Finalizando

- Pedidos

Introdução
Criando o Modelo de Pedidos
Criando as rotas para Pedidos
Criando Modelos de Pagamento e Entrega
Criando o Controller para Administradores
Criando o Controller para Clientes/Visitantes
Atualizando e Corrigindo as rotas e controllers de Clientes com Pedidos
Criando as validações para Pedidos
Testando todo o módulo de Pedidos
(Extra) Criando modelo e funcionalidades para Registros de Pedidos

- Integração: Entrega (Correios)

Integração com Correios e Testes

- Entrega

Criando Rotas para módulo de Entrega
Criando Controller para Entrega
Criando Validações com Joi
Testando todo o módulo
Criando a validação de valor de Entrega para novos pedidos
Testando a validação de valor de Entrega para novos pedidos

- Integração: PagSeguro

Preparando arquivos e funções para Integração
Criando arquivo de configuração para Integração
Desenvolvendo a Integração completa com PagSeguro

- Pagamentos

Atualizando Modelos de Pagamento e Entrega
Atualizando os Controllers e Validações para Pedidos
Criando rotas para Pagamentos
Criando Controller de Pagamentos
Criando Validações para Pagamento e atualizando validações no Controller de Pedidos
Criando a View para gerar tokens de teste
Testando o módulo de Pagamento (1/2) - Criando três pedidos para teste
Testando o módulo de Pagamento (2/2) - Testando todas as rotas e modos de pagamento
(Extra) API - Testando
(Extra) API - Finalizando e colocando Online

- Finalizando

Finalizando a API

- (Extra) Notificações por Email

Introdução
Criando Controller para Notificações por Email e Atualizando Funcionalidades
Criando Mensagens para Notificações
Testando Módulo

- (Extra) Validação e Automatização de Quantidades

Introdução ao Módulo
Criando Validações e Atualizando Modelo
Criando Funcionalidades e Integrando com Controllers
Testando Módulo

Dashboard

- Planejamento

Introdução
Fazendo o Setup e instalando as dependências 
Definindo menus e tópicos

- Primeiros Passos

Como será a Dashboard?
Instalando o Redux e Preparando Pastas
Instalando o sistema de Rotas e Criando o primeiro Container e Componente

- Criando a Base

O que é HOC e criando a base dos menus da Dashboard
Criando estrutura dos menus da Dashboard
Criando o menu da Dashboard (1/2)
Criando o menu da Dashboard (2/2)

- Páginas (Criando a estrutura)

Finalizando tela de Pedidos (1/3)
Finalizando tela de Pedidos (2/3)
Finalizando tela de Pedidos (3/3)
Tela de Login - Preparando a Base e Definindo Componentes (1/2)
Tela de Login - Criando os Componentes // Inputs e Botões (2/2)
Tela de Recuperar e Redefinir Senha - Criando estrutura e configuração
Tela de Detalhes do Pedido - Criando estrutura base e Detalhes do Pedido (1/6)
Tela de Detalhes do Pedido - Finalizando a parte dos Dados do Pedido (2/6)
Tela de Detalhes do Pedido - Criando a estrutura para detalhes/status do pagamento (3/6)
Tela de Detalhes do Pedido -Finalizando o componente de detalhes/status do pagamento (4/6)
Tela de Detalhes do Pedido - Criando a estrutura para detalhes/status da entrega (5/6)
Tela de Detalhes do Pedido - Finalizando a estrutura para detalhes/status da entrega (6/6)

- Estilo

Definindo o Estilo para a Dashboard - Introdução (1/6)
Definindo o Estilo para a Dashboard - Menus e Estrutura Geral (2/6)
Definindo o Estilo para a Dashboard - Componentes da Página de Pedidos (3/6)
Definindo o Estilo para a Dashboard - Componentes da Página de Detalhes de Pedidos (4/6)
Definindo o Estilo para a Dashboard - Componentes da Página de Detalhes de Pedidos (5/6)
Definindo o Estilo para a Dashboard - Componentes da Página de Login e Recuperar Senha (6/6)

- Páginas (Criando a estrutura) - Parte 2

Clientes - Criando estrutura da página de Clientes
Clientes - Criando estrutura da página de Detalhes do Cliente (1/2)
Clientes - Criando estrutura da página de Detalhes do Cliente (2/2)
Categorias - Criando estrutura da página de Categorias
Categorias - Criando estrutura da página de Detalhes da Categoria (1/2)
Categorias - Criando estrutura da página de Detalhes da Categoria (2/2)
Produtos - Criando página de Produtos
Produtos - Preparando a base para a Página de Detalhes do Produto
Produtos - Criando a Página de Detalhes do Produto (1/4)
Produtos - Criando a Página de Detalhes do Produto (2/4)
Produtos - Criando a Página de Detalhes do Produto (3/4)
Produtos - Criando a Página de Detalhes do Produto (4/4)
Avaliações - Criando páginas de Avaliações e de Detalhes da Avaliação
Configurações da Loja - Criando página de configurações da loja
Página de Perfil - Criando a estrutura da página de Perfil
Finalizando Correções no Estilo e Visualizando o que foi feito até agora

- Integração

- Introdução

Introdução

- Autenticação

Definindo Base e Primeira Requisição
Fazendo Login com LocalStorage
Corrigindo erros na Dashboard
Login com Sucesso: Autenticação de Rotas
Login: Validando o formulário
Login com Erro: Criando Error Handling (1/2)
Login com Erro: Criando Error Handling (2/2)

- Pedidos

Pedidos - Criando a Listagem e Paginação
Pedidos - Criando a parte de pesquisa
Detalhes do Pedido - Criando actions e reducers
Detalhes do Pedido - Preparando o componente de Voltar e ativando actions
Detalhes do Pedido - Colocando dados dinâmicos 
Detalhes do Pedido - Ativando botão de Cancelar
Detalhes do Pedido - Colocando detalhes do pagamento e entrega

- Clientes

Clientes - Iniciando configuração com actions e reducer
Clientes - Terminando lista de pesquisa e paginação
Detalhes do Cliente - Preparando actions reducer e configurações
Detalhes do Cliente - Preparando arquivo index
Detalhes do Cliente - Criando parte de detalhes do cliente
Detalhes do Cliente - Criando parte de lista de pedidos do cliente

- Categorias

Categorias - Preparando página de Categorias e botão Novo
Categorias - Criando página de Nova Categoria
Detalhes da Categorias - Correção na API
Detalhes da Categorias - Configuração das actions e reducer
Detalhes da Categoria - Configuração inicial do index
Detalhes da Categoria - Implementando actions e configurações (1/2)
Detalhes da Categoria - Implementando actions e configurações (2/2)
Detalhes da Categoria - Criando Lista de Produtos

- Produtos

Produtos - Correção na API
Produtos - Preparando actions e reducer
Produtos - Criando Lista de Produtos
Produtos - Preparando base para novo Produto
Produtos - Criando página de Novo Produto (1/2)
Produtos - Criando página de Novo Produto (2/2)
Detalhes do Produto - Correção na API
Detalhes do Produto - Preparando actions e reducer
Detalhes do Produto - Configurando parte de Detalhes do Produto (1/2)
Detalhes do Produto - Configurando parte de Detalhes do Produto (2/2)

- Variações

Variações - Atualizar API para fotos
Variações - Preparando base para nova variação
Variações - Criando lista de variações
Variações - Criando página de nova variação (1/2)
Variações - Criando página de nova variação (2/2)
Detalhes da Variação - Fazendo integração da página (1/2)
Detalhes da Variação - Fazendo integração da página (2/2)
Detalhes da Variação - Corrigindo erros de integração (1/2)
Detalhes da Variação - Corrigindo erros de integração (2/2)

- Avaliações

Avaliações
Detalhes da Avaliação

- Configurações

Configurações

- Perfil

Perfil

- Finalizando

Finalizando e Criando Build final

Loja Virtual

Em desenvolvimento
Table of Contents
  1. About The Project
  2. Getting Started
  3. Planning
  4. Modelagem das classes de dominio
  5. Instalação do gerenciador de instancias NodeJS
  6. Installing Visual Studio Build Tools
  7. Installation of dependencies
  8. API-User
  9. User test
  10. Contact

About The Project

Obviamente, nenhum modelo atenderá a todos os projetos, pois suas necessidades podem ser diferentes. Portanto, estarei adicionando mais em um futuro próximo. Você também pode sugerir alterações bifurcando este repositório e criando uma solicitação pull ou abrindo um problema. Obrigado a todas as pessoas que contribuíram para expandir este modelo!

Getting Started

Instalação do NodeJS https://nodejs.org/en/

Instalação do Mongodb
https://www.mongodb.com/try/download/community

image

image

Acessar a pasta

C:\Program Files\MongoDB\Server\4.4\bin

image

criar variáveis de ambiente

image

Testar o banco de dados

image

Planning

Casos de uso do sistema:

Administrador

Ter acesso a todos os pedidos feitos dentro da loja Conseguir alterar o status de pedidos e avisar os clientes dessa alteração pelo e-mail Conseguir colocar o código de rastreamento do pedido do cliente Conseguir cancelar o pedido do cliente e avisar os clientes dessa alteração pelo e-mail Ter acesso a todos os clientes que já pediram na loja Pesquisar por nome ou telefone na listagem de clientes Conseguir alterar os dados ou remover um cliente da loja Ter acesso a todos os pedidos feitos por um cliente especifico Ter acesso a uma lista com todos os produtos que estão disponíveis e indisponíveis também Conseguir alterar os dados de um produto – disponibilidade, preço, detalhes e variações Conseguir adicionar fotos para um produto especifico Conseguir excluir produtos do sistema Ter acesso a uma lista com todas as categorias que estão disponíveis e indisponíveis também Conseguir alterar os dados de uma categoria, deixar indisponível e excluir a categoria Ter acesso a uma lista com as variações de um determinado produto Conseguir deixar indisponível determinada variação Conseguir enviar fotos exclusivas para uma variação Conseguir alterar os dados da variação – colocar desconto, alterar preço base Ter acesso a uma lista com todas as avaliações de um determinado produto Conseguir excluir as avaliações Conseguir alterar os próprios dados de usuário Curso de Ecommerce com NodeJS e React Conseguir fazer login como administrador no site Conseguir recuperar a senha do seu cadastro direto pelo e-mail Conseguir alterar os dados relacionados a loja Alterar dados de telefone, alterar e-mail e endereço

Cliente

Consegue deixar avaliações em produtos Fechar um pedido completo com meio de pagamento Realizar o pagamento diretamente pela loja Utilizando cartão de credito ou boleto Ver todos os pedidos que fez no seu nome Ver os detalhes de um pedido feito – pagamento, entrega, dados da loja Conseguir cancelar o seu pedido Alterar seus dados pessoais e de entrega online

Visitante

Ver todas as categorias disponíveis no site Ver todos os produtos de uma determinada categoria Ver todos os detalhes de um determinado produto Ver cada variação disponível para determinado produto Ver avaliações deixadas para produto selecionado Ver valores e descontos para cada produto na listagem Conseguir pesquisar um produto pelo nome, descrição ou categoria Ver uma lista com vários produtos sortidos Conseguir alterar a ordem dos produtos – ordem alfabética, ordem de preço, ordem aleatória Conseguir calcular o valor de entrega de determinado produto e do carrinho completo Conseguir também se cadastrar no sistema – fazer login, se cadastrar Ver as paginas institucionais da loja

Modelagem das classes de dominio

Inserir imagem de modelagem

Instalação do gerenciador de instancias NodeJS

image

Instalacao do Visual Studio Build Tools

Com a instalação do comando abaixo conseguimos instalar todos os pacotes, Iniciar o PowerShell como administrador e executar

npm install --global --production windows-build-tools 

image

Criando arquivos de configuração

image

Criando a configuração base de rotas

image

Instalação do package.json

npm init 

image

Installation of dependencies

npm install --save express@4.16.4 body-parser@1.18.3 compression@1.7.3 cors@2.8.5 crypto@1.0.1 ejs@2.6.1 express-jwt@5.3.1 faker@4.1.0 jsonwebtoken@8.4.0 moment@2.23 mongoose@5.4.0 mongoose-paginate@5.0.3 mongoose-unique-validator@2.0.2 morgan@1.9.1 multer@1.4.1 node-pagseguro@0.1.9 nodemailer@4.7.0 request@2.88.0 xml2js@0.4.19 

image

API-User

Criando Views para recuperar senha:

image

Testando as rotas User

Acessando o banco de dados mongodb: image

Criando o usuário para acessar o sistema: image

Gerando o Token através do login: image

Testando erros no formulário de login: Erro do password image Erro do email image

Acessando o bando de dados e listando o usuário criado: image

Contact

Your Name - @your_Facebook - lepinheiro100@terra.com.br

Project Link: https://github.com/luispinheiro