Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Openpass — Plataforma de Compra e Gerenciamento de Ingressos

Python Flask SQLite HTML5 CSS3

Plataforma web para cadastro de usuários, login, compra de ingressos e acompanhamento de compras realizadas.


Sobre o Projeto

O Openpass é uma aplicação web desenvolvida com Python, Flask e SQLite, criada para simular uma plataforma de compra e gerenciamento de ingressos.

A aplicação permite que usuários realizem cadastro, façam login, visualizem eventos disponíveis, comprem ingressos e acompanhem os ingressos adquiridos.

Além disso, o sistema registra logs das principais ações realizadas pelos usuários, como cadastro, login, compra de ingresso e logout.


Objetivo do Projeto

O objetivo do Openpass é simular uma plataforma simples de venda de ingressos, permitindo praticar conceitos importantes de desenvolvimento web, como:

  • criação de rotas com Flask;
  • autenticação básica de usuários;
  • controle de sessão;
  • integração com banco de dados SQLite;
  • cadastro e consulta de dados;
  • registro de logs de uso;
  • relacionamento entre tabelas;
  • compra de ingressos com controle de disponibilidade.

Funcionalidades

  • Página inicial da plataforma.
  • Cadastro de novos usuários.
  • Login de usuários cadastrados.
  • Validação de e-mail já existente.
  • Controle de sessão do usuário.
  • Listagem de ingressos disponíveis.
  • Compra de ingressos.
  • Controle de quantidade disponível.
  • Histórico de ingressos comprados.
  • Registro de logs das ações do usuário.
  • Logout com limpeza da sessão.
  • Banco de dados SQLite.
  • Dados iniciais de eventos cadastrados automaticamente.

Funcionalidades por Tela

Página Inicial

  • Apresenta o projeto.
  • Permite acesso às páginas principais.
  • Serve como entrada da aplicação.

Cadastro

  • Permite cadastrar um novo usuário.
  • Valida se o e-mail já está cadastrado.
  • Registra log de cadastro realizado.

Login

  • Permite autenticação do usuário.
  • Valida e-mail e senha.
  • Cria uma sessão para o usuário logado.
  • Registra log de login realizado.

Comprar Ingressos

  • Exibe os ingressos disponíveis.
  • Permite selecionar um ingresso.
  • Permite escolher a quantidade.
  • Verifica se há disponibilidade suficiente.
  • Registra a compra no banco.
  • Atualiza a quantidade disponível do ingresso.
  • Registra log da compra realizada.

Meus Ingressos

  • Lista as compras feitas pelo usuário logado.
  • Exibe nome do evento, quantidade, preço, data do evento e data da compra.
  • Ordena as compras pela data mais recente.

Logout

  • Registra o logout do usuário.
  • Limpa os dados da sessão.
  • Redireciona para a página inicial.

Tecnologias Utilizadas

Tecnologia Finalidade
Python Linguagem principal do projeto
Flask Framework web da aplicação
SQLite Banco de dados local
HTML5 Estrutura das páginas
CSS3 Estilização da interface
Jinja2 Renderização de dados nos templates
Pandas Manipulação de dados
Plotly Visualização de dados
Gradio Interface para análise ou visualização futura
OpenPyXL Manipulação de arquivos Excel
Scikit-learn Possível uso em análise/classificação de dados


Descrição dos Principais Arquivos

app.py

Arquivo principal da aplicação.

Ele contém toda a lógica do sistema, incluindo:

  • configuração da aplicação Flask;
  • conexão com o banco SQLite;
  • cadastro de usuários;
  • login;
  • controle de sessão;
  • compra de ingressos;
  • listagem de ingressos comprados;
  • logout;
  • registro de logs.

criar_banco.py

Arquivo responsável por criar o banco de dados e as tabelas necessárias para o funcionamento da aplicação.

Ao executar esse arquivo, o banco database.db é criado com as tabelas:

  • usuarios;
  • ingressos;
  • logs;
  • compras.

Também são inseridos eventos de exemplo para que o sistema já tenha ingressos disponíveis para compra.


database.db

Arquivo do banco de dados SQLite.

Ele armazena os dados da aplicação, como usuários, ingressos, compras e logs.


requirements.txt

Arquivo com as dependências utilizadas no projeto.

Dependências presentes:

pandas
plotly
gradio
openpyxl
scikit-learn

