An unofficial, open-source Todoist client
Built with Expo/React Native for a beautiful, native mobile experience.
⚠️ Disclaimer: TaskFlow is an independent, unofficial project and is not affiliated with, endorsed by, or connected to Doist (the makers of Todoist) in any way. "Todoist" is a trademark of Doist. This app uses the official Todoist API to connect to your account.
- ✅ Task management (create, edit, delete, complete)
- 📁 Project organization with sections
- 🏷️ Labels and tagging system
- 📅 Calendar view with date picker
- 🔄 Recurring tasks support
- 📝 Markdown rendering in tasks
- 🌙 Dark/Light theme support
- 📱 Cross-platform (Android, iOS, Web)
- Node.js 18+
- pnpm 9+
- (For mobile) Expo Go app or development build
pnpm install# Start web preview (opens at http://localhost:8081)
pnpm dev:metro
# Or run full dev server with backend
pnpm dev| Platform | Command |
|---|---|
| Web | Open http://localhost:8081 in browser |
| iOS | Press i in terminal (requires iOS Simulator) |
| Android | Press a in terminal (requires Android Emulator or physical device) |
| Expo Go | Scan QR code in terminal with Expo Go app |
# Generate native Android project
npx expo prebuild --platform android
# Build APK
cd android && ./gradlew assembleRelease
⚠️ Not tested - iOS builds have not been verified due to time constraints. The commands below are theoretical and may require adjustments.
npx expo prebuild --platform ios
cd ios && pod install
xcodebuild -workspace TaskFlow.xcworkspace -scheme TaskFlow \
-sdk iphonesimulator CODE_SIGNING_ALLOWED=NO buildIf you have an Expo account with EAS Build credits:
- Create an Expo account at https://expo.dev
- Install EAS CLI:
npm install -g eas-cli - Login:
eas login - Build:
eas build --platform android --profile preview
This project includes GitHub Actions workflows for automated Android builds:
- Android (
.github/workflows/build-android-local.yml): Builds APK on Ubuntu runners (on push/PR to main/master)
Creates GitHub Releases with versioned Android APK. Triggered by:
- Pushing a version tag:
git tag v1.1.0 && git push origin v1.1.0 - Manual workflow dispatch with version input
# Bump version (updates version.json and package.json)
pnpm version:bump patch # 1.1.0 -> 1.1.1
pnpm version:bump minor # 1.1.0 -> 1.2.0
pnpm version:bump major # 1.1.0 -> 2.0.0
# Commit and tag
git add version.json package.json
git commit -m "chore: bump version to 1.1.1"
git tag v1.1.1
git push origin master --tagsNote: iOS builds are not automated (code signing complexity, macOS runner costs, and lack of testing time).
Create a .env file with:
# Optional - for server-side features
DATABASE_URL=your_database_url
JWT_SECRET=your_jwt_secret├── app/ # Expo Router pages
│ ├── (tabs)/ # Tab navigation screens
│ ├── oauth/ # OAuth callback handling
│ └── project/ # Dynamic project routes
├── components/ # Reusable UI components
├── constants/ # App constants and theme
├── hooks/ # Custom React hooks
├── lib/ # Utilities and API clients
├── server/ # Backend API (tRPC)
└── shared/ # Shared types and utilities
- Framework: Expo SDK 54 with React Native
- Routing: Expo Router v6
- Styling: NativeWind (TailwindCSS for React Native)
- State: TanStack React Query
- API: tRPC with Express backend
- Database: Drizzle ORM with MySQL
- Bundler: Metro
| Script | Description |
|---|---|
pnpm dev |
Start full development server |
pnpm dev:metro |
Start Expo Metro only (web) |
pnpm dev:server |
Start backend server only |
pnpm build |
Build server for production |
pnpm test |
Run tests with Vitest |
pnpm lint |
Run ESLint |
pnpm check |
TypeScript type checking |
pnpm version:bump |
Bump app version (patch/minor/major) |
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
This means:
- ✅ You can use, modify, and distribute this software
- ✅ You must keep it open source
- ✅ Derivative works must also be GPL-3.0 licensed
- ❌ You cannot create closed-source forks
TaskFlow is made possible by these amazing open-source projects:
- Expo - The platform for universal React apps
- React Native - Build native apps with React
- NativeWind - TailwindCSS for React Native
- TanStack Query - Powerful data synchronization
- tRPC - End-to-end type-safe APIs
- Drizzle ORM - TypeScript ORM
- Todoist API - Task management API
Special thanks to the open-source community for making projects like this possible.
Made with ❤️ by Camille Couturier