Uma aplicação iOS moderna para descoberta e compra de tickets para eventos, construída com SwiftUI e The Composable Architecture.
O SocialApp é uma plataforma que conecta usuários a eventos sociais, permitindo:
- Descoberta de Eventos: Navegue por diferentes categorias de eventos
- Lista de Tickets: Visualize e filtre tickets disponíveis
- Detalhes de Tickets: Informações completas sobre cada ticket
- Perfis de Vendedores: Conheça os organizadores dos eventos
O projeto utiliza uma arquitetura modular baseada no Tuist com as seguintes componentes:
- SharedModels: Modelos de dados compartilhados e efeitos comuns
- Events: Gerenciamento de eventos e categorias
- TicketsList: Lista e filtros de tickets
- TicketDetail: Detalhes específicos de cada ticket
- SellerProfile: Perfis de vendedores/organizadores
- SwiftUI: Interface do usuário
- The Composable Architecture (TCA) v1.0+: Gerenciamento de estado
- Tuist: Gerenciamento de projeto modular
- iOS 16+: Plataforma mínima suportada
Antes de começar, certifique-se de ter instalado:
- Xcode 15.0+
- iOS 16.0+ (para simulação/dispositivo)
- Tuist (para gerenciamento de projeto)
git clone https://github.com/seu-usuario/SocialApp.git
cd SocialAppSe você ainda não tem o Tuist instalado:
# Via curl (recomendado)
curl -Ls https://install.tuist.io | bash
# Ou via Homebrew
brew install tuist/tuist/tuist# Navegue até a pasta do projeto
cd SocialApp
# Gere o workspace Xcode
tuist generate# Abra o workspace gerado
open SocialApp.xcworkspaceSocialApp/
├── Project.swift # Configuração principal do Tuist
├── SharedModels/ # Módulo de modelos compartilhados
│ ├── Project.swift
│ └── Sources/
│ ├── Models.swift # Modelos de dados
│ ├── MockData.swift # Dados de teste
├── Projects/
│ └── Features/ # Features modulares (sem Project.swift separados)
│ ├── Events/ # Módulo de eventos
│ │ └── Sources/
│ │ ├── EventsFeature.swift
│ │ ├── EventsView.swift
│ │ └── Components/
│ │ ├── CategoryButton.swift
│ │ ├── EventCard.swift
│ │ └── RecomendedEventCard.swift
│ ├── TicketsList/ # Módulo de lista de tickets
│ │ └── Sources/
│ │ ├── TicketsListFeature.swift
│ │ ├── TicketsListView.swift
│ │ └── TicketCard.swift
│ ├── TicketDetail/ # Módulo de detalhes do ticket
│ │ └── Sources/
│ │ └── TicketDetailFeature.swift
│ └── SellerProfile/ # Módulo de perfil do vendedor
│ └── Sources/
│ └── SellerProfileFeature.swift
└── SocialApp/ # App principal
├── Sources/
│ ├── SocialApp.swift # Ponto de entrada da aplicação
│ ├── SocialAppFeature.swift # Feature principal
│ ├── SocialAppView.swift # View principal
│ ├── ContentView.swift # View de conteúdo
│ ├── Dependencies/ # Clientes de dependências
│ │ ├── EventsClient.swift
│ │ ├── TicketsClient.swift
│ │ └── UserClient.swift
│ ├── Navigation/ # Configuração de navegação
│ │ └── NavigationClient.swift
│ └── Services/ # Implementações de serviços
│ ├── JSONLoader.swift
├── Resources/ # Recursos (JSONs, Assets)
│ ├── Assets.xcassets/
│ ├── events.json
│ └── user.json
└── Tests/ # Testes unitários
└── SocialAppTests.swift
# Gerar o workspace após mudanças
tuist generate
# Limpar cache e regenerar
tuist clean
tuist install
tuist generate
# Executar testes
tuist test
# Verificar dependências
tuist graph- Crie uma nova pasta em
Projects/Features/[NomeDaFeature]/Sources/ - Adicione os arquivos Swift da feature
- Atualize o
Project.swiftprincipal incluindo o novo caminho emsources - Execute
tuist generate
# Executar todos os testes
tuist test
# Executar testes específicos
tuist test --path SocialApp/Tests- Abra
SocialApp.xcworkspaceno Xcode - Selecione o target
SocialApp - Escolha um simulador iOS 16.0+ ou dispositivo físico
- Pressione
Cmd + Rpara executar
O projeto não requer variáveis de ambiente especiais. Todos os dados são mockados via arquivos JSON em SocialApp/Resources/.
- Swift Composable Architecture v1.0+: Framework para gerenciamento de estado
- SwiftUI: Framework nativo para UI
- Modelos de dados compartilhados (Event, Ticket, User, Seller)
- Dados mockados para desenvolvimento e testes
- Efeitos compartilhados entre features
- Executor de efeitos centralizado
- Modelo de dados para eventos
- Categorias de eventos (CategoryButton)
- Cards de eventos (EventCard, RecommendedEventCard)
- Feature completa com TCA (EventsFeature)
- Interface SwiftUI (EventsView)
- Lista de tickets disponíveis
- Cards de tickets (TicketCard)
- Feature completa com TCA (TicketsListFeature)
- Interface SwiftUI (TicketsListView)
- Filtros e ordenação
- Detalhes específicos do ticket
- Feature completa com TCA (TicketDetailFeature)
- Integração com dados do ticket
- Perfil do vendedor
- Feature completa com TCA (SellerProfileFeature)
- Informações do organizador
- Configuração principal com TCA (SocialAppFeature)
- Navegação entre features
- Clientes de dependências (EventsClient, TicketsClient, UserClient)
- Serviços de dados (JSONLoader, ServiceImplementations)
- Configuração de navegação (NavigationClient)
- Provider do TCA (TCAProvider)
- Sistema de autenticação
- Integração com API real
- Sistema de pagamentos
- Notificações push
- Sistema de avaliações
- Adicionar e remover ingressos
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- Use SwiftUI para todas as interfaces
- Siga os padrões do TCA para gerenciamento de estado
- Mantenha features modulares e independentes
- Escreva testes unitários para novas funcionalidades
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Se você encontrar algum problema ou tiver dúvidas:
- Verifique as Issues existentes
- Crie uma nova issue com detalhes do problema
- Para dúvidas gerais, use as Discussions
- Point-Free pelo The Composable Architecture
- Tuist pela ferramenta de gerenciamento de projetos
- Comunidade SwiftUI pela documentação e exemplos
Desenvolvido com ❤️ usando SwiftUI e TCA