A modern, cross-platform todo application built with React Native and Expo. Features a clean interface with dark/light theme support, drag-and-drop reordering, and filtering capabilities.
- ✅ Add, toggle, and delete todos
- 🌓 Dark and light theme support
- 🔄 Drag and drop to reorder items
- 🔍 Filter todos (All, Active, Completed)
- 🧹 Clear all completed todos
- 📱 Cross-platform (iOS, Android, Web)
- ⚡ Real-time sync with Convex backend
- 🔄 CRUD operations powered by Convex
- Node.js (v14 or higher)
- npm or yarn
- Expo CLI (installed globally or via npx)
- Clone the repository:
git clone <https://github.com/dev-star23/ToDo.git>
cd TodoApp- Install dependencies:
npm install-
Set up Convex:
- Create a Convex account at convex.dev if you haven't already
- Run
npx convex devto initialize your Convex project and generate the API files - This will create a
.env.localfile with yourCONVEX_URL - For Expo, you'll need to set
EXPO_PUBLIC_CONVEX_URLin your environment or.env.localfile
-
Configure environment variables:
- Create a
.env.localfile (if not already created by Convex):
EXPO_PUBLIC_CONVEX_URL=your_convex_url_here
- Create a
Before running the app, make sure Convex is running:
npx convex devThen in another terminal, start the Expo development server:
npm startThen choose your platform:
- Press
ifor iOS simulator - Press
afor Android emulator - Press
wfor web browser
Or use the specific scripts:
npm run ios # Start iOS simulator
npm run android # Start Android emulator
npm run web # Start web browser- React Native
- Expo
- TypeScript
- Convex - Real-time backend and database
- React Native Gesture Handler
- React Native Reanimated
TodoApp/
├── components/ # Reusable UI components
├── theme/ # Theme context and configuration
├── types/ # TypeScript type definitions
├── assets/ # Images and icons
├── convex/ # Convex backend functions and schema
│ ├── schema.ts # Database schema definition
│ ├── todos.ts # CRUD operations for todos
│ └── _generated/ # Auto-generated Convex API files
└── App.tsx # Main application component