Skip to content

Commit 3f3d61d

Browse files
authored
Native: updated docs (#1628)
1 parent 3bb0ed8 commit 3f3d61d

File tree

1 file changed

+208
-122
lines changed

1 file changed

+208
-122
lines changed

apps/expo/PLAN.md

Lines changed: 208 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -6,56 +6,59 @@ Complete the Send native app implementation by addressing layout issues, improvi
66

77
## Current Navigation Architecture
88

9-
The current navigation architecture for the Expo app is built using Expo Router v3 and follows a nested structure:
9+
The current navigation architecture for the Expo app is built using Expo Router v3 with file-based routing and follows this structure:
1010

1111
1. **Root Layout** (`/app/_layout.tsx`):
12-
- Sets up the Provider, theme loading, and authentication state
13-
- Configures the main Stack Navigator with screens for:
14-
- `index` (splash/login screen)
15-
- `(drawer)` (authenticated content)
16-
- `(auth)` (authentication flows)
17-
- `settings/index` (settings screen)
18-
19-
2. **Authentication Flow** (`/app/(auth)/`):
20-
- Contained in route group `(auth)`
21-
- Includes screens for sign-up, login-with-phone, and onboarding
22-
- Uses a Stack navigator for navigation between auth screens
23-
- Implements a shared AuthLayout component for consistent UI across auth screens
24-
25-
3. **Main App Flow** (`/app/(drawer)/`):
26-
- Protected by authentication check
27-
- Uses Drawer Navigator from `expo-router/drawer`
28-
- Custom drawer content with profile info and menu items
29-
30-
4. **Tab Navigation** (`/app/(drawer)/(tabs)/`):
31-
- Nested inside the drawer navigator
32-
- Currently includes: index (home), activity, profile, and earn tabs
33-
- Custom header with drawer menu toggle and "+" button
34-
35-
## Current Implementation Status
36-
37-
The Expo app has implemented several key components:
38-
39-
1. **Navigation Structure**:
40-
- Drawer navigation is complete with ALL menu items:
41-
- Home, Activity, Send, Deposit, Earn, Trade, SendPot, Explore, Invest, Feed, Leaderboard, Settings
42-
- Tab navigation includes Home, Activity, Profile, and Earn
43-
44-
2. **Screens Implemented**:
45-
- Complete authentication flow (sign-up, login-with-phone, and onboarding)
46-
- Reusable AuthLayout component for consistent styling across auth screens
47-
- Consistent screen headers with configureScreenHeader utility
48-
- Home screen with optimized HomeQuickActions and TokenActivityFeed
49-
- Send flow with confirmation screen
50-
- Simple activity, profile, and earn screens
51-
52-
3. **Missing Features**:
53-
- Complete account management (backup flow, personal info, affiliate)
54-
- Enhanced SendPot with confirmation flows
55-
- Apple Pay integration
56-
- Complete deposit and withdrawal flows
57-
- Trading functionality
58-
- Implementation of Feed, Explore, and Invest content
12+
- Sets up the main app provider, theme configuration, and global state
13+
- Handles authentication state and routing logic
14+
- Configures the root stack navigator
15+
16+
2. **Main Entry Point** (`/app/index.tsx`):
17+
- App entry screen (splash/home screen)
18+
- Handles initial app state and navigation decisions
19+
20+
3. **Authentication Route Group** (`/app/(auth)/`):
21+
- Route group for authentication flows
22+
- Contains nested layout (`_layout.tsx`) for auth-specific configuration
23+
- Screens include:
24+
- `auth/login-with-phone.tsx` - Phone number authentication
25+
- `auth/onboarding.tsx` - User onboarding flow
26+
- `auth/sign-up.tsx` - User registration
27+
28+
4. **Tabs Route Group** (`/app/(tabs)/`):
29+
- Main authenticated app navigation using tab-based routing
30+
- Contains nested layout (`_layout.tsx`) for tab configuration
31+
- Primary tabs:
32+
- `index.tsx` - Home/dashboard screen
33+
- `activity/index.tsx` - Activity feed
34+
- `explore/index.tsx` - Explore section
35+
- `send/` - Send functionality with nested screens:
36+
- `index.tsx` - Send screen
37+
- `confirm.tsx` - Send confirmation
38+
- `_layout.tsx` - Send flow layout
39+
40+
5. **Feature-Based Screen Organization**:
41+
- **Account Management** (`/app/account/`):
42+
- `index.tsx` - Account overview
43+
- `edit-profile.tsx` - Profile editing
44+
- `personal-info.tsx` - Personal information management
45+
- `affiliate.tsx` - Affiliate program
46+
- `backup/` - Backup credential management with confirmation flows
47+
- `sendtag/` - SendTag management (add, checkout, first tag)
48+
49+
- **Financial Features**:
50+
- `deposit/` - Deposit flows (Apple Pay, crypto, debit card, success)
51+
- `earn/` - Earning features with asset-specific screens
52+
- `trade/` - Trading functionality with summary screens
53+
- `rewards/` - Rewards tracking
54+
55+
- **Social & Gaming**:
56+
- `feed/` - Social feed functionality
57+
- `sendpot/` - Lottery/gaming features with ticket purchasing
58+
- `profile/` - User profile viewing with dynamic routing
59+
60+
6. **Error Handling**:
61+
- `+not-found.tsx` - 404/not found screen for invalid routes
5962

6063
## Next.js App Structure
6164

@@ -90,68 +93,86 @@ The Next.js app has a comprehensive routing structure with these sections:
9093

9194
## Implementation Plan
9295

93-
### Phase 1: Navigation Structure Completion (Completed ✅)
94-
95-
1. **Enhance Drawer Navigation** ✅:
96-
- Added missing menu items (Explore, Invest, Feed) to `(drawer)/_layout.tsx`
97-
- Ensured consistent styling with web application
98-
- Fixed navigation routing between drawer items and tabs
99-
100-
2. **Complete Auth Layout** ✅:
101-
- Added login-with-phone screen to auth flow
102-
- Created reusable AuthLayout component in packages/app/features/auth/layout.tsx
103-
- Ensured consistent styling across all auth screens by applying the shared layout
104-
- Fixed navigation nesting issues by separating navigation and UI concerns
105-
106-
3. **Create Consistent Headers** ✅:
107-
- Implemented the configureScreenHeader utility
108-
- Applied consistent headers across all screens
109-
- Fixed type issues for proper React Navigation integration
110-
111-
### Phase 2: Core Screen Implementation (In Progress 🔄)
112-
113-
1. **Home Screen Enhancement** ✅:
114-
- Implemented and optimized HomeQuickActions.native.tsx
115-
- Fixed and optimized TokenActivityFeed.native.tsx
116-
- Added proper skeleton loading states
117-
118-
2. **Send/Receive Functionality** ✅:
119-
- Completed send flow with confirmation screens
120-
- Implemented Send confirmation flow
121-
122-
3. **Profile Screen Completion** 🔄:
123-
- Complete profile viewing functionality
124-
- Implement profile editing
125-
- Add personal info management screens
126-
127-
4. **Activity Screen Optimization** 🔄:
128-
- Complete activity feed implementation
129-
- Optimize list rendering for mobile performance
130-
- Add proper pull-to-refresh and pagination
131-
132-
### Phase 3: Additional Features (Pending ⏳)
133-
134-
1. **Deposit/Withdraw Flows** ⏳:
135-
- Complete deposit options screens
136-
- Implement Apple Pay integration
137-
- Add crypto deposit/withdrawal flows
138-
- Create success and confirmation screens
139-
140-
2. **Earn & Rewards** ⏳:
141-
- Complete earn section with asset-specific screens
142-
- Implement rewards tracking
143-
- Add proper data visualization for earnings
144-
145-
3. **Trade & SendPot** ⏳:
146-
- Implement trade screens with confirmation flow
147-
- Complete SendPot with ticket buying functionality
148-
- Add ticket confirmation screens
149-
150-
4. **New Features** ⏳:
151-
- Implement Feed section
152-
- Create Explore with rewards screens
153-
- Add Invest functionality
154-
- Complete backup flow with credential management
96+
### Phase 1: Project Setup (Completed ✅)
97+
98+
1. **Initial Expo Setup** ✅:
99+
- Configure Expo project with necessary dependencies
100+
- Set up TypeScript configuration and build tools
101+
- Configure Metro bundler and development environment
102+
- Set up Tamagui for consistent UI components
103+
104+
2. **Development Environment** ✅:
105+
- Configure ESLint and Prettier for code quality
106+
- Set up development scripts and build processes
107+
- Configure environment variables and app configuration
108+
- Set up iOS and Android build configurations
109+
110+
### Phase 2: Navigation Structure ✅
111+
112+
1. **File-Based Routing Setup** ✅:
113+
- Implement Expo Router v3 with file-based navigation
114+
- Create route groups for authentication and main app flows
115+
- Set up nested layouts for different app sections
116+
- Configure tab navigation for main app features
117+
118+
2. **Screen Structure Implementation** ✅:
119+
- Create all necessary screen files and layouts
120+
- Implement proper navigation flow between screens
121+
- Set up authentication routing and protection
122+
- Configure deep linking and navigation state management
123+
124+
### Phase 3: Screen Porting and Critical Issues ✅
125+
126+
1. **Port All Screens from Next.js** ✅:
127+
- Transfer all authentication screens (login, signup, onboarding)
128+
- Port main feature screens (home, activity, send, profile)
129+
- Implement account management screens (backup, sendtag, personal info)
130+
- Port financial features (deposit, earn, trade, rewards)
131+
- Transfer social features (feed, profile viewing, sendpot)
132+
133+
2. **Fix Critical Issues**
134+
135+
### Phase 4: Internal Distributed Build
136+
137+
1. **Build Configuration**:
138+
- Configure EAS Build for internal distribution
139+
- Set up development and staging build profiles
140+
- Configure code signing for iOS and Android
141+
- Set up internal testing distribution channels
142+
143+
2. **Testing Preparation**:
144+
- Prepare internal testing builds
145+
- Set up crash reporting and analytics
146+
- Configure feature flags for controlled rollout
147+
- Create testing documentation and guidelines
148+
149+
### Phase 5: Issue Resolution
150+
151+
1. **Bug Fixes and Polish**:
152+
- Address issues found during internal testing
153+
- Optimize performance and user experience
154+
- Fix platform-specific issues and edge cases
155+
- Implement accessibility improvements
156+
157+
2. **Quality Assurance**:
158+
- Comprehensive testing across devices and OS versions
159+
- Performance optimization and memory management
160+
- Security review and vulnerability assessment
161+
- Final UI/UX polish and consistency checks
162+
163+
### Phase 6: App Store Submission
164+
165+
1. **Store Preparation**:
166+
- Prepare app store listings and metadata
167+
- Create app screenshots and promotional materials
168+
- Configure app store connect and play console
169+
- Set up app store optimization (ASO)
170+
171+
2. **Submission Process**:
172+
- Submit to Apple App Store for review
173+
- Submit to Google Play Store for review
174+
- Address any review feedback and resubmit if needed
175+
- Plan launch strategy and rollout schedule
155176

156177
## Testing and Quality Assurance
157178

@@ -202,15 +223,80 @@ You can use the following methods to verify the app is functioning correctly:
202223
- Run automated tests on CI/CD pipeline
203224
- See `docs/setting-up-maestro-e2e-tests.md` for setup information
204225

205-
## Next Steps (Prioritized)
206-
207-
1. ✅ Update drawer navigation with missing menu items (Feed, Explore, Invest)
208-
2. ✅ Implement the configureScreenHeader utility for consistent headers
209-
3. ✅ Fix and optimize HomeQuickActions and TokenActivityFeed native components
210-
4. ✅ Add login-with-phone to the auth flow
211-
5. ✅ Complete the send flow with confirmation screens
212-
6. Implement profile editing and management screens
213-
7. Create deposit flow with crypto and fiat options
214-
8. Complete the earn section with rewards tracking
215-
9. Implement SendPot with ticket buying functionality
216-
10. Add explore and feed sections
226+
## Known Issues [TO BE SOLVED BEFORE RELEASE]
227+
228+
**Global issues**:
229+
- visual issues, broken UI/styling
230+
- referral code reading/writing is not working, due to implementation using cookies
231+
- dialogs are not appearing
232+
- QR code generation library is not working on native
233+
- a lot os stuff is blinking all over the place, too much data fetching, too much fading
234+
235+
**Project Structure**:
236+
- prepare assets so app doesn't have to fetch images
237+
238+
**Auth**:
239+
- login issues, passkey is found but error is thrown
240+
- passkeys for android, right now got passkeys only for ios
241+
- app crushes on logout
242+
- no way to input referral, url won't work on native
243+
244+
**Home screen**:
245+
- rework flow on native, web flow is built on query params, native should use stacking screen
246+
247+
**Send**:
248+
- rework flow on native, web flow is built on query params, native should use stacking screen
249+
- sending is not stable, app sometimes crush on confirm screen
250+
- resetting send screen state after send is done
251+
252+
**Account**:
253+
- QR code not working
254+
255+
**Sendtags**:
256+
- pricing dialog not appearing
257+
- referral code is not working
258+
- sendtag register is not stable, weird stuff is going on sometimes, like money gone but no sendtag
259+
- redirect to external address is not working due to broken dialog
260+
261+
**SendPot**:
262+
- number of tickets purchased is not increased after purchase automatically, its fine after close and open again
263+
264+
**Invest**:
265+
- risk disclaimer on trade screen doesnt pop up
266+
267+
**Earn**:
268+
- referral code is not working
269+
- earn home page doest refresh automatically after deposit
270+
- a lot os stuff is blinking on earn
271+
272+
**Activity**:
273+
- redirect to external address is not working due to broken dialog
274+
275+
**History**:
276+
- rework flow of screens, cannot go back from profile details, history and receipt, use screen stacking
277+
- cannot go back after pressing send button
278+
- history scroll is broken, it behaves like standard screen, not like a chat
279+
280+
**Deposit**:
281+
- QR to deposit by crypto transfer is not working
282+
- cannot copy address due to not working dialog
283+
- current implementation of coinbase onramp rely on browser API, need to build version for native https://github.com/coinbase/onramp-demo-mobile
284+
285+
## Planned Improvements [POST RELEASE]
286+
287+
**UX Improvements**:
288+
- floating bottom navbar instead of standard one
289+
- pull to refresh data
290+
- hiding header when scrolling down
291+
- error page when app crush
292+
- don't nest scroll views
293+
294+
**Referrals Screen**:
295+
- number of referrals in header is missing
296+
- refactor referrals screen to use recycler view
297+
298+
**Invest**:
299+
- redirect successful trade to better place, right now its home screen
300+
301+
**Activity**:
302+
- when you go back from details app scroll all the way up, should maintain position

0 commit comments

Comments
 (0)