LetMovie é um projeto de web server full-stack que utiliza Python puro (módulo http.server) para o backend e um frontend de HTML, CSS e JavaScript para o cliente. O sistema permite cadastrar, listar e excluir filmes de um banco de dados MySQL.
Este projeto foi construído sem o uso de frameworks de backend (como Flask ou Django) para focar nos fundamentos do protocolo HTTP e na manipulação de requisições.
- Backend 100% Python Nativo: O servidor é construído usando apenas as bibliotecas padrão
http.server,json,osere. - Servidor de API RESTful:
GET /api/filmes: Lista todos os filmes do banco com dados agregados (atores, diretores, etc.).GET /api/filme/{id}: Retorna os detalhes de um filme específico (usado na tela de sucesso).POST /cadastro: Adiciona um novo filme ao banco de dados.POST /delete: Exclui um filme existente (lidando com chaves estrangeiras).
- Servidor de Arquivos Estáticos: Serve os arquivos
html/,css/ejs/para o navegador. - Validação de Backend:
- Verifica se todos os campos obrigatórios foram preenchidos.
- Impede a inserção de filmes com títulos duplicados.
- Frontend Dinâmico: O JavaScript (via
fetch API) se comunica com o backend para listar, cadastrar e excluir filmes sem recarregar a página.
- Backend: Python 3 (
http.server) - Database: MySQL
- Conector Python-MySQL:
mysql-connector-python - Frontend: HTML5, CSS3, JavaScript (ES6+)
WEB-SERVER/
├── bd/
│ └── webserver.sql # Script de criação do banco
├── css/
│ └── style.css # Estilos gerais
├── html/
│ ├── cadastro.html # Página de cadastro de filmes
│ ├── index.html # Página inicial
│ ├── listar_filmes.html # Página de listagem
│ ├── login.html # Página de login (não funcional)
│ └── sucesso.html # Tela de sucesso pós-cadastro
├── img/
│ └── wallpaper-netflix.jpg # Imagem de fundo
├── js/
│ └── script.js # Lógica do frontend
└── server/
└── server.py # Servidor backend
Siga estes passos para configurar e executar o projeto localmente.
- Python 3.x instalado.
- MySQL Server instalado e em execução.
- Abra seu cliente MySQL (Workbench, terminal, etc.).
- Crie o banco de dados:
CREATE DATABASE LetMovie;
- Use o banco recém-criado:
USE LetMovie;
- Execute todo o script do arquivo
bd/webserver.sql(código incluído abaixo) para criar todas as tabelas e popular o banco com dados iniciais.
O projeto tem apenas uma dependência Python. No seu terminal, instale-a:
pip install mysql-connector-python
Abra o arquivo server/server.py (código incluído abaixo).
Na seção Conexão com o Banco de Dados, verifique se o host, user e, principalmente, a password estão corretos para a sua instalação do MySQL.
python
try:
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="root", # <-- MUDE AQUI SE NECESSÁRIO
database="LetMovie"
)
Abra o arquivo server/server.py e verifique a seção de conexão com o banco de dados. Certifique-se de que host, user e password estão corretos conforme sua instalação:
try:
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="root", # <-- Altere aqui se necessário
database="LetMovie"
)
- Executando o Servidor
-
No terminal, acesse a pasta raiz do projeto (WEB-SERVER) e execute:
-
python server/server.py
-
💡 Caso utilize Python 3 em paralelo, use python3 em vez de python. Ao iniciar com sucesso, você verá mensagens como:
🚀 Servidor rodando em http://localhost:8000 Servindo arquivos do diretório: C:\Caminho\Para\WEB-SERVER
- Acesse no navegador: 👉 http://localhost:8000
- A página inicial (index.html) será exibida.
- Clique em "Adicionar Filmes" para abrir o formulário de cadastro.
- Após cadastrar, você será redirecionado para a tela de sucesso, onde poderá visualizar os detalhes do novo filme.
Este projeto está licenciado sob a MIT License. Consulte o arquivo LICENSE para mais informações.
Este projeto foi desenvolvido com o objetivo de compreender profundamente o funcionamento de um servidor HTTP em Python e a comunicação entre frontend e backend sem o uso de frameworks. Uma base sólida para quem deseja dominar o desenvolvimento full-stack com fundamentos puros.