Visão Geral do Projeto

Neste projeto prático, vamos desenvolver um sistema de vendas utilizando Node.js e Express. O sistema permitirá o gerenciamento de produtos, clientes, vendedores e pedidos, aplicando os conceitos aprendidos ao longo do curso.

O projeto será desenvolvido de forma incremental, seguindo as melhores práticas de desenvolvimento de software e utilizando o padrão MVC (Model-View-Controller). Vamos implementar um CRUD completo para a entidade Produtos, que servirá como base para o restante do sistema.

Tecnologias

Node.js, Express, PostgreSQL, JavaScript

Complexidade

Intermediária

Tempo Estimado

24 horas (conforme plano de curso)

Objetivos do Projeto

Ao desenvolver este sistema de vendas, você terá a oportunidade de:

  • Aplicar os conceitos de lógica de programação com JavaScript em um contexto real
  • Utilizar o Git para controle de versão do projeto
  • Implementar conceitos de orientação a objetos em JavaScript
  • Aplicar padrões de desenvolvimento de software
  • Desenvolver uma API RESTful com Node.js e Express
  • Integrar a aplicação com um banco de dados PostgreSQL
  • Aplicar boas práticas de desenvolvimento e segurança
  • Utilizar metodologias ágeis para gerenciar o desenvolvimento

Estrutura do Banco de Dados (PostgreSQL)

O sistema utilizará um banco de dados PostgreSQL com as seguintes tabelas principais, conforme o script `script_vendas.sql`:

/* Criando a Tabela Cliente */
create table cliente( 
    codigo_cliente integer not null unique,
    nome_cliente varchar(40),
    endereco varchar(50),
    cidade varchar(30),
    cep char(10),
    uf char(2),
    cnpj char(16),
    ie char(20),
    constraint pk_cliente primary key (codigo_cliente)
); 

/* Criando a Tabela Vendedor*/
create table vendedor( 
    codigo_vendedor integer not null unique,
    nome_vendedor varchar(40),
    salario_fixo numeric(10,2),
    faixa_comissao char(1),
    constraint pk_vendedor primary key(codigo_vendedor)
);

/* Criando a Tabela Pedido */
create table pedido(
    num_pedido integer not null unique,
    prazo_entrega smallint not null,
    codigo_cliente integer not null,
    codigo_vendedor integer not null,
    constraint pk_pedido primary key (num_pedido),
    constraint fk_pedido_cli foreign key (codigo_cliente) references cliente,
    constraint fk_pedido_ven foreign key (codigo_vendedor) references vendedor
);

/* Criando a Tabela Produto */
create table produto( 
    codigo_produto integer not null unique,
    unidade char(3),
    descricao_produto varchar(30),
    val_unit numeric(10,2),
    constraint pk_produto primary key (codigo_produto)
);

/* Criando a Tabela Item do Pedido */
create table item_pedido( 
    num_pedido integer not null,
    codigo_produto integer not null,
    quantidade numeric(10,2),
    constraint pk_item_pedido primary key (num_pedido,codigo_produto),
    constraint fk_item_pedido_ped foreign key (num_pedido) references pedido,
    constraint fk_item_pedido_pro foreign key (codigo_produto) references produto
);

Funcionalidades Principais

1. Gerenciamento de Produtos
  • Cadastro de produtos (CRUD básico)
  • Listagem de produtos
  • Edição de informações de produtos
  • Exclusão de produtos
2. Gerenciamento de Clientes
  • Cadastro de clientes (CRUD básico)
  • Listagem de clientes
  • Edição de informações de clientes
  • Exclusão de clientes
3. Gerenciamento de Vendedores
  • Cadastro de vendedores (CRUD básico)
  • Listagem de vendedores
  • Edição de informações de vendedores
  • Exclusão de vendedores
4. Registro de Pedidos
  • Criação de novos pedidos
  • Adição de itens (produtos) ao pedido
  • Listagem de pedidos
  • Consulta de detalhes de um pedido

Arquitetura do Sistema

O sistema será desenvolvido seguindo a arquitetura MVC (Model-View-Controller), com uma API RESTful no backend. A estrutura de diretórios será organizada da seguinte forma:

sistema-vendas/
├── src/
│   ├── config/
│   │   ├── database.js     # Configuração de conexão com o PostgreSQL
│   │   └── server.js       # Configuração do servidor Express
│   ├── controllers/
│   │   ├── produtoController.js
│   │   ├── clienteController.js
│   │   ├── vendedorController.js
│   │   └── pedidoController.js
│   ├── models/
│   │   ├── Produto.js
│   │   ├── Cliente.js
│   │   ├── Vendedor.js
│   │   └── Pedido.js
│   ├── routes/
│   │   ├── produtoRoutes.js
│   │   ├── clienteRoutes.js
│   │   ├── vendedorRoutes.js
│   │   └── pedidoRoutes.js
│   ├── middlewares/
│   │   └── validator.js    # Middleware de validação de dados (opcional)
│   ├── utils/
│   │   └── helpers.js      # Funções auxiliares (opcional)
│   └── main.js             # Ponto de entrada da aplicação
├── .env                    # Variáveis de ambiente
├── .gitignore              # Arquivos a serem ignorados pelo Git
├── package.json            # Dependências e scripts
└── README.md               # Documentação do projeto

Tecnologias Utilizadas

Node.js

Ambiente de execução JavaScript server-side

Express

Framework web para Node.js

PostgreSQL

Sistema de gerenciamento de banco de dados relacional

Git

Sistema de controle de versão

Próximos Passos

Explore as seções de Requisitos, Modelagem, Arquitetura e Passo a Passo para entender em detalhes como o projeto será desenvolvido.