#6 Desafio de Programação: Amigo Secreto
Descrição
Este desafio propõe a recriação de um sistema para sorteio de Amigo Secreto utilizando IndexDB para armazenamento local. O objetivo é criar uma aplicação simples, funcional e offline-friendly, que permita organizar e realizar sorteios de forma intuitiva. É ideal para aprender sobre tecnologias modernas de front-end e persistência de dados no navegador.
Você pode conferir um exemplo do projeto no post original: Sorteio de Amigo Secreto.
Ou uma demo funcionando nesse link: Amigo Secreto.
Objetivo
- Criar uma aplicação web para sorteio de Amigo Secreto.
- Implementar o armazenamento de dados localmente com IndexDB.
- Publicar a aplicação para uso real.
O que será Aprendido
- Persistência de Dados no Front-end:
- Como usar o IndexDB para salvar informações localmente.
- Manipulação de Arrays e Objetos:
- Técnicas para criar e embaralhar listas para o sorteio.
- Desenvolvimento Web:
- Uso de HTML, CSS e JavaScript para criar interfaces interativas.
- Publicação de Projetos:
- Como hospedar uma aplicação web usando GitHub Pages ou outro serviço.
Especificações do Desafio
Funcionalidades Obrigatórias
-
Cadastro de Participantes
- Adicionar participantes com nome e email.
- Listar participantes na tela.
-
Sorteio do Amigo Secreto
- Realizar o sorteio embaralhando a lista de participantes.
- Garantir que nenhum participante seja seu próprio amigo secreto.
- Mostrar o resultado de forma segura (ex.: exibir apenas o amigo secreto de cada participante mediante interação).
-
Armazenamento Local
- Salvar os participantes no IndexDB.
- Manter os dados persistentes mesmo ao recarregar a página.
-
Interface Amigável
- Design simples e funcional para cadastro, sorteio e visualização dos resultados.
Telas
Como o projeto é front-end apenas, as operações são feitas localmente, mas seguem uma estrutura lógica:
- Adicionar Participante: Salva no IndexDB.
- Listar Participantes: Recupera do IndexDB.
- Realizar Sorteio: Gera o resultado no front-end e salva no IndexDB.
- Visualizar Resultados: Recupera os dados do sorteio e exibe para o usuário.
Funcionalidades Opcionais (Diferenciais)
- Envio de Resultados
- Implementar envio de emails para notificar os participantes com seus amigos secretos (usando serviços como EmailJS ou APIs de email).
- Temas Personalizáveis
- Adicionar a possibilidade de mudar a aparência da aplicação com temas diferentes.
- Histórico de Sorteios
- Salvar múltiplos sorteios no IndexDB e permitir consulta posterior.
Sugestões de Stack
Frontend
- HTML5, CSS3 e JavaScript:
- Criação da interface e funcionalidades básicas.
- Frameworks Opcionais:
- React.js ou Vue.js para componentes reativos.
- Tailwind CSS ou Bootstrap para estilização rápida.
Armazenamento
- IndexDB:
- API nativa do navegador para armazenamento local de dados.
- Alternativa: LocalStorage (menos recomendado para volumes maiores de dados).
Publicação
- GitHub Pages: Hospedar a aplicação de forma gratuita.
- Netlify ou Vercel: Opções modernas para deploy.
Especificações de Arquitetura
Frontend
- Páginas Principais:
- Cadastro de Participantes.
- Página de Sorteio.
- Tela de Resultados.
- Interatividade:
- Manipulação do DOM para adicionar e exibir participantes.
- Botão para sortear e exibir resultados.
Fluxo de Uso
- Cadastro de Participantes
- Usuário adiciona os nomes e emails de cada participante.
- Os dados são salvos localmente no IndexDB.
- Sorteio
- Ao clicar no botão "Sortear", o sistema embaralha os participantes e salva os resultados.
- Visualização
- Cada participante pode acessar seu resultado individualmente.
- (Opcional) Notificação
- Resultados são enviados por email automaticamente.
Publicação
- Preparação
- Configure o repositório no GitHub.
- Use ferramentas como Webpack ou Vite (opcional) para otimizar o projeto.
- Deploy
- GitHub Pages: Configure o repositório para deploy automático.
- Netlify/Vercel: Faça o upload da aplicação com suporte a builds automáticas.
- Domínio Personalizado
- Opcionalmente, configure um domínio customizado para a aplicação.
Nível do Desafio
- Intermediário: Requer conhecimentos básicos de JavaScript, manipulação de dados e APIs do navegador.
- Avançado (com diferenciais): Inclui envio de emails, histórico de sorteios e exportação de dados.
Boa sorte com o desafio! 🚀
Envie o link do seu projeto
Envie o link do seu projeto para o email contato@racoelho.com.br.