A feature-rich todo application built with React Native, Firebase, and Redux Toolkit.
- ✅ Google Authentication & Email/Password Login
- ✅ Real-time task synchronization with Firebase Firestore
- ✅ Create, edit, delete, and complete tasks
- ✅ Task categorization (Urgent/Normal tags)
- ✅ Task reminders
- ✅ Redux state management
- ✅ Clean, modular architecture
- ✅ TypeScript support
Before you begin, ensure you have the following installed:
- Node.js (>= 18)
- npm or yarn
- React Native development environment setup
- For Android: Android Studio, Android SDK
- For iOS: Xcode (macOS only)
- Firebase account
src/
├── assets/ # Images, icons
├── components/ # Reusable components
│ ├── Button/
│ ├── Input/
│ └── TaskCard/
├── pages/ # Screens/pages
│ ├── Login/
│ ├── Home/
│ └── TaskDetails/
├── hooks/ # Custom hooks
├── store/ # Redux store and slices
├── constants/ # Theme constants
├── styles/ # Global styles
├── config/ # Configuration files
└── navigation/ # Navigation setup
npm install- Go to Firebase Console
- Create a new project or use an existing one
- Enable Authentication:
- Go to Authentication > Sign-in method
- Enable Email/Password
- Enable Google Sign-in
- Create a Firestore Database:
- Go to Firestore Database
- Create database in production mode
- Set up security rules (see below)
- For Android:
- Download
google-services.json - Place it in
android/app/
- Download
- For iOS:
- Download
GoogleService-Info.plist - Add it to your Xcode project
- Download
Edit src/config/firebase.ts and replace the placeholder values with your Firebase project credentials:
const firebaseConfig = {
apiKey: 'YOUR_API_KEY',
authDomain: 'YOUR_AUTH_DOMAIN',
projectId: 'YOUR_PROJECT_ID',
storageBucket: 'YOUR_STORAGE_BUCKET',
messagingSenderId: 'YOUR_MESSAGING_SENDER_ID',
appId: 'YOUR_APP_ID',
};Set up the following security rules in Firebase Console:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /tasks/{taskId} {
allow read, write: if request.auth != null && request.auth.uid == resource.data.userId;
allow create: if request.auth != null && request.auth.uid == request.resource.data.userId;
}
}
}npm run androidcd ios && pod install && cd ..
npm run iosTo enable Google Sign-In, you need to install additional packages:
npm install @react-native-google-signin/google-signinFollow the setup instructions at: https://github.com/react-native-google-signin/google-signin
To enable the date picker for task reminders:
npm install @react-native-community/datetimepickerThen update the handleDatePicker function in src/pages/TaskDetails/TaskDetails.tsx.
npm start- Start Metro bundlernpm run android- Run on Androidnpm run ios- Run on iOSnpm run lint- Run ESLintnpm test- Run tests
- Framework: React Native
- Language: TypeScript
- State Management: Redux Toolkit
- Navigation: React Navigation
- Backend: Firebase (Authentication + Firestore)
- Styling: React Native StyleSheet
- Push notifications for task reminders
- Dark/Light theme toggle
- Task categories and filters
- Task search functionality
- Export tasks to PDF/CSV
- Offline support with local storage
If you encounter build issues on Android:
- Clean the build:
cd android && ./gradlew clean && cd ..
- Clear Metro cache:
npm start -- --reset-cache
If you encounter build issues on iOS:
- Clean the build folder in Xcode
- Reinstall pods:
cd ios && pod deintegrate && pod install && cd ..
MIT
Faizan