Skip to content

Repository files navigation


React Native Developer Intern — Assignment

Submitted by: Imaran Ali
Mobile: 6388649373  |  Email: imarani494@gmail.com


📌 Assignment Overview

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


📱 App Features

Core Screens

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

Bonus Features

Feature Status
Offline Task Caching ✅ AsyncStorage stale-while-revalidate
Dark Mode ✅ System-aware via useColorScheme
Unit Tests ✅ Validation & auth helpers

🗂️ Project Structure

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

🚀 How to Run

Prerequisites

Tool Version
Node.js ≥ 18
React Native CLI Latest
Android Studio Hedgehog+
JDK 17

Steps

# 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-ios

No .env file needed — the app uses JSONPlaceholder for tasks and simulates JWT auth locally.


🧪 Test Credentials

Email:     demo@example.com
Password:  demo123

Any valid email + password (min 6 characters) will work since auth is simulated.


🏗️ Architecture Decisions

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

📦 APK Download

The debug APK is attached to the submission email.

  • File: app-debug.apk
  • Tested on: Android 11+
  • Build: react-native build-android --mode=debug

📹 Demo

A short video walkthrough demonstrating all screens and features is included with the submission.


🤖 AI Usage

See AI_USAGE.md for full disclosure of AI tools used, prompts, and which parts were manually written.


📄 License

This project was created for evaluation purposes as part of the Foto Owl AI hiring process.


Made with ❤️ by Imaran Ali

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages