A simple React Native mobile application demonstrating CRUD (Create, Read, Update, Delete) operations with modern development practices.
β Create - Add new tasks with title and description β Read - View all tasks in a clean, organized list β Update - Edit existing tasks and toggle completion status β Delete - Remove tasks with confirmation dialog β Persistence - Data saved locally using AsyncStorage β Dark Mode - Automatic theme adaptation with proper contrast β Custom Icon - Professional app icon with task management theme β Modern UI - Clean, professional design with consistent styling
- React Native 0.72.6
- TypeScript for type safety
- AsyncStorage for local data persistence
- React Hooks (useState, useEffect)
- FlatList for efficient list rendering
| Dark Mode Support | Task Management | Edit Functionality | Delete Confirmation |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Automatic dark/light theme | Create, view, and manage tasks | Edit existing tasks inline | Safe delete with confirmation |
- π Dark Mode Support - Automatically adapts to system theme with proper contrast
- π Complete CRUD Operations - Create, Read, Update, Delete with intuitive UI
- β Task Status Management - Toggle completion with visual feedback
- π¨ Professional UI/UX - Clean, modern design with consistent styling
- πΎ Data Persistence - Tasks saved locally using AsyncStorage
- π Safe Operations - Confirmation dialogs for destructive actions
- π± Native Performance - Built with React Native for smooth interactions
Prerequisites: Docker installed on your system
-
Clone and navigate to the project:
cd /home/anish/Documents/Code/mobileApp -
Run with Docker Compose:
docker compose up -d
-
Open your browser:
http://localhost:3000 -
Stop the application:
docker compose down
Prerequisites:
- Node.js (>= 16)
- React Native CLI
- Android Studio
- Java 17 (OpenJDK recommended)
- Android SDK
Environment Setup:
# Set Java 17
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
# Set Android SDK
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/platform-toolsRun on Android:
# Install dependencies
npm install
# Start Metro bundler
npm start
# Run on Android (in new terminal)
npm run androidPrerequisites:
- macOS (required for iOS development)
- Node.js (>= 16)
- React Native CLI
- Xcode (latest version)
- CocoaPods
Run on iOS:
# Install dependencies
npm install
# Install iOS dependencies
cd ios && pod install && cd ..
# Start Metro bundler
npm start
# Run on iOS Simulator (in new terminal)
npm run ios
# Or specify simulator
npx react-native run-ios --simulator="iPhone 15"
# Run on physical device
npx react-native run-ios --device-
Start local web server:
cd web && python3 -m http.server 3000
-
Open browser:
http://localhost:3000
# Build the Docker image
docker build -t task-manager-app .
# Run the container
docker run -d -p 3000:3000 --name task-manager task-manager-app
# View logs
docker logs task-manager
# Stop and remove container
docker stop task-manager && docker rm task-manager# Build and run with compose
docker compose up --build -d
# View logs
docker compose logs -f
# Stop and cleanup
docker compose downPrerequisites:
- Java 17 (OpenJDK recommended)
- Android SDK with Build Tools
- Node.js (>= 16)
- React Native CLI
# Set Java 17 (adjust path as needed)
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
# Set Android SDK path
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools# Install dependencies
npm install
# Build debug APK
cd android
./gradlew assembleDebug
# APK location: android/app/build/outputs/apk/debug/app-debug.apk# Clean previous builds
cd android
./gradlew clean
# Build release APK
./gradlew assembleRelease
# APK location: android/app/build/outputs/apk/release/app-release.apk# Install debug APK
adb install android/app/build/outputs/apk/debug/app-debug.apk
# Install release APK
adb install android/app/build/outputs/apk/release/app-release.apk
# Launch app
adb shell am start -n com.taskmanagerapp/.MainActivityPrerequisites:
- macOS (required for iOS development)
- Xcode (latest version)
- Node.js (>= 16)
- React Native CLI
- CocoaPods
Build for iOS Simulator:
# Install dependencies
npm install
cd ios && pod install && cd ..
# Build for simulator
npx react-native run-ios --simulator="iPhone 15"Build for iOS Device:
# Build for connected device
npx react-native run-ios --device
# Or build with Xcode for distribution
# Open ios/TaskManagerApp.xcworkspace in Xcode
# Select your team and provisioning profile
# Build for Archive (Product > Archive)Create iOS Archive (for App Store):
# Open Xcode project
open ios/TaskManagerApp.xcworkspace
# In Xcode:
# 1. Select "Any iOS Device" or your connected device
# 2. Product > Archive
# 3. Distribute App > App Store Connect
# 4. Upload to TestFlight/App Store# Production build with Docker
docker build -t task-manager-prod .
docker run -d -p 80:3000 --name task-manager-prod task-manager-prodAndroid:
- Debug APK: For testing and development
- Release APK: For production distribution
- Google Play Store: Upload release APK for public distribution
- Firebase App Distribution: For beta testing
iOS:
- Development Build: For testing on registered devices
- Ad Hoc Distribution: For beta testing without App Store
- App Store: For public distribution via Apple App Store
- TestFlight: Apple's beta testing platform
# .github/workflows/build.yml
name: Build APK
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Java 17
uses: actions/setup-java@v3
with:
java-version: '17'
- name: Build APK
run: |
npm install
cd android && ./gradlew assembleRelease
- name: Upload APK
uses: actions/upload-artifact@v3
with:
name: app-release.apk
path: android/app/build/outputs/apk/release/app-release.apkmobileApp/
βββ App.tsx # Main React Native component
βββ web/
β βββ index.html # Web version of the app
βββ package.json # React Native dependencies
βββ web-package.json # Web version package info
βββ Dockerfile # Docker container configuration
βββ docker-compose.yml # Docker Compose setup
βββ .dockerignore # Docker ignore file
βββ index.js # React Native entry point
βββ app.json # App configuration
βββ metro.config.js # Metro bundler config
βββ babel.config.js # Babel configuration
βββ tsconfig.json # TypeScript configuration
βββ README.md # This file
- Create:
addTask()- Generates unique ID and adds to state - Read: Tasks displayed via FlatList with real-time updates
- Update:
updateTask()andtoggleTask()for editing and status changes - Delete:
deleteTask()with confirmation dialog
Uses AsyncStorage to persist tasks between app sessions:
loadTasks()- Retrieves saved tasks on app startsaveTasks()- Automatically saves when tasks change
Simple React state management with TypeScript interfaces:
interface Task {
id: string;
title: string;
description: string;
completed: boolean;
createdAt: string;
}This app was built to demonstrate:
- Clean, maintainable React Native code
- Proper TypeScript usage
- CRUD operation implementation
- Local data persistence
- Modern UI/UX practices
- Professional code structure
A comprehensive example of modern mobile development practices.
β
Zero Setup - Just run docker compose up -d
β
Consistent Environment - Works the same everywhere
β
Professional Deployment - Shows DevOps knowledge
β
Easy Sharing - Send the repo, run one command
β
Production Ready - Includes health checks and proper configuration
β Native Performance - Full React Native capabilities β Offline Functionality - Works without internet connection β Device Integration - Access to native Android features β Professional Distribution - Ready for Google Play Store β Easy Installation - Single APK file for direct install
- Web Version: Instant demo via browser
- Docker Container: Professional web deployment
- Android APK: Native mobile distribution
- Development Build: For testing and debugging
- React Native Development - Cross-platform mobile app development
- TypeScript Integration - Type-safe JavaScript development
- State Management - React hooks and local storage integration
- UI/UX Design - Modern, responsive design with dark mode support
- CRUD Operations - Complete data management functionality
- Mobile Development - Native Android app with custom icon
- DevOps Integration - Docker containerization and deployment
- Version Control - Clean Git workflow with meaningful commits
- Documentation - Comprehensive setup and build instructions
- Clean Code Architecture - Well-structured, maintainable codebase
- Professional Git History - Meaningful commits with proper messages
- Multiple Deployment Options - Web, Docker, and native mobile
- Comprehensive Documentation - Clear setup and build instructions
- Visual Documentation - Screenshots and feature demonstrations
- Production Readiness - Release builds and deployment strategies
- Full-Stack Capability - Frontend, mobile, and deployment
- Modern Tech Stack - Latest React Native and TypeScript
- Professional UI - Dark mode, custom icons, smooth interactions
- Enterprise Practices - Docker, CI/CD examples, proper documentation
- Open Source Ready - MIT license, contributing guidelines
MIT License - Feel free to use this code for your own projects.
This project welcomes contributions! Feel free to:
- Report bugs or issues
- Suggest new features
- Submit pull requests
- Use as a learning resource
Built with β€οΈ for the developer community.



