Wocart
Wocart runs the whole cash-on-delivery business for Algerian stores: an Arabic-first checkout, phone verification, Yalidine, ZR Express, NOEST, Guepex and 82 EcoTrack couriers, your own drivers, and M
翻訳待ち
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Sistema de pedidos da cantina do COTEMIG. O aluno vê o cardápio, monta o carrinho, paga com o saldo da carteira e retira o pedido no balcão com um código. A administração acompanha os pedidos e cuida do cardápio e dos alunos.
| Nome | Matrícula |
|---|---|
| Caio Antunes Guedes Alves da Silva | 12501719 |
| Davi Pimentel de Moraes | 12502120 |
| Ana Julia Gois do Nascimento | 22401369 |
| João Vitor Marques de Sampaio | 22400540 |
| Felipe Ferreira da Fonseca | 12502537 |
| Maria Eduarda Fidelis Correa | 12401595 |
| Parte | Tecnologia |
|---|---|
| Front-end | HTML, CSS, JavaScript e Bootstrap 5.3 |
| Back-end | Python, Flask (API JSON), Flask-SQLAlchemy e Flask-Login |
| Banco | MySQL, com stored procedures (SQLite para testar sem MySQL) |
| Servidor | AWS EC2 |
Existem três perfis: aluno, admin e mestre. O primeiro cadastro do sistema vira mestre.
Aluno
Admin
Mestre (tudo do admin, e mais)
Status de um pedido: Pendente (em preparo) → Pronto (pronto para retirar) → Concluído (entregue). Antes de ser entregue, o pedido pode ser Cancelado.
flowchart LR
T["Tela<br/>(HTML + JS)"] -->|"fetch: HTTP + JSON"| C["Controller<br/>(rotas)"]
C --> S["Service<br/>(regras)"]
S --> M["Model<br/>(CRUD)"]
S --> R["Repository<br/>(consultas especiais)"]
M --> DB[("MySQL")]
R -->|"CALL sp_..."| DB
| Camada | Pasta | Papel |
|---|---|---|
| Controller | backend/controllers/ | Recebe a requisição, chama o service e devolve JSON |
| Service | backend/services/ | Um caso de uso por classe, com as regras de negócio |
| Model | backend/models/ | Uma classe por tabela, com o CRUD |
| Repository | backend/repositories/ | Consultas não-CRUD, feitas por stored procedures |
Exemplo, o aluno finaliza o pedido:
cardapio.js → POST /api/carrinho/finalizar → item_pedido_controller → FinalizarPedidoService → Pedido / ItemPedido → banco
O diagrama de classes está em docs/diagrama-de-classes.md.
| Procedure | Usada em |
|---|---|
sp_produtos_por_categoria | Filtro por categoria |
sp_produtos_por_faixa_de_preco | Filtro por preço |
sp_produtos_ordenar_por_preco / sp_produtos_ordenar_por_nome | Ordenação |
sp_repetir_ultimo_pedido | "Repetir último pedido" |
sp_combinacoes_mais_pedidas | Combos mais pedidos |
Elas são criadas pelo backend/database/create-database.sql.
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python app.py
Abra http://127.0.0.1:5000.
Sem configuração, o projeto usa SQLite (cantina.db). Para usar o MySQL, rode o create-database.sql e crie um .env na raiz:
DATABASE_URL=mysql+pymysql://usuario:senha@localhost/cantina_db?charset=utf8mb4
SECRET_KEY=um-texto-longo-e-aleatorio
FLASK_DEBUG=False
| Pasta | O que tem em cada pasta |
|---|---|
backend/ | A API: camadas, app.py e login |
backend/database/ | Script do MySQL (tabelas e procedures) |
front-end/ | As páginas |
front-end/js/ | Um JavaScript por página |
backend/imagens-produtos | Fotos dos produtos |
docs/ | Diagrama de classes |
preco_atual.RateioPagamento e a tabela existem, mas ainda não têm tela nem rota.