Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
925b14d
feat(mobile): initialize React Native app structure and configuration
lui7henrique Jan 9, 2026
2efaaa7
feat(mobile): initialize React Native app structure and configuration
lui7henrique Jan 10, 2026
a9987ee
feat(ios): add initial iOS app structure and configuration
lui7henrique Jan 10, 2026
8721274
feat(ios): implement initial authentication flow and UI components
lui7henrique Jan 10, 2026
6c108a9
refactor(ui): update corner radius for input fields in LoginView and …
lui7henrique Jan 10, 2026
c6f8e84
feat(auth): implement sign-up functionality and UI components
lui7henrique Jan 10, 2026
d196528
refactor(auth): enhance AuthService and SignUpView for improved funct…
lui7henrique Jan 10, 2026
5a6c1d0
feat(ui): add language switcher and tabbed navigation in HomeView
lui7henrique Jan 10, 2026
d5cfce7
refactor(ui): remove text labels from tab items in HomeView for a cle…
lui7henrique Jan 10, 2026
4ddeda7
feat(ui): enhance HomeView with search functionality and user profile…
lui7henrique Jan 10, 2026
4f3f128
feat(ui): add movie and TV series detail views with asynchronous data…
lui7henrique Jan 10, 2026
df30ed6
refactor(ui): update shadow effects and rearrange badge display in Me…
lui7henrique Jan 13, 2026
34a33b9
feat(review): implement review functionality with UI components and l…
lui7henrique Jan 15, 2026
17bc10c
feat(ui): enhance review functionality with new ActionButton and tabb…
lui7henrique Jan 15, 2026
2f8a4fa
feat(ui): introduce ReviewButton component and integrate it into Medi…
lui7henrique Jan 15, 2026
df6d07d
feat(review): add ReviewItemView and ReviewListView components for di…
lui7henrique Jan 15, 2026
66879ff
feat(review): enhance ReviewItemView and ReviewListView with improved…
lui7henrique Jan 15, 2026
a7b19a4
feat(ui): add FilmStrip asset and enhance MediaDetailView with featur…
lui7henrique Jan 15, 2026
f838541
fix(ui): update adaptive background color for dark mode and adjust Re…
lui7henrique Jan 15, 2026
1308d3c
feat(localization): add new localization strings for animes and doram…
lui7henrique Jan 15, 2026
567efed
feat(home): integrate popular animes and doramas sections in HomeView…
lui7henrique Jan 15, 2026
16f7d2b
feat(home): implement HomeTabView, CategoryListView, and SearchTabVie…
lui7henrique Jan 15, 2026
cbfdc5a
feat(home): add SegmentedTabBar and integrate movie subcategories in …
lui7henrique Jan 16, 2026
83f32bb
refactor(home): update CategoryListView to use ScrollViewReader for i…
lui7henrique Jan 16, 2026
3280429
feat(tvSeries): implement UnderlineTabBar and TV series subcategories…
lui7henrique Jan 16, 2026
d1d609f
feat(media): implement image fetching and display in MediaDetailView …
lui7henrique Jan 16, 2026
9d456e0
feat(media): add background image preloading in MediaDetailView for i…
lui7henrique Jan 16, 2026
aa761a5
fix(media): adjust frame heights and opacity in MediaDetailView for i…
lui7henrique Jan 16, 2026
3098aee
refactor(media): enhance layout and responsiveness in MediaDetailView…
lui7henrique Jan 16, 2026
7c7418b
refactor(auth): streamline layout and improve password visibility tog…
lui7henrique Jan 17, 2026
e2cf0b8
feat(reviews): introduce ReviewSectionView for displaying reviews, re…
lui7henrique Jan 17, 2026
90db7df
refactor(reviews): update star color to yellow in ReviewSectionView a…
lui7henrique Jan 17, 2026
82fb684
feat(search): implement immediate loading state in SearchTabView base…
lui7henrique Jan 17, 2026
f2d0356
feat(reviews): add delete review functionality and enhance localizati…
lui7henrique Jan 17, 2026
9d28d60
feat(reviews): enhance ReviewSheet layout with spoilers toggle and ad…
lui7henrique Jan 17, 2026
4c8c1c7
feat(media): implement MediaDetailViewActions and StatusSheet for man…
lui7henrique Jan 17, 2026
31f6ad0
feat(watch-entries): implement user watch entries functionality, incl…
lui7henrique Jan 18, 2026
da5f0c2
feat(media): enhance MediaDetailView layout with additional spacers a…
lui7henrique Jan 18, 2026
0000866
feat(media): add RelatedSection for displaying related content recomm…
lui7henrique Jan 18, 2026
b4134d1
feat(profile): enhance ProfileTabView with user avatar, biography, an…
lui7henrique Jan 21, 2026
0a999b3
feat(profile): add user preferences management with region and stream…
lui7henrique Jan 21, 2026
8a6fd99
feat(preferences): introduce PreferencesBadge and UserPreferencesMana…
lui7henrique Jan 21, 2026
f6513d0
feat(profile): implement user items loading in ProfileTabView with st…
lui7henrique Jan 21, 2026
93907fe
feat(ui): refine button styles and spacing across components for impr…
lui7henrique Jan 22, 2026
9110565
feat(media): enhance MediaDetailView layout with rounded corners and …
lui7henrique Jan 22, 2026
ff3bc54
feat(ui): add dark mode border modifiers for poster cards; implement …
lui7henrique Jan 24, 2026
0e7143c
feat(user-items): add user items count functionality; implement selec…
lui7henrique Jan 24, 2026
fd41022
feat(media): enhance MediaDetailView and ReviewButton with loading st…
lui7henrique Jan 24, 2026
9612806
refactor(image-loading): replace AsyncImage with CachedAsyncImage acr…
lui7henrique Jan 24, 2026
0daecee
refactor(image-loading): replace AsyncImage with CachedAsyncImage acr…
lui7henrique Jan 24, 2026
b44693d
feat(localization): add language flags to Language enum and update lo…
lui7henrique Jan 24, 2026
1ae7baf
feat(profile): add biography feature to user profile; implement EditB…
lui7henrique Jan 24, 2026
c94acfe
feat(review): add user reviews count functionality; implement getUser…
lui7henrique Jan 24, 2026
3a449e5
feat(home): enhance HomeTabView with greeting messages based on time …
lui7henrique Jan 24, 2026
1644579
feat(collection): implement movie collection feature; add collection …
lui7henrique Jan 24, 2026
6789415
refactor(profile-tab): improve transition animation for badge count a…
lui7henrique Jan 24, 2026
ed16cc7
feat(seasons): implement seasons feature for TV series; add SeasonsSe…
lui7henrique Jan 24, 2026
0325583
feat(assets): add AppIcon image and update Contents.json to reference…
lui7henrique Jan 25, 2026
d2e5851
fix(assets): update AppIcon image to improve visual branding consiste…
lui7henrique Jan 25, 2026
b5a434a
fix(assets): update AppIcon image to enhance visual branding consistency
lui7henrique Jan 25, 2026
05b8690
Merge branch 'main' of https://github.com/plotwist-app/plotwist into …
lui7henrique Jan 25, 2026
d804241
feat(caching): enhance caching mechanisms by introducing HomeDataCach…
lui7henrique Jan 26, 2026
23e6b28
refactor(profile-tab): update ProfileTabView to improve caching logic…
lui7henrique Jan 26, 2026
9635a7b
feat(caching): introduce SearchDataCache for managing popular content…
lui7henrique Jan 26, 2026
1033f7a
refactor(ui): remove shimmer effect and update placeholder colors acr…
lui7henrique Jan 26, 2026
e9cde7b
refactor(ui): update star rating colors to use appStarYellow for impr…
lui7henrique Jan 26, 2026
f2b31d5
refactor(ui): implement FloatingSheetContainer for consistent sheet s…
lui7henrique Jan 26, 2026
ec900ce
refactor(ui): reorganize MediaDetailView layout for improved structur…
lui7henrique Jan 27, 2026
e1f018b
feat(ui): add SeasonDetailView for displaying detailed season informa…
lui7henrique Jan 27, 2026
937725f
feat(ui): add EpisodeRowView and EpisodesSectionView for displaying e…
lui7henrique Jan 27, 2026
3deae13
feat(ui): enhance episode management by adding watched state function…
lui7henrique Jan 27, 2026
5a30b94
refactor(ui): remove EpisodesSectionView and integrate its functional…
lui7henrique Jan 27, 2026
8b932fd
chore(project): update CURRENT_PROJECT_VERSION from 3 to 4 in project…
lui7henrique Jan 27, 2026
97005be
refactor(ui): update star color references to appStarYellow in Primar…
lui7henrique Jan 27, 2026
e79e4ae
feat(ui): implement MediaDetailSkeletonView for improved loading expe…
lui7henrique Jan 27, 2026
e4f8a6e
feat(ui): add expandable provider categories with matched geometry an…
lui7henrique Jan 27, 2026
e204598
refactor(ui): simplify WhereToWatchSection layout by removing matched…
lui7henrique Jan 27, 2026
1c06f7a
chore(project): update CURRENT_PROJECT_VERSION from 4 to 5 in project…
lui7henrique Jan 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 169 additions & 0 deletions .cursor/rules/ios-views.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
---
description: Regras para criar telas iOS no projeto Plotwist
globs:
- "apps/ios/**/*.swift"
alwaysApply: false
---

