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
- Cadastro de produtos (CRUD básico)
- Listagem de produtos
- Edição de informações de produtos
- Exclusão de produtos
- Cadastro de clientes (CRUD básico)
- Listagem de clientes
- Edição de informações de clientes
- Exclusão de clientes
- Cadastro de vendedores (CRUD básico)
- Listagem de vendedores
- Edição de informações de vendedores
- Exclusão de vendedores
- 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.