A React Native mobile application built with Expo and TypeScript, featuring Supabase authentication, comprehensive home maintenance task management, and a modern UI designed for tracking and organizing household maintenance activities.
- Supabase Authentication - Secure email/password authentication
- Google OAuth Integration - Sign in with Google account
- Email Verification - Secure email verification flow
- User Profile Management - Customizable user profiles and preferences
- Create & Edit Tasks - Add new maintenance tasks with detailed information
- Task Categories - Organize by type (HVAC, Plumbing, Electrical, Appliances, Exterior, Interior, Landscaping, Safety, General)
- Priority System - Set task importance (Low, Medium, High, Urgent)
- Due Date Tracking - Monitor upcoming, overdue, and completed tasks
- Recurring Tasks - Set up maintenance routines with custom intervals
- Task Completion - Mark tasks as complete with timestamps
- Hero Carousel - Featured tasks with swipe navigation
- Timeline View - Visual task scheduling and organization
- Task Statistics - Track completion rates, streaks, and maintenance history
- Priority Filtering - Filter tasks by priority level
- Category Filtering - Organize tasks by maintenance category
- Date Range Filtering - View tasks within specific time periods
- Gradient Components - Beautiful gradient backgrounds and buttons
- Haptic Feedback - Tactile responses for better user experience
- Smooth Animations - React Native Reanimated for fluid interactions
- Responsive Design - Works on various screen sizes and orientations
- Dark/Light Theme Support - Dynamic theming system
- Custom Gradients - User-selectable gradient themes
- Push Notifications - Reminders for due tasks and maintenance alerts
- Notification Preferences - Customizable notification settings by category
- Completion History - Detailed history of completed maintenance tasks
- Avatar Customization - Personalized user avatars
- Streak Tracking - Monitor consecutive task completion streaks
- Motivational Messages - Encouraging messages based on progress
- Framework: React Native with Expo SDK 53
- Language: TypeScript for type safety
- Backend: Supabase (PostgreSQL + Real-time subscriptions)
- Authentication: Supabase Auth with Google OAuth
- UI Components: React Native Paper, Custom components
- Animations: React Native Reanimated
- Navigation: React Navigation v7
- State Management: React Context API
- Date Handling: date-fns
- Icons: Expo Vector Icons
- Gradients: Expo Linear Gradient
- Haptics: Expo Haptics
src/
βββ components/ # Reusable UI components
β βββ auth/ # Authentication components
β β βββ OAuthButtons.tsx # Google OAuth sign-in
β β βββ styles.ts # Auth component styles
β βββ dashboard/ # Main dashboard components
β β βββ Dashboard.tsx # Main dashboard container
β β βββ DashboardHeader.tsx # Dashboard header with stats
β β βββ HeroCarousel.tsx # Featured tasks carousel
β β βββ FloatingActionButton.tsx # FAB for creating tasks
β β βββ tasks/ # Task-related components
β β β βββ TaskCard.tsx # Individual task cards
β β β βββ PriorityBadge.tsx # Priority indicators
β β βββ timeline-view/ # Timeline visualization
β β βββ profile/ # User profile components
β β β βββ ProfileButton.tsx # Profile button
β β β βββ ProfileMenu.tsx # Profile menu modal
β β βββ popups/ # Notification popups
β β β βββ CompletionCelebration.tsx
β β β βββ DueSoonPopup.tsx
β β β βββ StreakPopup.tsx
β β βββ modals/ # Modal components
β β βββ create-task-modal/ # Task creation modal
β β β βββ CreateTaskModal.tsx
β β β βββ CategorySelector.tsx
β β β βββ PrioritySelector.tsx
β β β βββ IntervalSelector.tsx
β β β βββ StartDateSelector.tsx
β β β βββ styles.ts
β β βββ simple-task-detail-modal/ # Task detail modal
β β βββ SimpleTaskDetailModal.tsx
β β βββ styles.ts
β βββ onboarding/ # Onboarding components
β β βββ FeaturesSection.tsx # App features showcase
β β βββ LogoSection.tsx # Logo and branding
β β βββ WelcomeText.tsx # Welcome messaging
β βββ ui/ # Reusable UI components
β β βββ action-buttons/ # Action button components
β β βββ gradient-divider/ # UI dividers
β β βββ gradient-picker/ # Color picker components
β β βββ NotificationPermissionRequest.tsx
β βββ modals/ # Global modals
β βββ avatar-customization-modal/ # Avatar customization
βββ context/ # React Context providers
β βββ AuthContext.tsx # Authentication state
β βββ TasksContext.tsx # Task management state
β βββ ThemeContext.tsx # Theme management
β βββ UserPreferencesContext.tsx # User preferences
β βββ NotificationContext.tsx # Notification state
βββ hooks/ # Custom React hooks
β βββ useAnimations.ts # Animation utilities
β βββ useDynamicSpacing.ts # Responsive spacing
β βββ useGradients.ts # Gradient management
β βββ useHaptics.ts # Haptic feedback
β βββ useTasks.ts # Task management logic
βββ navigation/ # Navigation configuration
β βββ AppNavigator.tsx # Main app navigation
β βββ AuthNavigator.tsx # Authentication flow
β βββ RootNavigator.tsx # Root navigation setup
βββ screens/ # Screen components
β βββ auth/ # Authentication screens
β β βββ LoginScreen.tsx # Login screen
β β βββ SignUpScreen.tsx # Sign up screen
β β βββ EmailVerificationScreen.tsx
β β βββ CodeVerificationScreen.tsx
β β βββ EmailEntryScreen.tsx
β βββ DashboardScreen.tsx # Main dashboard screen
β βββ HomeScreen.tsx # Welcome/home screen
β βββ completion-history/ # Task completion history
β β βββ CompletionHistoryScreen.tsx
β βββ notification-preferences/ # Notification settings
β βββ NotificationPreferencesScreen.tsx
βββ services/ # API and external services
β βββ MaintenanceService.ts # Main service orchestrator
β βββ MaintenanceRoutineService.ts # Routine management
β βββ MaintenanceInstanceService.ts # Instance management
β βββ MaintenanceTaskService.ts # Task queries
β βββ MaintenanceStatsService.ts # Statistics and analytics
β βββ maintenanceDataMapper.ts # Data transformation
β βββ index.ts # Service exports
βββ theme/ # Theme configuration
β βββ colors.ts # Color definitions
β βββ designSystem.ts # Design system tokens
βββ types/ # TypeScript type definitions
βββ maintenance.ts # Maintenance-related types
βββ navigation.ts # Navigation types
- Node.js (v16 or higher)
- npm or yarn
- Expo CLI (
npm install -g @expo/cli) - iOS Simulator (for iOS development) or Android Studio (for Android development)
- Clone the repository:
git clone <your-repo-url>
cd homekeep-mobile- Install dependencies:
npm install-
Set up Supabase:
- Create a Supabase project at supabase.com
- Get your project URL and anon key from the API settings
- Create a
.envfile with your Supabase credentials
-
Start the development server:
npm start- Run on your preferred platform:
- Press
ifor iOS simulator - Press
afor Android emulator - Scan QR code with Expo Go app on your device
- Press
Create a .env file in the project root:
EXPO_PUBLIC_SUPABASE_URL=your_project_url_here
EXPO_PUBLIC_SUPABASE_ANON_KEY=your_anon_key_hereThe app uses Supabase with the following main tables:
- maintenance_routines - Recurring maintenance tasks
- routine_instances - Individual task instances
- user_preferences - User settings and preferences
- notification_settings - Notification preferences by category
- Create Tasks: Add new maintenance tasks with categories, priorities, estimated duration, and due dates
- Task Categories: HVAC, Plumbing, Electrical, Appliances, Exterior, Interior, Landscaping, Safety, General
- Priority Levels: Low, Medium, High, Urgent with color-coded indicators
- Recurring Tasks: Set up maintenance routines with custom intervals (daily, weekly, monthly, quarterly, yearly)
- Task Completion: Mark tasks as complete with timestamps and completion history
- Hero Carousel: Swipeable carousel of upcoming tasks with pagination
- Statistics: Active routines, total instances, completion rates, overdue tasks
- Timeline View: Visual representation of task scheduling
- Quick Actions: Floating action button for creating new tasks
- Profile Management: User profile with avatar customization
- Due Soon Reminders: Notifications for tasks due soon
- Overdue Alerts: Reminders for overdue tasks
- Daily Digest: Summary of daily tasks
- Weekly Summary: Weekly maintenance overview
- Category-based Settings: Customize notifications by maintenance category
npm start- Start the Expo development servernpm run android- Run on Android emulatornpm run ios- Run on iOS simulatornpm run web- Run in web browsernpm run build:ios- Build iOS app for productionnpm run submit:ios- Submit iOS app to App Store
- Install Expo Go app on your device
- Scan QR code from development server
- Test app functionality in real-time
- Perfect for demos and quick testing
- Full TypeScript implementation for type safety
- Comprehensive type definitions for all components
- Service layer with proper error handling and response types
- Consistent code formatting and structure
- Separated concerns (components, services, types)
- Reusable components and hooks
- Proper error handling throughout the app