Como a aplicação principal utiliza Flask, também é necessário instalar:

flask

Banco de Dados

O projeto utiliza o banco de dados SQLite, salvo no arquivo database.db.

O banco possui quatro tabelas principais:

  • usuarios;
  • ingressos;
  • compras;
  • logs.

Tabela usuarios

Responsável por armazenar os usuários cadastrados na plataforma.

Campo Tipo Descrição
id INTEGER Identificador único do usuário
nome TEXT Nome do usuário
email TEXT E-mail do usuário
senha TEXT Senha do usuário

Tabela ingressos

Responsável por armazenar os eventos e ingressos disponíveis.

Campo Tipo Descrição
id INTEGER Identificador único do ingresso
nome_evento TEXT Nome do evento
descricao TEXT Descrição do evento
preco REAL Preço do ingresso
disponivel INTEGER Quantidade disponível
data_evento TEXT Data do evento

Tabela compras

Responsável por armazenar as compras realizadas pelos usuários.

Campo Tipo Descrição
id INTEGER Identificador único da compra
usuario_id INTEGER ID do usuário que realizou a compra
ingresso_id INTEGER ID do ingresso comprado
quantidade INTEGER Quantidade comprada
data_compra TEXT Data e hora da compra

Tabela logs

Responsável por registrar as ações realizadas pelos usuários na plataforma.

Campo Tipo Descrição
id INTEGER Identificador único do log
usuario_id INTEGER ID do usuário
nome_usuario TEXT Nome do usuário
email_usuario TEXT E-mail do usuário
acao_usuario TEXT Ação realizada
data_hora TEXT Data e hora da ação
classification TEXT Campo reservado para classificação/análise

Eventos Cadastrados Inicialmente

Ao executar o arquivo criar_banco.py, alguns eventos são cadastrados automaticamente:

Evento Descrição Preço Disponibilidade Data
Show A Espetáculo musical com banda ao vivo R$ 100,00 50 10/07/2025
Teatro X Peça premiada com elenco renomado R$ 80,00 40 05/08/2025
Festival Z Festival com atrações nacionais R$ 120,00 60 20/09/2025

Como Executar o Projeto

1. Clone o repositório

git clone https://github.com/seu-usuario/Openpass.git

2. Acesse a pasta do projeto

cd Openpass

3. Crie um ambiente virtual

No Windows:

python -m venv venv
venv\Scripts\activate

No Linux ou macOS:

python3 -m venv venv
source venv/bin/activate

4. Instale as dependências

pip install flask pandas plotly gradio openpyxl scikit-learn

Caso prefira instalar usando o arquivo requirements.txt:

pip install -r requirements.txt

Se o Flask não estiver no requirements.txt, instale separadamente:

pip install flask

5. Crie o banco de dados

python criar_banco.py

Se tudo estiver correto, será exibida a mensagem:

Banco de dados criado com sucesso!

6. Execute a aplicação

python app.py

7. Acesse no navegador

Abra o navegador e acesse:

http://127.0.0.1:5000

Rotas da Aplicação

Rota Método Descrição
/ GET Página inicial
/cadastro GET Exibe a tela de cadastro
/cadastro POST Cadastra um novo usuário
/login GET Exibe a tela de login
/login POST Realiza autenticação do usuário
/comprar GET Exibe os ingressos disponíveis
/comprar POST Realiza a compra de ingresso
/meus-ingressos GET Exibe os ingressos comprados pelo usuário
/logout GET Encerra a sessão do usuário

Como Usar a Plataforma

  1. Acesse a página inicial.
  2. Clique em cadastro.
  3. Informe nome, e-mail e senha.
  4. Faça login com o usuário cadastrado.
  5. Acesse a tela de compra de ingressos.
  6. Escolha o evento desejado.
  7. Informe a quantidade de ingressos.
  8. Confirme a compra.
  9. Acesse a tela Meus Ingressos para visualizar suas compras.
  10. Finalize a sessão usando a opção de logout.

Fluxo de Funcionamento

flowchart TD
    A[Usuário acessa o Openpass] --> B[Realiza cadastro]
    B --> C[Faz login]
    C --> D[Acessa a tela de compra]
    D --> E[Escolhe evento e quantidade]
    E --> F[Sistema verifica disponibilidade]
    F --> G{Há ingressos suficientes?}
    G -->|Sim| H[Compra é registrada]
    G -->|Não| I[Mensagem de quantidade indisponível]
    H --> J[Disponibilidade é atualizada]
    J --> K[Usuário visualiza em Meus Ingressos]
    K --> L[Usuário faz logout]
