Este projeto representa um dos desafios do programa Oracle Next Education (ONE), uma iniciativa da Oracle em parceria com a Alura que visa capacitar pessoas em tecnologia e conectá-las com oportunidades de emprego na América Latina. A aplicação desenvolvida é um sistema interativo para organizar sorteios de Amigo Secreto, aplicando conceitos modernos de desenvolvimento front-end.
Este projeto demonstra a aplicação prática de diversos conhecimentos adquiridos durante a formação do programa ONE. O Amigo Secreto é uma aplicação web que facilita a organização de sorteios, garantindo uma distribuição justa e aleatória entre os participantes.
Desenvolvido com foco em boas práticas de programação, o projeto evoluiu de uma base JavaScript para uma implementação TypeScript, incorporando princípios funcionais e ferramentas modernas de desenvolvimento.
A interface HTML e CSS foi disponibilizada inicialmente pelo programa, permitindo que o foco do desenvolvimento fosse na implementação da lógica da aplicação e na evolução gradual da arquitetura do código.
A aplicação implementa regras específicas para garantir um sorteio adequado:
- Exige um mínimo de 6 participantes
- Requer um número par de participantes
- Garante que ninguém sorteie a si mesmo
- Evita duplicação de nomes
- Limita as tentativas de sorteio para prevenir loops infinitos
Este projeto está evoluindo através de diferentes versões, cada uma trazendo melhorias significativas:
A primeira versão focou na implementação da lógica fundamental utilizando:
- HTML5 e CSS3 fornecidos pelo programa
- JavaScript modular (ES6+) para organizar o código em:
- Arquivos independentes e reutilizáveis
- Funções que processam dados sem efeitos colaterais
- Gerenciamento organizado das interações com a página
- Controle de versão organizado com branches específicas para cada funcionalidade
A versão atual trouxe melhorias na qualidade e manutenção do código através de:
-
TypeScript para adicionar:
- Verificação de tipos durante o desenvolvimento
- Código mais autoexplicativo através de interfaces e tipos
- Melhor suporte em ferramentas como Visual Studio Code, ESLint e Debugger
-
Organização do código seguindo princípios funcionais:
- Funções que sempre retornam o mesmo resultado para os mesmos parâmetros
- Criação de novos dados em vez de modificar existentes, facilitando rastreamento de mudanças e prevenção de bugs
- Combinação de funções simples para criar operações complexas
-
Ambiente de desenvolvimento com Vite, oferecendo:
- Atualização instantânea durante o desenvolvimento
- Combinação e otimização dos arquivos para produção
- Gerenciamento eficiente de dependências
O projeto utiliza GitFlow para organização das branches:
main
: código em produçãodevelop
: desenvolvimento ativofeature/*
: implementação de novas funcionalidadeshotfix/*
: correções urgentes em produçãorelease/*
: preparação de novas versões- Tags para releases (ex: v1.0, v1.1)
Versão em desenvolvimento
A próxima versão focará em uma reelaboração completa da interface, agora que a lógica está desenvolvida e bem testada. As principais melhorias incluirão:
-
Reformulação do Design
- Interface completamente redesenhada
- Layout responsivo para todas as telas
- Migração de CSS para SASS/SCSS para melhor organização dos estilos
- Sistema de design com variáveis e componentes reutilizáveis
-
Experiência do Usuário Aprimorada
- Lista interativa para gerenciamento de participantes
- Funcionalidades de edição e exclusão de nomes
- Substituição dos alertas do navegador por modais específicos
- Feedback visual mais sofisticado para ações do usuário
A aplicação oferece uma experiência completa de sorteio com:
- Validação em tempo real dos participantes
- Sistema de sorteio automatizado e justo
- Exibição clara dos resultados
- Opção de recomeçar o sorteio a qualquer momento
- Feedback visual para todas as ações do usuário
Para executar o projeto em seu ambiente local, você precisará de:
- Node.js instalado em sua máquina
- Um navegador web moderno (Chrome, Firefox, Edge, Safari, etc)
- Git instalado para clonar o repositório
Siga estes passos para configurar o projeto em seu ambiente local:
-
Clone o repositório usando HTTPS:
git clone https://github.com/fabiodelllima/amigo-secreto.git cd amigo-secreto
Ou usando SSH:
git clone [email protected]:fabiodelllima/amigo-secreto.git cd amigo-secreto
-
Instale as dependências:
npm install
-
Inicie o servidor de desenvolvimento:
npm run dev
-
Acesse a aplicação em seu navegador através do endereço indicado no terminal
Siga estes passos para utilizar a aplicação:
- Digite o nome de um participante no campo de entrada
- Clique em "Adicionar" ou pressione Enter
- Repita o processo até ter no mínimo 6 participantes (número par)
- Clique em "Sortear amigo" para realizar o sorteio
- Os resultados serão exibidos na tela
- Use o botão "Recomeçar" para fazer um novo sorteio
O diagrama abaixo ilustra o fluxo interno da aplicação, incluindo as validações e o algoritmo de sorteio:
flowchart TD
A[Usuário insere nome] --> B{Nome é válido?}
B -->|Não| C[Exibe mensagem de erro]
C --> A
B -->|Sim| D[Adiciona nome à lista]
D --> E{Mínimo de 6 participantes?}
E -->|Não| A
E -->|Sim| F{Número par de participantes?}
F -->|Não| A
F -->|Sim| G[Habilita botão de sorteio]
G --> H[Usuário solicita sorteio]
H --> I[Algoritmo embaralha nomes]
I --> J[Verifica que ninguém tirou a si mesmo]
J --> K{Sorteio válido?}
K -->|Não| L[Tenta novamente até limite]
L --> I
K -->|Sim| M[Exibe resultados na tela]
M --> N[Usuário pode reiniciar]
N --> O[Limpa todos os dados]
O --> A
Este projeto é parte de uma jornada de aprendizado no programa Oracle Next Education, onde conceitos fundamentais de programação se transformam em aplicações práticas. Através dele, foram aplicados conhecimentos de:
- Lógica de programação e estruturas de dados
- Desenvolvimento front-end moderno
- Versionamento e metodologias ágeis
- Boas práticas e padrões de projeto
- Oracle e Alura pela oportunidade de participação no programa ONE
- Instrutores e mentores do programa
- Comunidade de desenvolvedores do Oracle ONE