# Regras para Telas iOS - Plotwist

## Estrutura de Arquivos

```
apps/ios/Plotwist/Plotwist/
├── App/ # Entry point e RootView
├── Components/ # Componentes reutilizáveis
│ └── PrimaryButton.swift # Botões padrão
├── Views/ # Telas organizadas por feature
│ ├── Auth/ # Login, SignUp, etc
│ ├── Home/ # Dashboard
│ ├── Movies/ # Catálogo de filmes
│ └── ...
├── Services/ # Serviços de API
├── Theme/ # Cores e estilos
├── Localization/ # Multi-idioma
│ ├── Language.swift # Enum de idiomas
│ └── Strings.swift # Todas as strings traduzidas
└── Utils/ # Constantes
```

## Regras de Criação de Views

1. **Mantenha tudo simples** - State local na View, sem ViewModel separado para telas simples
2. **Use @State** para estados locais (loading, error, form fields)
3. **API sempre em `localhost:3333`** - Configurado em `Utils/Constants.swift`
4. **Use as cores do tema** - Definidas em `Theme/Colors.swift`
5. **Use L10n.current para strings** - Todas as strings devem ser traduzidas

## Localização (Multi-idioma)

Use `L10n.current` para acessar strings traduzidas:

```swift
@State private var strings = L10n.current

// Na view
Text(strings.accessPlotwist)
Text(strings.loginLabel)

// Reagir a mudanças de idioma
.onReceive(NotificationCenter.default.publisher(for: .languageChanged)) { _ in
strings = L10n.current
}
```

**Idiomas suportados:** en-US, pt-BR, es-ES, fr-FR, de-DE, it-IT, ja-JP

**Adicionar novas strings:** Edite `Localization/Strings.swift`

## Template de View Simples

```swift
import SwiftUI

struct NomeDaTelaView: View {
@State private var isLoading = false
@State private var error: String?

var body: some View {
ZStack {
Color.appBackgroundAdaptive.ignoresSafeArea()

VStack(spacing: 16) {
// Conteúdo
}
.padding(.horizontal, 24)
}
}
}

#Preview {
NomeDaTelaView()
}
```

## Cores (use sempre estas)

- `Color.appBackgroundAdaptive` - Background principal
- `Color.appForegroundAdaptive` - Texto principal
- `Color.appBorderAdaptive` - Bordas (inputs e botões usam transparente + borda)
- `Color.appMutedForegroundAdaptive` - Texto secundário
- `Color.appDestructive` - Erros e ações destrutivas

## Componentes Comuns

### Input Field (transparente com borda)

```swift
TextField("Placeholder", text: $value)
.textInputAutocapitalization(.never)
.autocorrectionDisabled()
.padding(12)
.background(Color.clear)
.overlay(
RoundedRectangle(cornerRadius: 12)
.stroke(Color.appBorderAdaptive, lineWidth: 1)
)
```

### Botão Primário (use o componente)

```swift
// Filled (preto)
PrimaryButton("Access", variant: .filled, isLoading: isLoading) {
// ação
}

// Outline (transparente com borda)
PrimaryButton("Cancel") {
// ação
}
```

### Botão Social (desabilitado)

```swift
SocialButton("Continue with Google", icon: "globe", isDisabled: true) {}
SocialButton("Continue with Apple", icon: "apple.logo", isDisabled: true) {}
```

### Mensagem de Erro

```swift
if let error {
Text(error)
.font(.caption)
.foregroundColor(.appDestructive)
}
```

## Chamadas de API

Use `AuthService.shared` para autenticação ou crie services específicos:

```swift
Task {
isLoading = true
defer { isLoading = false }

do {
// chamada async
} catch {
self.error = error.localizedDescription
}
}
```

## Navegação

- Use `NavigationView` na view raiz
- Use `NavigationLink` para navegação
- `RootView` gerencia auth state via `NotificationCenter`

## NÃO FAZER

- ❌ Criar ViewModels separados para telas simples
- ❌ Criar arquivos de documentação (.md) desnecessários
- ❌ Usar cores hardcoded (sempre use Theme/Colors.swift)
- ❌ Criar abstrações desnecessárias
- ❌ Usar URLs diferentes de localhost:3333
2 changes: 0 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
NEXT_PUBLIC_TMDB_API_KEY=

NEXT_PUBLIC_MEASUREMENT_ID=

NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
STRIPE_SECRET_KEY=

Loading
Loading