Interface web alternativa ao Streamlit, construída com React + Vite + Tailwind CSS no frontend e FastAPI no backend, que se comunica com o motor Prolog (sistema.pl) via pyswip.
React (porta 5173) → FastAPI (porta 8000) → SWI-Prolog (sistema.pl)
O frontend React faz chamadas HTTP para a API FastAPI, que executa as queries no Prolog e retorna os resultados em JSON.
src/
├── api/
│ └── server.py ← Backend FastAPI (endpoints REST)
├── react/
│ ├── index.html
│ ├── package.json
│ ├── vite.config.js
│ └── src/
│ ├── main.jsx
│ ├── index.css
│ ├── App.jsx
│ └── components/
│ ├── StorySection.jsx ← Narrativa do caso
│ ├── CharacterCard.jsx ← Cards dos suspeitos
│ └── ResultReveal.jsx ← Resultado da análise
└── prolog/
└── sistema.pl ← Lógica Prolog (inalterado)
- História — O usuário lê a narrativa do roubo no museu (local do crime, sensores ativados, contexto).
- Suspeitos — São apresentados cards com o perfil de cada suspeita (localização, habilidade, álibi). O usuário seleciona quem acredita ser a culpada.
- Resultado — O sistema consulta o Prolog via API, revela se o palpite estava correto e exibe a análise completa com pontuação de todas as suspeitas.
| Método | Rota | Descrição |
|---|---|---|
| GET | /api/suspeitos |
Retorna todos os suspeitos com pontuação e nível de suspeita |
| GET | /api/explicacao/{nome} |
Retorna a explicação detalhada da análise de um suspeito |
- SWI-Prolog instalado (
brew install swi-prolog) - Python 3 com os pacotes:
pyswip,fastapi,uvicorn - Node.js (v18+) com npm
pip install pyswip fastapi uvicorncd src/react
npm installcd src/api
python -m uvicorn server:app --reload --port 8000O servidor estará disponível em http://localhost:8000.
cd src/react
npm run devO frontend estará disponível em http://localhost:5173.
Abra o navegador em:
http://localhost:5173
- React — Biblioteca para construção da interface
- Vite — Bundler e servidor de desenvolvimento
- Tailwind CSS — Framework de estilização utilitária
- FastAPI — Framework Python para a API REST
- pyswip — Ponte Python ↔ SWI-Prolog
- SWI-Prolog — Motor de inferência lógica