Loading

Registro de Logs

O sistema registra ações importantes realizadas pelos usuários.

Exemplos de ações registradas:

  • cadastro realizado;
  • login realizado;
  • compra de ingresso;
  • logout realizado.

Esses logs podem ser utilizados futuramente para:

  • auditoria;
  • análise de comportamento;
  • geração de relatórios;
  • identificação de padrões;
  • aplicação de modelos de classificação.

Exemplo de Uso

Um usuário deseja comprar ingresso para um festival.

Ele acessa o Openpass, realiza seu cadastro, faz login, escolhe o evento Festival Z, informa a quantidade de ingressos desejada e confirma a compra.

Após a compra, o sistema registra a transação, reduz a quantidade disponível do ingresso e exibe a compra na página Meus Ingressos.


Como Adicionar Imagens no README

Para que as imagens apareçam corretamente no GitHub, crie a pasta:

docs/images/

Depois coloque seus prints dentro dela com estes nomes:

banner.png
home.png
cadastro.png
login.png
comprar.png
meus-ingressos.png
fluxo.gif

Os caminhos usados no README são:

![Banner](docs/images/banner.png)
![Tela inicial](docs/images/home.png)
![Cadastro](docs/images/cadastro.png)
![Login](docs/images/login.png)
![Compra](docs/images/comprar.png)
![Meus ingressos](docs/images/meus-ingressos.png)
![Demonstração](docs/images/fluxo.gif)

Caso queira usar outros nomes, basta alterar o caminho da imagem no README.


Possíveis Melhorias Futuras

Algumas melhorias que podem ser implementadas futuramente:

  • Criptografia de senha.
  • Tela administrativa para gerenciar eventos.
  • Cadastro de novos eventos pela interface.
  • Edição e exclusão de eventos.
  • Cancelamento de compras.
  • Geração de QR Code para ingresso.
  • Envio de comprovante por e-mail.
  • Validação de ingresso na entrada do evento.
  • Dashboard com total de vendas.
  • Relatório de compras por usuário.
  • Relatório de eventos mais vendidos.
  • Exportação de dados em Excel.
  • Aplicação de IA para análise dos logs.
  • Classificação automática de ações suspeitas.
  • Hospedagem da aplicação em ambiente online.
  • Melhoria na segurança das sessões.
  • Utilização de variáveis de ambiente para a chave secreta.

Segurança

Alguns pontos de segurança importantes para futuras versões:

  • Armazenar senhas com hash em vez de texto puro.
  • Não deixar a secret_key fixa diretamente no código.
  • Usar variáveis de ambiente para dados sensíveis.
  • Validar melhor os dados enviados pelos formulários.
  • Proteger rotas restritas.
  • Evitar exposição de mensagens técnicas ao usuário final.
  • Implementar controle de permissões.
  • Usar HTTPS em ambiente de produção.

Observações Importantes

  • O arquivo database.db pode ser criado executando o script criar_banco.py.
  • O sistema utiliza sessões para identificar o usuário logado.
  • A compra só é realizada se houver quantidade disponível suficiente.
  • Ao realizar uma compra, a quantidade disponível do ingresso é reduzida automaticamente.
  • O projeto está configurado para rodar localmente na porta 5000.
  • Em ambiente de produção, recomenda-se desativar o modo debug.

Contribuição

Contribuições são bem-vindas.

Para contribuir com o projeto:

  1. Faça um fork do repositório.

  2. Crie uma branch para sua alteração:

git checkout -b minha-melhoria
  1. Faça as alterações necessárias.

  2. Realize o commit:

git commit -m "Melhoria no projeto"
  1. Envie para o repositório remoto:
git push origin minha-melhoria
  1. Abra um Pull Request.

Autor

Projeto desenvolvido por Matheus Soares para fins acadêmicos e de aprendizado, com foco em desenvolvimento web, banco de dados, autenticação de usuários, compra de ingressos e registro de logs.


Licença

Este projeto é de uso acadêmico e educacional.

About

Openpass Plataforma web para compra e gerenciamento de ingressos, desenvolvida com Python, Flask, SQLite, HTML e CSS.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages