How igcpollotto/app-treino works
Purpose and Runtime
This is an Expo/React Native universal mobile application, likely centered on muscle-group content based on the domain-specific routing and data names. It runs through Expo on Android, iOS, and web, using Expo Router’s filesystem routing. Project metadata is in app.json; dependencies and scripts are defined in package.json.
Application Entry and Navigation Shell
Expo Router begins at the root layout, which establishes the app-wide navigation hierarchy. The root route structure includes a tab navigator plus standalone screens for home, registration, modal content, and group detail.
• app/_layout.tsx
• app/(tabs)/_layout.tsx
• app/home.tsx
Tab-Based Primary Experience
The (tabs) route group contains the persistent tab navigation experience. Its current route surface has an index screen and an exploration screen; these are logical primary destinations without appearing in the public URL hierarchy as a path segment.
• app/(tabs)/index.tsx
• app/(tabs)/explore.tsx
• app/(tabs)/_layout.tsx
Group Detail Routing
Muscle-group navigation is modeled as a dynamic route parameter: a selected group name becomes the [nome] path segment. This is the principal content-detail boundary and should receive data through route parameters or resolve it from the shared group dataset/service layer.
• app/grupo/[nome].tsx
• src/data/gruposMusculares.ts
Domain Data Layer
The repository has a dedicated static data module for muscle groups, separating domain content from route components. Screens should consume this module rather than embed group definitions in UI code.
• src/data/gruposMusculares.ts
• app/grupo/[nome].tsx
Backend Service Boundary
Firebase is isolated behind a service module, providing the intended boundary for remote persistence, authentication, or cloud-backed data access. UI routes should depend on this service layer rather than directly initialize Firebase.
• src/services/firebase.ts
• app/cadastro.tsx
Shared UI and Presentation System
Reusable visual primitives, themed wrappers, and platform-aware controls live outside route files. Theme resolution is centralized through constants and hooks, allowing route screens to remain focused on composition and navigation.
• components/themed-view.tsx
• components/themed-text.tsx
• constants/theme.ts
Main entry points: app/_layout.tsx Root Layout · (tabs)/_layout.tsx Tabs Layout · [nome].tsx Group Detail [nome] · index.tsx Tab Home
Components 13
Expo Router Routes
Filesystem routes and navigation layouts.
- Root Layout · Establishes the app-wide navigation hierarchy.
app/_layout.tsx - Tabs Layout · Provides persistent primary navigation.
app/(tabs)/_layout.tsx - Tab Home
app/(tabs)/index.tsx - Explore
app/(tabs)/explore.tsx - Home
app/home.tsx - Registration · Uses the backend service boundary.
app/cadastro.tsx - Group Detail [nome] · Resolves the selected muscle group from the route parameter.
app/grupo/[nome].tsx
Domain & Services
Shared content and backend boundary.
- Muscle Groups · Shared muscle-group content.
src/data/gruposMusculares.ts - Firebase Service · Encapsulates Firebase access for persistence or authentication.
src/services/firebase.ts
Shared UI
Reusable themed presentation primitives.
- Themed View
components/themed-view.tsx - Themed Text
components/themed-text.tsx - Theme Constants · Central theme values and resolution.
constants/theme.ts
Other components
- Expo Runtime · Runs the app on Android, iOS, and web.
Connections 14
- Expo Runtime → Root Layout: starts
- Root Layout → Tabs Layout: hosts
- Root Layout → Home: routes to
- Root Layout → Registration: routes to
- Root Layout → Group Detail [nome]: routes to
- Tabs Layout → Tab Home: tab
- Tabs Layout → Explore: tab
- Group Detail [nome] → Muscle Groups: loads group
- Registration → Firebase Service: uses
- Themed View → Theme Constants: uses
- Themed Text → Theme Constants: uses
- Home → Themed View: composes
- Tab Home → Themed Text: composes
- Explore → Group Detail [nome]: navigates to