# Rifalto - Sistema de Rifas Um sistema web para gerenciamento de rifas e vendas de números, desenvolvido em Flask. ## Descrição O Rifalto é uma aplicação web que permite: - Criação e gerenciamento de rifas - Venda de números por vendedores autenticados - Reserva de números pelos compradores - Controle de estoque de números disponíveis - Backup automático do banco de dados ## Instalação ### Usando Docker (Recomendado) 1. Clone o repositório 2. Configure o arquivo de configuração (veja seção de Configuração) 3. Execute com Docker: ```bash docker build -t rifalto . docker run -p 5000:5000 -v $(pwd)/instance:/rifalto/instance rifalto ``` ### Instalação Local 1. Clone o repositório 2. Instale as dependências: ```bash pip install -r requirements.txt ``` 3. Configure as variáveis de ambiente: ```bash export FLASK_APP=rifaserver.app ``` 4. Execute a aplicação: ```bash ./start.sh ``` ## Configuração ### Arquivo de Configuração Crie um arquivo `instance/config.json` na raiz do projeto com as seguintes configurações: ```json { "SECRET_KEY": "sua-chave-secreta-aqui", "REDIRECT_ROOT_URL": "https://seu-site.com" } ``` **Parâmetros de configuração:** - `SECRET_KEY`: Chave secreta para sessões Flask (será gerada automaticamente se não fornecida) - `REDIRECT_ROOT_URL`: URL para redirecionamento da página raiz (opcional) ### Variáveis de Ambiente Você também pode configurar usando variáveis de ambiente com prefixo `FLASK_`: ```bash export FLASK_SECRET_KEY="sua-chave-secreta" export FLASK_REDIRECT_ROOT_URL="https://seu-site.com" ``` ## Comandos CLI ### Criar Vendedor ```bash flask create-seller ``` ### Criar Rifa ```bash flask cria-rifa "" ``` ### Alterar Senha ```bash flask muda-senha ``` ## Estrutura do Banco de Dados O sistema usa SQLite por padrão e cria automaticamente as seguintes tabelas: - `sellers`: Vendedores do sistema - `purchases`: Compras/vendas realizadas - `raffles`: Rifas disponíveis - `tickets`: Números reservados ## Backup O sistema realiza backup automático do banco de dados a cada hora, salvando os arquivos na pasta `instance/backup/`. ## Desenvolvimento ### Executar Testes ```bash pytest test/ ``` ### Migrações do Banco ```bash flask db upgrade ``` ## Estrutura de Arquivos ``` rifalto/ ├── rifaserver/ # Código principal da aplicação │ ├── app.py # Aplicação Flask principal │ ├── models.py # Modelos do banco de dados │ ├── templates/ # Templates HTML │ └── static/ # Arquivos estáticos (CSS, JS) ├── migrations/ # Migrações do banco de dados ├── test/ # Testes automatizados ├── instance/ # Arquivos de configuração e dados │ ├── config.json # Configuração da aplicação │ ├── raffle.db # Banco de dados SQLite │ └── backup/ # Backups automáticos ├── requirements.txt # Dependências Python ├── Containerfile # Configuração Docker └── start.sh # Script de inicialização ``` ## Licença [Adicione informações de licença aqui]