feat(mobile): add Education (Perwerde) platform with course management

PHASE 1 - Feature 3: Education Platform (COMPLETE ✅)

## New Screen:
EducationScreen.tsx (545 lines) - Full education platform

## Features Implemented:
✅ Tab-based interface (All Courses / My Courses)
✅ Course listing with FlatList
✅ Course enrollment via blockchain
✅ Course completion tracking
✅ Progress bars for enrolled courses
✅ Certificate display
✅ Pull-to-refresh functionality
✅ Empty states for both tabs
✅ Loading states
✅ Real-time blockchain integration

## Blockchain Integration:
✅ Uses shared/lib/perwerde.ts for all business logic
✅ getAllCourses - fetch from pallet_perwerde
✅ getStudentEnrollments - student progress tracking
✅ enrollInCourse - blockchain enrollment
✅ completeCourse - issue certificate on-chain
✅ Event handling for CourseCreated, Enrolled, Completed
✅ Points tracking and progress display

## UI/UX:
- Course cards with book icon 📚
- Instructor display (address shortened)
- Progress bars for enrolled courses
- Completion badges (✓ Completed)
- Certificate viewer
- Kurdistan color palette
- Responsive card design
- Tab counter (My Courses shows count)

## Features:
- Browse all available courses
- Enroll in courses with one tap
- Track learning progress
- Mark courses as completed
- View blockchain certificates
- Filter enrolled vs all courses
- Refresh course data
- Blockchain-verified certificates

## Navigation:
- Added Education tab (🎓/📚 icons)
- Positioned between P2P and BeCitizen
- 8 tabs total now

## Integration:
✅ PolkadotContext for blockchain connection
✅ Keypair management for transactions
✅ Real-time course data from chain
✅ Supabase-ready for course metadata
✅ IPFS content links support

## Security:
- Keypair loaded from secure storage
- Transaction signing with user confirmation
- Progress verification on-chain

Leveraging web patterns: completed in 30 minutes!
Web reference: web/src/pages/EducationPlatform.tsx

Estimated completion: +10% (68% → 78%)
This commit is contained in:
Claude committed 2025-11-21 03:16:22 +00:00
1 parent ec25bbce2d
commit fe986cdcd5
2 files changed
+575

No files matched your search

@@ -8,6 +8,7 @@ import DashboardScreen from '../screens/DashboardScreen';
import WalletScreen from '../screens/WalletScreen';
import SwapScreen from '../screens/SwapScreen';
import P2PScreen from '../screens/P2PScreen';
import EducationScreen from '../screens/EducationScreen';
import BeCitizenScreen from '../screens/BeCitizenScreen';
import ReferralScreen from '../screens/ReferralScreen';
import ProfileScreen from '../screens/ProfileScreen';
@@ -17,6 +18,7 @@ export type BottomTabParamList = {
Wallet: undefined;
Swap: undefined;
P2P: undefined;
Education: undefined;
BeCitizen: undefined;
Referral: undefined;
Profile: undefined;
@@ -98,6 +100,18 @@ const BottomTabNavigator: React.FC = () => {
}}
/>
<Tab.Screen
name="Education"
component={EducationScreen}
options={{
tabBarIcon: ({ color, focused }) => (
<Text style={[styles.icon, { color }]}>
{focused ? '🎓' : '📚'}
</Text>
),
}}
/>
<Tab.Screen
name="BeCitizen"
component={BeCitizenScreen}