A simple mobile app to manage projects and their tasks built with React Native, Expo, and TypeScript. Checkout store for other apps like this.
- Projects List: View all projects with completion status and task counts
- Project Details: View, add, toggle, and delete tasks within a project
- Local Storage: All data stored locally using SQLite
- Simple UI: Simple interface using React Native Paper
- React Native with Expo
- Expo Router for navigation
- Expo SQLite for database
- React Native Paper for UI components
- TypeScript
Before runnging make sure you have the following installed:
- Node.js (v23 or higher) {this is what i use, this app may work with other versions}
- Expo Go app or Android emulator (for testing)
-
Installation
# Clone the repository git clone <repository-url> cd todo-app # Install dependencies npm install
-
Running the App
# Start the development server npm start # Or run on specific platform npm run android # For Android npm run ios # For iOS npm run web # For web (npm install react-dom react-native-web)
-
Testing on Device
- Install Expo Go app on your phone
- Scan the QR code displayed in terminal/browser
- The app will load on your device
Since I don't have access to a Mac, I'm not sure if this works for everyone. If you have any issues, please let me know.
Before runnging make sure you have the following installed:
- Node.js (v23 or higher)
- Java (JDK 21)
- Android SDK
- Android Studio
-
Installation
# Clone the repository git clone <repository-url> cd todo-app # Install dependencies npm install
-
Prebuilding the android folder
# make the prebuild android folder npx expo prebuild:android
-
Building the apk
# move into android folder cd android # build the apk ./gradlew assembleRelease
-
Installing the apk
# install the apk on your phone adb install app/build/outputs/apk/release/app-release.apk # or # copy the file into your phone and install it
id
(INTEGER PRIMARY KEY)title
(TEXT)createdAt
(TEXT)
id
(INTEGER PRIMARY KEY)projectId
(INTEGER, Foreign Key)title
(TEXT)completed
(INTEGER, 0 or 1)createdAt
(TEXT)
- Displays all projects with completion status.
- Shows "X of Y tasks completed" for each project
- Floating Action Button to add new projects
- Lists all tasks for a specific project
- Checkbox to toggle task completion
- Add new tasks with title input
- Delete tasks with confirmation dialog
- Real-time status updates
- With SQLite
Although I use SQLite a lot but mostly for storing web scraped data, so I struggled to configure the relationship and get data from both tables at the same time. Still I managed to get it working by learning about
JOIN
andGROUP BY
queries.
Rests are minor challenges like:
- call those async database functions with await
- thinking of right color scheme for the app
- importing components from right packages. Since
react-native-paper
andreact-native
shares name of components, my code editor's language server has imported components from wrong packages.
- Add project deletion
- Task editing (mainly for fixing typos or adding more detail)
- Due dates
- Ability to export and import projects and tasks