Projeto de uma loja de compra e venda de artes em geral. Requisito parcial da disciplina de Introdução ao Desenvolvimento Web (SCC0219) do curso de Ciências de Computação do ICMC/USP durante o 1º semestre de 2022.
-
O sistema deve ter dois tipos gerais de usuários: clientes e administradores; clientes devem poder ativar a funcionalidade de artesão e se tornarem clientes artesãos:
-
Administradores são responsáveis por registrar e gerenciar administradores, clientes, e produtos ou serviços disponivilizados.
-
Clientes são usuários que acessam o sistema para comprar produtos.
-
Clientes artesãos são clientes que, tendo ativada a funcionalidade de artesão, acessam o sistema para anunciar produtos.
-
-
O registro de administrador deve incluir, no mínimo,
nome
,id
, eemail
. -
Cada registro de cliente deve incluir, no mínimo,
nome
,id
,address
eemail
. -
Quando um cliente ativar a opção de artesão, seu registro também deve incluir
description
. -
O registro de produtos deve incluir, no mínimo,
id
,title
,image
,description
,price
,quantity_in_stock
equantity_sold
. -
A loja deve vender apenas produtos.
-
Processo de venda de um produto: produtos são selecionados, incluídos no carrinho e têm suas quantidades escolhidas. Produtos são comprados usando um número de cartão de crédito (sem validação). A quantidade de produtos vendidos é subtraída da quantidade em estoque e adicionada à quantidade vendida. Os carrinhos são esvaziados apenas após o pagamento ou, então, pelos clientes.
-
Manutenção de produtos
-
Administradores podem ler e deletar produtos.
-
Clientes artesãos podem criar, atualizar, ler e deletar seus próprios produtos.
-
-
O sistema deve ter uma funcionalidade extra de valorização aos clientes artesãos da plataforma. Todos eles devem ter páginas dedicadas contando com descrição.
-
O sistema deve prover recursos de acessibilidade e boa usabilidade.
artezaria é uma plataforma de compra e venda de obras de arte, como quadros, artesanatos, esculturas, sendo eles de produção única ou em larga quantidade. O foco principal é no comércio dos produtos, mas, também, de valorização de artistas, suas artes e histórias.
O protótipo da plataforma foi implementado usando HTML, CSS, alguns componentes do Material Design e o carrossel do framework Owl Carousel 2 para a exibição dos produtos e os scripts necessários para o funcionamento dos elementos.
A versão atual da plataforma, em produção, foi implementada usando os frameworks React e Node, MongoDB para armazenamento de dados, ideais de estilização do Material Design e a biblioteca Material UI, que implementa os componentes do Material Design. O protótipo se encontra na pasta prototipo
e a versão final em artezaria
.
Para organizar os conjuntos de telas, foram desenvolvidos diagramas de navegação para o cliente e administrador.
Os mockups desenvolvidos para as páginas do cliente estão sob a pasta imagens/telas
, na raiz do projeto, com nomes correspondentes aos itens dos diagramas de tela.
Através das telas propostas, os autores esperam que, através do sistema:
-
Um usuário qualquer possa entrar com e-mail e senha na plataforma, cadastrar-se e alterar informações sobre seu próprio cadastro, através das telas
Entrar/Cadastrar
ePerfil
; -
Um cliente possa visualizar, adicionar ao carrinho e comprar Produtos disponíveis no site, através das telas
Tela Inicial
,Produto
,Carrinho
ePagamento
; -
Um cliente possa visualizar a página de descrição de artistas ativos na plataforma através da tela
Artesão
; -
Um cliente possa se tornar um cliente artesão, gerenciar suas informações de artesão, seus anúncios ativos e vendas em processo, através das telas
Perfil do artesão
,Gerenciar vendas
eGerenciar anúncios
; -
Um administrador possa gerenciar o sistema, administradores, anúncios e usuários através das telas
Dashboard
,Gerenciar anúncios
eGerenciar usuários
.
O código-fonte do protótipo está disposto sob a pasta prototipo
. Nela, estão as pastas css
, com os estilos desenvolvidos, pages
, com as páginas desenvolvidas e os demais arquivos utilizados pelas ferramentas externas utilizadas.
O código-fonte do protótipo está disposto sob a pasta artezaria
. Nela, estão as pastas application
, com o conteúdo do front-end em React.js e server
, com o conteúdo do back-end em Node.js. O diretório src
de application
é dividido em:
api
: arquivos de integração com o servidor;domain
: definição dos objetos utilizados (CreditCard
,Product
,PurchaseItem
,Purchase
eUser
);presentation
:components
: componentes parciais utilizados nas telas;context
: contexto de aplicação de carrinho, gerenciamento, tema e usuário;pages
: páginas desenvolvidas;routers
: rotas para aplicação.
- Arquivos da aplicação.
O diretório src
de server
é dividido em:
controller
: arquivos de integração com o servidor;model
: definição dos objetos utilizados (Purchase
,Product
,PurchaseItem
eUser
);route
: rotas para aplicação;util
: arquivos úteis;- Arquivos da aplicação.
Basta realizar o download do repositório, navegar até a pasta em que estão dispostos os protótipos desenvolvidos e abrir num navegador web.
- No Ubuntu, instale o
npm
; - Para construir projetos com nodemon, use
npm install -g nodemon
; - Para executar o projeto em Node, dentro da pasta
server
, instale as dependências comnpm install
e executenpm start
; - Para construir projetos em React, use
npm install create-react-app
; - Para executar o projeto em React, dentro da pasta
application
, instale as dependências comnpm install
e executenpm start
.
O projeto foi executado apenas no navegador Google Chrome, sem problemas aparentes de execução. Quando houver a possibilidade de uso de frameworks e servidor, serão utilizadas as ferramentas adequadas para testes, como, por exemplo, JUnit e Postman.
Use, para exemplo, o usuário
cliente1@cliente.com
e senhacliente123
- Um cliente deve conseguir cadastrar-se e fazer login;
- Um cliente deve conseguir ver produtos publicados ao clicar em seus cards;
- Um cliente deve conseguir ver artistas ao clicar em seus nomes nos cards de produto;
- Um cliente, na página de produto, deve conseguir selecionar um produto para o carrinho;
- Um cliente, na página de carrinho, deve conseguir alterar a quantidade e remover seus produtos;
- Um cliente, no fluxo de compra, deve conseguir comprar seu carrinho;
- Um cliente, a partir da tela de edição de perfil, deve conseguir alterar seus dados ou se tornar um artesão.
Use, para exemplo, o usuário
vincent@vangogh.com
e senhavincent123
- Um artesão deve conseguir, a partir de sua página de perfil, inserir sua descrição;
- Um artesão deve conseguir, a partir da página de anúncios, criar e visualizar seus anúncios;
- Um artesão deve conseguir, a partir da visualização de vendas de um anúncio, marcá-lo como enviado aos compradores.
Use, para exemplo, o usuário
admin1@admin.com
e senhaadmin123
- Um administrador deve conseguir, a partir da tela de manutenção de anúncios, pesquisar, visualizar ou remover um anúncio;
- Um administrador deve conseguir, a partir da tela de manutenção de usuários, pesquisar, visualizar (se artesão), tornar administrador e excluir (se não for administrador) um usuário.
- Construção dos protótipos iniciais: a intenção do grupo era utilizar os componentes (campos de texto, botões e cards) disponibilizados pelo Material Design. Isso não foi plenamente possível pois, para a implementação, seriam necessários arquivos de configuração personalizados externos aos
.html
e.css
criados.