AI-Powered Task Manager for iOS
Built with React Native & Expo
| Feature | Description |
|---|---|
| AI Assistant | Type tasks in plain English — AI creates them with smart dates, priorities, and descriptions. |
| Eisenhower Matrix | Drag-and-drop prioritization into Do First, Schedule, Delegate, and Eliminate quadrants. |
| Calendar View | Visual calendar with color-coded priority dots for every due date. |
| Smart Search | Instantly find any task. Filter by active, completed, or keyword. |
| Home Screen Widgets | Today Dashboard, Next Task, and AI Quick Action widgets. |
| Voice Input | Speak your tasks — AI transcribes and creates them. |
| Cloud Sync | Tasks sync to Firebase and are accessible from any device via the web app. |
| Groups | Organize tasks by class, project, or area of life. |
| Smart Notifications | Configurable reminders with custom scheduling. |
| Dark Mode | Full dark mode support with automatic system detection. |
100% free — no ads, no subscriptions, no in-app purchases.
| Layer | Technology |
|---|---|
| Framework | React Native with Expo (SDK 52) |
| Navigation | Expo Router (file-based routing) |
| Backend | Firebase (Firestore, Auth) |
| AI | Azure OpenAI (GPT-4o) |
| Auth | Google Sign-In via @react-native-google-signin |
| Widgets | Native iOS WidgetKit (Swift) |
| Build | EAS Build |
| Language | TypeScript |
├── app/ # Expo Router screens (file-based routing)
│ ├── (auth)/ # Auth screens (login)
│ ├── (tabs)/ # Main tab screens
│ │ ├── tasks.tsx # Task list with groups and sorting
│ │ ├── matrix.tsx # Eisenhower Matrix with drag-and-drop
│ │ ├── calendar.tsx # Calendar view with task dots
│ │ ├── ai.tsx # AI tab
│ │ ├── stats.tsx # Analytics and statistics
│ │ └── settings.tsx # App settings
│ └── _layout.tsx # Root layout with auth guard
├── components/ # Reusable UI components
│ ├── AiFab.tsx # AI Assistant floating action button & modal
│ ├── TaskModal.tsx # Task creation/editing modal
│ ├── ScreenHeader.tsx # Unified header component
│ └── ...
├── hooks/ # Custom React hooks
│ ├── useAuth.tsx # Firebase authentication
│ ├── useTasks.ts # Task CRUD operations
│ ├── useTaskGroups.ts # Task group management
│ └── useSync.ts # Cloud sync logic
├── lib/ # Shared utilities
│ ├── firestore.ts # Firebase Firestore operations
│ ├── theme.ts # Design tokens and color system
│ └── sharedStyles.ts # Shared style definitions
├── ios/ # Native iOS project
│ ├── TaskApp/ # Main app target
│ └── TaskAppWidgets/ # WidgetKit extension (Swift)
└── assets/ # Images, fonts, and icons
# Clone the repo
git clone https://github.com/jonahr4/TaskApp-Mobile.git
cd TaskApp-Mobile
# Install dependencies
npm install
# Create your .env file
cp .env.example .env
# Fill in your Firebase and Azure OpenAI credentials
# Start the dev server
npx expo start
# Run on iOS simulator
npx expo run:ios| Variable | Description |
|---|---|
EXPO_PUBLIC_FIREBASE_API_KEY |
Firebase API key |
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN |
Firebase auth domain |
EXPO_PUBLIC_FIREBASE_PROJECT_ID |
Firebase project ID |
EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET |
Firebase storage bucket |
EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID |
Firebase messaging sender ID |
EXPO_PUBLIC_FIREBASE_APP_ID |
Firebase app ID |
EXPO_PUBLIC_AI_API_URL |
AI API endpoint URL |
EXPO_PUBLIC_GOOGLE_IOS_CLIENT_ID |
Google Sign-In iOS client ID |
EXPO_PUBLIC_GOOGLE_WEB_CLIENT_ID |
Google Sign-In web client ID |
TaskApp also has a companion web app built with Next.js, available at the-task-app.vercel.app. Tasks sync in real-time between mobile and web via Firebase.
MIT © Jonah Rothman



