Skip to content

JohnAugust934/secret_friend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

� Gerenciador de Amigo Secreto

Laravel PHP TailwindCSS License

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.


🚀 Demo em Produção

O projeto está rodando ao vivo e pode ser acessado no link abaixo:

👉 sfriend.on3digital.com.br


✨ Funcionalidades

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.

🛠� Tecnologias Utilizadas

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

💻 Instalação e Auto-Hospedagem (Self-Hosting)

Siga os passos abaixo para rodar o projeto localmente ou em seu servidor.

Pré-requisitos

  • PHP 8.2 ou superior
  • Composer
  • Node.js e NPM
  • Banco de dados (MySQL ou SQLite)

Passo a Passo

  1. 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
  2. Instale as dependências do PHP:

    composer install
  3. Configure o ambiente:

    cp .env.example .env

    Abra o arquivo .env e configure suas credenciais de banco de dados (DB_DATABASE, DB_USERNAME, etc).

  4. Gere a chave da aplicação:

    php artisan key:generate
  5. Execute as migrações (Criação das tabelas):

    php artisan migrate
  6. Instale e compile os assets (Frontend):

    npm install
    npm run build
  7. Inicie o servidor local:

    php artisan serve

    Acesse http://localhost:8000.


� Como Contribuir

Contribuições são sempre bem-vindas! Se você quiser adicionar uma nova funcionalidade ou corrigir um bug:

  1. Faça um Fork do projeto.
  2. Crie uma Branch para sua feature (git checkout -b feature/MinhaNovaFeature).
  3. Faça o Commit (git commit -m 'Adiciona nova feature').
  4. Faça o Push (git push origin feature/MinhaNovaFeature).
  5. Abra um Pull Request.

📂 Estrutura Principal

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.

📄 Licença

Este projeto é open-source e licenciado sob a MIT License.


Desenvolvido com �� para unir amigos e famílias.

---

Estabilidade e Operacao

  • Endpoints de saude: /up e /healthz.
  • Check de prontidao: php artisan ops:readiness.
  • Pipeline CI: .github/workflows/ci.yml.
  • Operacao via comandos Artisan + Scheduler:
    • php artisan ops:backup-db
    • php artisan ops:health-check
    • php artisan queue:work --stop-when-empty --tries=3 --timeout=120
    • php artisan schedule:list
    • scripts/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.
  • Guia de cron na Hostinger: docs/CRON_HOSTINGER.md.
  • Runbook completo: docs/PRODUCTION_READINESS.md.

Seeder do usuario de teste local

  • Seeder: database/seeders/TestUserSeeder.php.
  • Executar: php artisan db:seed --class=TestUserSeeder.
  • Credenciais:
    • Email: teste@amigosecreto.local.
    • Senha: Teste@123456.

Observabilidade adicional

  • Telemetria de frontend: erros JS e metricas de navegacao sao enviados para /telemetry/frontend.
  • Painel de status operacional: /ops/status (acesso controlado por OPS_STATUS_ALLOWED_EMAILS).
  • Testes E2E: npm run e2e.
  • Carga concorrente focada em convite/sorteio: scripts/ops/k6-concurrency.js.

About

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.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors