A smart vacation itinerary planner built with React Native and Expo. Organize your trips day by day with multimedia attachments, reminders, and offline capability.
- Multi-Day Trip Planning: Create and organize trips with multiple days
- Activity Management: Add activities with time, location, and detailed descriptions
- Media Attachments: Attach photos, videos, and notes to each activity
- Gallery Viewer: View media in an elegant gallery-style modal
- Camera Integration: Capture photos and videos directly from the app
- Smart Reminders: Set local push notifications for activities
- Offline First: Full functionality without internet connection
- Export & Share: Export itineraries to PDF or JSON format
- Clean UI: Modern card-based design with smooth animations
- Timeline View: Visual timeline for easy trip browsing
- Calendar Integration: Calendar-style view for date-based planning
- Dark/Light Theme: Automatic theme switching based on system preference
- Responsive Design: Optimized for all mobile screen sizes
- Intuitive Navigation: Tab-based navigation with clear visual hierarchy
- Local Storage: AsyncStorage for offline data persistence
- Media Management: Efficient media storage and retrieval
- Data Export: Share itineraries in multiple formats
- Backup Ready: Easy data migration and backup capabilities
- Node.js (v16 or higher)
- npm or yarn
- Expo CLI (
npm install -g @expo/cli) - iOS Simulator or Android Emulator (or physical device)
-
Clone the repository
git clone https://github.com/yourusername/triptrack.git cd triptrack -
Install dependencies
npm install
-
Start the development server
npm start
-
Run on device/simulator
- Press
ifor iOS simulator - Press
afor Android emulator - Scan QR code with Expo Go app on your device
- Press
- Open TripTrack and tap the "+" button on the home screen
- Enter trip details: Name, destination, start and end dates
- Add your first day by tapping "Add Day" in your trip
- Create activities for each day with time, location, and description
- Attach media by tapping the camera icon on any activity
- Set reminders to get notified before important activities
- Edit: Tap any activity card to modify details
- Media: Add photos, videos, or notes to remember special moments
- Reminders: Set notifications to never miss an activity
- Completion: Mark activities as completed to track progress
- Timeline View: See all activities in chronological order
- Calendar View: Browse trips by date in calendar format
- Media Gallery: View all trip photos and videos in one place
triptrack/
βββ app/ # Expo Router pages
β βββ (tabs)/ # Tab navigation screens
β βββ trip/ # Trip detail screens
β βββ _layout.tsx # Root layout
βββ components/ # Reusable UI components
βββ context/ # React Context providers
βββ services/ # Business logic services
βββ types/ # TypeScript type definitions
βββ constants/ # App constants and themes
- React Native: Cross-platform mobile development
- Expo: Development platform and build tools
- TypeScript: Type safety and better developer experience
- Expo Router: File-based navigation system
- AsyncStorage: Local data persistence
- Expo Notifications: Local push notifications
- Expo MediaLibrary: Media access and management
- Expo ImagePicker: Camera and gallery integration
- Context Provider: Manages global app state
- Storage Service: Handles data persistence with AsyncStorage
- Notification Service: Manages local push notifications
- Media Service: Handles photo/video operations
- Components: Consume context and services for UI updates
- Primary: #007AFF (iOS Blue)
- Success: #34C759 (Green)
- Warning: #FF9500 (Orange)
- Error: #FF3B30 (Red)
- Background: Dynamic (Light/Dark theme)
- Headers: System font, bold weights
- Body: System font, regular weight
- Captions: System font, light weight
- Base unit: 8px grid system
- Margins: 16px, 24px, 32px
- Padding: 8px, 16px, 24px
npm start # Start Expo development server
npm run android # Run on Android
npm run ios # Run on iOS
npm run web # Run on web (limited functionality)
npm run build # Build for production- Create types in
types/directory - Add services in
services/for business logic - Build components in
components/directory - Create screens in
app/directory - Update context if global state changes needed
npm test # Run unit tests
npm run test:e2e # Run end-to-end testsexpo build:iosexpo build:android- Build production version
- Test on physical devices
- Submit to App Store/Play Store
- Follow platform-specific guidelines
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow TypeScript best practices
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
- Follow the existing code style
Metro bundler issues
npx expo start --cleariOS simulator not opening
npx expo run:iosAndroid build failures
cd android && ./gradlew clean && cd ..
npx expo run:androidPermission issues
- Ensure camera and media permissions are granted
- Check notification permissions in device settings
This project is licensed under the MIT License - see the LICENSE file for details.
- Expo Team for the amazing development platform
- React Native Community for continuous improvements
- Contributors who help make TripTrack better
- Pexels for providing beautiful stock photos
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@triptrack.app
Made with β€οΈ for travelers worldwide
TripTrack - Your smart companion for unforgettable journeys
