Aplicativo iOS desenvolvido em Swift 6 que permite buscar músicas utilizando a API do iTunes, com uma interface construída em SwiftUI, arquitetura MVVM e foco em simplicidade, performance e organização de código.
-
Clone o repositório:
git clone git@github.com:luizgustavogp/Moises.git cd Moises
-
Instale as dependências com CocoaPods:
pod install
-
Abra o projeto com o workspace:
open Moises.xcworkspace
-
Selecione um simulador e execute o app com
Cmd + R
✅ Requisitos: Xcode 15.3+ e CocoaPods instalado
Kingfisher
– Para carregamento e cache de imagensViewInspector
– Para inspeção de Views em testes unitários SwiftUI
ScreenRecording_06-16-2025.15-31-08_1.mov
ScreenRecording_06-16-2025.15-40-31_1.MP4
ScreenRecording_06-16-2025.16.mov
- ✅ Splash Screen
- ✅ Songs Screen (Home)
- ✅ Song Details (Player)
- ✅ Bottom Sheet com mais opções
- ✅ Album Screen
- ✅ Uso de Swift 6
- ✅ Arquitetura MVVM
- ✅ Testes implementados
- ✅ Paginação nos resultados da API
- ✅ Controle de tela vazia quando não há resultados
- ✅ Tema claro e escuro
- ✅ Splash Screen personalizada
- ✅ Player implementado em memória apenas para demonstração (a API do iTunes não fornece áudio completo)
- Uso prático do novo framework de Swift Testing, com foco em testes unitários e validação de estados da
ViewModel
- Projeto escrito com Swift 6
- Uso de SwiftUI, Concurrency e Combine
- Arquitetura clara, modular e reutilizável
- A lógica de scroll infinito funciona, mas pode ser aprimorada. Atualmente é feita com base na verificação do último item visível.
- Adicionar sugestões automáticas no campo de busca
- Permitir injeção de
scheduler
nos testes da ViewModel - Extrair os módulos
DSM
eNetworking
como bibliotecas internas - Implementar um player real com streaming (caso a API permita)
Algumas decisões visuais foram adaptadas:
- A Splash Screen foi ajustada por decisão própria
- A TabBar foi incluída para melhorar a navegação
- Implementação de tema claro/escuro
Em ambiente real, seguiria a proposta definida pelo time de UX. Mudanças visuais seriam discutidas e sugeridas em conjunto.