Submitted by: Imaran Ali
Mobile: 6388649373 | Email: imarani494@gmail.com
This project was built as part of the Android/iOS/React Native Developer Intern hiring assignment for Foto Owl AI, Baner, Pune.
Submission deadline: 25 June 2025 Submitted on: 25 June 2025 ✅
| Screen | Features |
|---|---|
| 🔐 Login | Email/password validation, JWT simulation, session persisted via AsyncStorage |
| 📋 Task Dashboard | Task list from API, pull-to-refresh, search bar, completed/pending filters |
| ➕ Add Task | Form with title & description validation, POST to API |
| 👤 Profile | User info display, task stats, logout with confirmation |
| Feature | Status |
|---|---|
| Offline Task Caching | ✅ AsyncStorage stale-while-revalidate |
| Dark Mode | ✅ System-aware via useColorScheme |
| Unit Tests | ✅ Validation & auth helpers |
baner/
├── app/
│ ├── screens/
│ │ ├── LoginScreen.tsx
│ │ ├── TaskDashboardScreen.tsx
│ │ ├── AddTaskScreen.tsx
│ │ └── ProfileScreen.tsx
│ └── navigation/
│ └── AppNavigator.tsx
├── components/
│ ├── TaskCard.tsx
│ └── EmptyState.tsx
├── services/
│ └── api.ts # Axios + interceptors
├── store/
│ ├── AuthContext.tsx # Login / logout / session
│ └── TaskContext.tsx # Fetch / add / toggle tasks
├── utils/
│ ├── validation.ts
│ ├── storage.ts
│ └── __tests__/
│ └── validation.test.ts
├── assets/
├── README.md
└── AI_USAGE.md
| Tool | Version |
|---|---|
| Node.js | ≥ 18 |
| React Native CLI | Latest |
| Android Studio | Hedgehog+ |
| JDK | 17 |
# 1. Clone the repository
git clone https://github.com/imarani494/baner.git
cd baner
# 2. Install dependencies
npm install
# 3. Run on Android
npx react-native run-android
# 4. Run on iOS (Mac only)
cd ios && pod install && cd ..
npx react-native run-iosNo
.envfile needed — the app uses JSONPlaceholder for tasks and simulates JWT auth locally.
Email: demo@example.com
Password: demo123
Any valid email + password (min 6 characters) will work since auth is simulated.
| Area | Choice | Reason |
|---|---|---|
| State | Context API + useReducer | Lightweight, avoids Redux boilerplate for this scope |
| HTTP | Axios | Interceptors for token injection and error normalisation |
| Auth | JWT simulation + AsyncStorage | Mirrors real JWT flow without a backend |
| Navigation | React Navigation v6 | Stack + bottom tab pattern |
| TypeScript | Strict mode | Catches bugs across context → screen → component |
| Offline | Stale-while-revalidate | Cached tasks show instantly; fresh fetch runs in background |
The debug APK is attached to the submission email.
- File:
app-debug.apk - Tested on: Android 11+
- Build:
react-native build-android --mode=debug
A short video walkthrough demonstrating all screens and features is included with the submission.
See AI_USAGE.md for full disclosure of AI tools used, prompts, and which parts were manually written.
This project was created for evaluation purposes as part of the Foto Owl AI hiring process.
Made with ❤️ by Imaran Ali