A cross-platform social media mobile application built with React Native and Expo.
- Cross-platform State Management - Implemented React Query for efficient data fetching, caching, and synchronization across iOS, Android, and Web
- Authentication & Persistent Storage - Integrated token-based authentication with AsyncStorage for secure credential management
- File-based Routing Architecture - Built nested route structure using Expo Router with modal presentations and dynamic post detail views
- Post Interaction System - Developed interactive post engagement with API integration for likes using bearer token authentication
- Comments Module - Implemented comment display and submission with real-time updates
- Responsive Animations & Gestures - Integrated React Native Gesture Handler and Reanimated for fluid interactions and touch feedback
- Haptic Feedback Integration - Added native haptic responses to enhance user experience on mobile devices
- Framework & Runtime: Expo v54, React Native v0.81 for universal mobile/web development
- Language: TypeScript for type-safe development
- Navigation: Expo Router with file-based routing and dynamic route parameters
- State Management: React Query for server-state management and caching strategy
- Persistent Storage: AsyncStorage for local data persistence
- Animations & Interactions: React Native Gesture Handler, React Native Reanimated for complex animations and gesture recognition
- Native Features: Expo Haptics for haptic feedback, Expo Vector Icons for icon system
- Code Quality: ESLint for linting and code standards
- Modern Features: React Native New Architecture, React Compiler for performance optimization
- iOS (with tablet support)
- Android
- Web (static export)
npm install
npm start # Start development server
npm run ios # Run on iOS
npm run android # Run on Android
npm run web # Run in browsernpm start- Start the Expo development servernpm run ios- Run on iOS simulatornpm run android- Run on Android emulatornpm run web- Run in web browsernpm run lint- Run ESLint to check code qualitynpm run reset-project- Reset to fresh project state (moves starter code toapp-example/)
app/ # Main app screens
├── (home)/ # Home tab screens
│ ├── index.tsx
│ ├── profile.tsx
│ └── setting.tsx
├── view/ # Post detail view
└── form.tsx # New user form
components/ # Reusable components
├── posts.tsx # Post display component
├── comment.tsx # Comment component
└── appProvider.tsx # Context provider
libs/ # Configuration and utilities
types/ # TypeScript type definitions
assets/ # Images and static assets
- Uses file-based routing with Expo Router - create files in the
app/directory to add new screens - Configured for TypeScript - all source files use
.tsxextension - Dark mode support enabled automatically based on system settings
- New Architecture features enabled for improved performance
When making changes:
- Run
npm run lintto check code quality - Follow the existing component structure
- Use TypeScript for type safety