A React Native application that allows users to create digital time capsules containing memories, messages, and content linked to specific times and locations.
- π± Create and manage digital time capsules
- π Time-based and location-based capsule locking
- πΈ Media upload (photos, videos, audio)
- πΊοΈ Map integration for location-based capsules
- π Secure authentication with Supabase
- π¨ Beautiful UI with NativeWind (Tailwind CSS)
- π Dark mode support
- π² Cross-platform (iOS & Android)
- Frontend: React Native (Expo) with TypeScript
- Styling: NativeWind (Tailwind CSS for React Native)
- Backend: Supabase (Auth, Database, Storage)
- State Management: Zustand
- Navigation: React Navigation
- Location Services: expo-location + react-native-maps
- Media Handling: expo-image-picker, expo-av
- Node.js 16+ installed
- Expo CLI installed (
npm install -g expo-cli) - Supabase account and project
git clone <repository-url>
cd time-capsulenpm installCreate a .env file in the root directory:
EXPO_PUBLIC_SUPABASE_URL=your_supabase_url
EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_keyCopy the values from your Supabase project settings.
- Go to your Supabase project dashboard
- Navigate to the SQL editor
- Run the migration script from
db/migrations/001_init.sql
If you encounter any dependency issues (especially with expo-font), run the fix script first:
./fix-dependencies.shThen start the development server:
npm startThis will start the Expo development server. You can then:
- Scan the QR code with the Expo Go app on your phone
- Press
ato open on Android emulator - Press
ito open on iOS simulator
If you encounter the expo-font module error:
# Quick fix
rm -rf node_modules
npm install
npm start -- --clearOr run the comprehensive fix script:
./fix-dependencies.shSee TROUBLESHOOTING.md for more detailed solutions.
time-capsule/
βββ src/
β βββ components/ # Reusable UI components
β βββ screens/ # Screen components
β β βββ auth/ # Authentication screens
β β βββ capsules/ # Capsule-related screens
β β βββ dashboard/ # Dashboard screens
β β βββ explore/ # Map/explore screens
β β βββ profile/ # Profile/settings screens
β βββ navigation/ # Navigation configuration
β βββ hooks/ # Custom React hooks
β βββ lib/ # Utility libraries
β βββ store/ # Zustand stores
β βββ styles/ # Global styles and themes
β βββ types/ # TypeScript type definitions
β βββ assets/ # Images, fonts, etc.
βββ db/
β βββ migrations/ # Supabase migration files
βββ examples/ # HTML design references
βββ __tests__/ # Test files
# Start development server
npm start
# Run on Android
npm run android
# Run on iOS
npm run ios
# Run on web
npm run web
# Build for production
npm run build:android
npm run build:ios
# Type checking
npm run type-check
# Linting
npm run lint
# Run tests
npm test- Primary: #FAC638 (Yellow/Gold)
- Background Light: #f8f8f5
- Background Dark: #231e0f
- Text Light: #111827
- Text Dark: #F9FAFB
- Font Family: Plus Jakarta Sans
- Weights: 400, 500, 700, 800
The app uses a component-based architecture with reusable components in src/components/. All components are styled using NativeWind classes that match the original HTML designs.
- Welcome Screen (
examples/welcome_and_onboarding_1/) - Login Screen (
examples/welcome_and_onboarding_2/)
- Dashboard (
examples/my_capsules_dashboard_1/) - Create Capsule (
examples/create_new_capsule_1/) - Explore/Map (
examples/explore/map_view_1/) - Profile/Settings (
examples/profile_and_settings/)
- Capsule Details (
examples/capsule_details_view_1/) - Capsule Preview (
examples/capsule_preview_screen/)
The app uses Supabase Auth with email magic link authentication. Users can sign in by entering their email address and receive a magic link to authenticate.
The app uses PostgreSQL with the following main tables:
profiles- User profilescapsules- Time capsule datacapsule_contents- Media and content for capsulesshared_capsules- Sharing permissions
See db/migrations/001_init.sql for the complete schema.
The app integrates with device location services to:
- Create location-based capsules
- Show nearby capsules on the map
- Enable geofencing for capsule opening
Users can upload various media types to their capsules:
- Photos from camera or gallery
- Video recordings
- Audio recordings
- Text messages
All media is stored in Supabase Storage with proper security rules.
The app supports push notifications for:
- Capsule availability alerts
- Shared capsule notifications
- Reminders for upcoming capsule openings
The app includes comprehensive testing:
# Run unit tests
npm test
# Run tests with coverage
npm run test:coveragenpm run build:androidnpm run build:ios- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Original HTML designs from the
examples/folder - Supabase for the backend services
- Expo for the React Native framework
- NativeWind for Tailwind CSS support
If you have any questions or issues, please open an issue on the GitHub repository.
Note: This is a prototype application. Some features may be placeholders or require additional implementation for production use.