Um sistema web moderno, seguro e fácil de usar para organizar eventos de Amigo Secreto (Secret Santa). Chega de papeizinhos! Crie grupos, convide amigos via link, defina orçamentos e deixe o sistema realizar o sorteio automaticamente.
O projeto está rodando ao vivo e pode ser acessado no link abaixo:
👉 sfriend.on3digital.com.br
O sistema foi desenvolvido para ser intuitivo e direto ao ponto:
- 👤 Autenticação Completa: Cadastro, login e recuperação de senha seguros.
- 👥 Gerenciamento de Grupos:
- Crie múltiplos grupos (ex: "FamÃlia", "Trabalho").
- Defina data do evento, orçamento sugerido e descrição.
- Apenas o dono do grupo (admin) pode editar ou excluir o grupo.
- 🔗 Sistema de Convites:
- Geração de links únicos com tokens de convite.
- Qualquer pessoa com o link pode entrar no grupo (após logar/cadastrar).
- � Lista de Desejos (Wishlist):
- Cada participante pode escrever o que gostaria de ganhar.
- A lista é visÃvel para quem te tirou.
- Bloqueio de edição: Após o sorteio, a lista não pode ser alterada para evitar confusões.
- 🎲 Sorteio Automático:
- Algoritmo inteligente que garante que ninguém tire a si mesmo.
- O sorteio é realizado com um clique pelo administrador.
- Resultado sigiloso: cada um vê apenas o seu par.
- 🚫 Moderação:
- O administrador pode remover membros antes do sorteio acontecer.
Este projeto utiliza a stack moderna do ecossistema PHP:
- Backend: Laravel Framework (v12.x)
- Linguagem: PHP 8.2+
- Frontend: Blade Templates com Tailwind CSS e Alpine.js (via Laravel Breeze)
- Banco de Dados: MySQL / SQLite / PostgreSQL
- Build Tool: Vite
Siga os passos abaixo para rodar o projeto localmente ou em seu servidor.
- PHP 8.2 ou superior
- Composer
- Node.js e NPM
- Banco de dados (MySQL ou SQLite)
-
Clone o repositório:
git clone [https://github.com/seu-usuario/secret-friend.git](https://github.com/seu-usuario/secret-friend.git) cd secret-friend -
Instale as dependências do PHP:
composer install
-
Configure o ambiente:
cp .env.example .env
Abra o arquivo
.enve configure suas credenciais de banco de dados (DB_DATABASE,DB_USERNAME, etc). -
Gere a chave da aplicação:
php artisan key:generate
-
Execute as migrações (Criação das tabelas):
php artisan migrate
-
Instale e compile os assets (Frontend):
npm install npm run build
-
Inicie o servidor local:
php artisan serve
Acesse
http://localhost:8000.
Contribuições são sempre bem-vindas! Se você quiser adicionar uma nova funcionalidade ou corrigir um bug:
- Faça um Fork do projeto.
- Crie uma Branch para sua feature (
git checkout -b feature/MinhaNovaFeature). - Faça o Commit (
git commit -m 'Adiciona nova feature'). - Faça o Push (
git push origin feature/MinhaNovaFeature). - Abra um Pull Request.
Para quem deseja entender o código, os principais arquivos lógicos estão em:
app/Http/Controllers/GroupController.php: Lógica de criação, sorteio e gestão de membros.app/Models/Group.php: Modelo do grupo e relações.app/Models/Pairing.php: Modelo que armazena os pares sorteados (Santa -> Giftee).routes/web.php: Definição de todas as rotas e proteções via middleware.
Este projeto é open-source e licenciado sob a MIT License.
Desenvolvido com â�¤ï¸� para unir amigos e famÃlias.
---- Endpoints de saude:
/upe/healthz. - Check de prontidao:
php artisan ops:readiness. - Pipeline CI:
.github/workflows/ci.yml. - Operacao via comandos Artisan + Scheduler:
php artisan ops:backup-dbphp artisan ops:health-checkphp artisan queue:work --stop-when-empty --tries=3 --timeout=120php artisan schedule:listscripts/ops/supervisor-queue.conf(cenario VPS com supervisor)scripts/ops/k6-smoke.js
- Regra de alerta:
- Se Telegram estiver configurado (
TELEGRAM_BOT_TOKEN+TELEGRAM_CHAT_ID), envia somente Telegram. - Se Telegram nao estiver configurado, envia para
OPS_ALERT_EMAIL.
- Se Telegram estiver configurado (
- Guia de cron na Hostinger:
docs/CRON_HOSTINGER.md. - Runbook completo:
docs/PRODUCTION_READINESS.md.
- Seeder:
database/seeders/TestUserSeeder.php. - Executar:
php artisan db:seed --class=TestUserSeeder. - Credenciais:
- Email:
teste@amigosecreto.local. - Senha:
Teste@123456.
- Email:
- Telemetria de frontend: erros JS e metricas de navegacao sao enviados para
/telemetry/frontend. - Painel de status operacional:
/ops/status(acesso controlado porOPS_STATUS_ALLOWED_EMAILS). - Testes E2E:
npm run e2e. - Carga concorrente focada em convite/sorteio:
scripts/ops/k6-concurrency.js.