A cross-platform task management app built with React Native & Express.js
Stay productive with smart sorting, priority-based reminders, and a stunning dark UI.
Features β’ Tech Stack β’ Architecture β’ Getting Started β’ API Reference β’ Screenshots β’ Contributing
- User Authentication β Secure registration & login with JWT-based sessions
- Full Task Management β Create, read, update, and delete tasks with real-time cloud sync
- Smart Sort Algorithm β Weighted composite scoring using priority, deadline urgency, and recency
- Advanced Filtering β Filter by priority (π΄ Urgent / π High / π‘ Medium / π’ Low), category, and completion status
- Task Categories β Organize tasks into General, Work, Personal, Health, Shopping, and Study
- Priority-Based Recurring Reminders β Automatic notifications that repeat based on task priority:
Priority Reminder Interval π¨ Urgent Every 60 min π΄ High Every 90 min π‘ Medium Every 120 min π’ Low Every 180 min - Pull-to-Refresh β Swipe down to sync latest data from the cloud
- Swipe-to-Delete β Intuitive gesture-based task deletion
- Progress Tracking β Visual progress bar showing completed vs total tasks
- Optimistic UI Updates β Instant feedback with background sync & automatic rollback on error
- Motivational Quotes β Context-aware quotes delivered with reminders based on task category
- Dark Gradient Theme β Premium deep-space aesthetic with
#0A0E21β#1A1F3Dgradients - Glassmorphism Cards β Frosted glass-style task cards with subtle borders
- Animated FAB β Spring-animated floating action button with gradient fill
- Color-Coded Priorities β Instant visual cues with priority-specific colors
- Smooth Transitions β Polished modal animations and screen transitions
- RESTful API β Clean, documented Express.js endpoints
- JWT Authentication β Secure token-based auth with bcrypt password hashing (12 salt rounds)
- MongoDB Atlas β Cloud-hosted NoSQL database with Mongoose ODM
- Smart Sort (Server-side) β Weighted scoring algorithm:
score = priorityΓ3 + urgencyΓ2 + recencyΓ1 - Input Validation β Comprehensive field validation with descriptive error messages
- Health Check Endpoint β
/api/healthfor uptime monitoring
| Technology | Purpose |
|---|---|
| React Native 0.84 | Cross-platform mobile framework |
| TypeScript | Type safety and developer experience |
| React Navigation | Stack-based navigation |
| Axios | HTTP client for API communication |
| Notifee | Local push notifications & scheduling |
| AsyncStorage | Persistent local storage for auth tokens |
| Linear Gradient | Beautiful gradient backgrounds |
| Vector Icons | Material Community Icons |
| Gesture Handler | Swipe gestures for task actions |
| DateTimePicker | Native date & time selectors |
| Technology | Purpose |
|---|---|
| Node.js + Express | REST API server |
| TypeScript | Type-safe backend development |
| MongoDB + Mongoose | Database & ODM |
| JWT (jsonwebtoken) | Authentication tokens |
| bcryptjs | Password hashing |
| CORS | Cross-origin resource sharing |
| dotenv | Environment variable management |
TaskFlow/
βββ backend/ # Express.js REST API
β βββ src/
β β βββ middleware/
β β β βββ auth.ts # JWT authentication middleware
β β βββ models/
β β β βββ Task.ts # Task schema (title, deadline, priority, category)
β β β βββ User.ts # User schema with password hashing
β β βββ routes/
β β β βββ auth.ts # Register & Login endpoints
β β β βββ tasks.ts # Task CRUD with smart sort algorithm
β β βββ server.ts # Express app entry point
β βββ package.json
β βββ tsconfig.json
β
βββ mobile/ # React Native App
β βββ src/
β β βββ api/ # Axios API client modules
β β βββ components/ # Reusable UI components
β β β βββ Button.tsx # Gradient action button
β β β βββ CategoryTag.tsx # Category label badge
β β β βββ InputField.tsx # Styled text input with icons
β β β βββ PriorityBadge.tsx # Color-coded priority indicator
β β β βββ TaskCard.tsx # Glass-style task card with gestures
β β βββ context/
β β β βββ AuthContext.tsx # Global auth state management
β β βββ navigation/
β β β βββ AppNavigator.tsx # Stack navigator (Auth β App)
β β βββ screens/
β β β βββ LoginScreen.tsx
β β β βββ RegisterScreen.tsx
β β β βββ TaskListScreen.tsx # Main dashboard
β β β βββ AddTaskScreen.tsx # Task creation form
β β βββ services/
β β β βββ notificationService.ts # Recurring reminder engine
β β βββ theme/
β β β βββ index.ts # Design tokens & color system
β β βββ types/ # TypeScript type definitions
β βββ App.tsx # App entry point
β βββ package.json
β
βββ .gitignore
βββ README.md
- Node.js β₯ 22.11.0
- npm or yarn
- Android Studio (for Android emulator/build)
- MongoDB Atlas account (or local MongoDB instance)
- JDK 17+ (for React Native Android builds)
git clone https://github.com/Krish6115/TaskFlow.git
cd TaskFlowcd backend
npm installCreate a .env file in the backend/ directory:
PORT=5000
MONGO_URI=mongodb+srv://<username>:<password>@<cluster>.mongodb.net/taskflow
JWT_SECRET=your_super_secret_jwt_keyStart the development server:
npm run devThe API will be running at http://localhost:5000.
cd mobile
npm installConfigure the API base URL in src/api/ to point to your backend:
- Emulator:
http://10.0.2.2:5000/api(Android emulator) - Physical device:
http://<your-local-ip>:5000/api - Production: Your deployed API URL (e.g., Render.com)
Start Metro bundler and run on Android:
npm start
# In a new terminal:
npm run androidcd mobile/android
./gradlew assembleReleaseThe APK will be generated at mobile/android/app/build/outputs/apk/release/.
All task endpoints require a valid JWT token in the Authorization header:
Authorization: Bearer <token>
| Method | Endpoint | Description | Body |
|---|---|---|---|
POST |
/api/auth/register |
Create a new account | { name, email, password } |
POST |
/api/auth/login |
Login & receive JWT token | { email, password } |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/tasks |
List all tasks (with sort & filter) |
POST |
/api/tasks |
Create a new task |
PUT |
/api/tasks/:id |
Update a task |
DELETE |
/api/tasks/:id |
Delete a task |
| Parameter | Values | Description |
|---|---|---|
sortBy |
mixed Β· priority Β· deadline Β· dateTime |
Sort algorithm (default: mixed) |
filterPriority |
urgent Β· high Β· medium Β· low |
Filter by priority level |
filterCategory |
General Β· Work Β· Personal Β· Health Β· Shopping Β· Study |
Filter by category |
filterCompleted |
true Β· false |
Filter by completion status |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/health |
Returns { status: "OK", timestamp } |
The Mixed Sort mode uses a weighted scoring system to intelligently rank tasks:
score = (priorityWeight Γ 3) + (deadlineUrgency Γ 2) + (recency Γ 1)
| Factor | Weight | Score Range | Logic |
|---|---|---|---|
| Priority | Γ3 | 1β4 | urgent=4, high=3, medium=2, low=1 |
| Deadline Urgency | Γ2 | 0β4 | Higher for tasks due sooner (normalized to 42h window) |
| Recency | Γ1 | 0β1 | Newer tasks score slightly higher |
Completed tasks are always pushed to the bottom, regardless of score.
Contributions are welcome! Here's how to get started:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'feat: add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project follows Conventional Commits:
feat:β New featuresfix:β Bug fixesdocs:β Documentation changesstyle:β Code style / formattingrefactor:β Code refactoringtest:β Adding testschore:β Maintenance tasks
This project is licensed under the MIT License β see the LICENSE file for details.
Siva Rama Krishna Reddy Padala (SRKREDDY)
Built with β€οΈ using React Native & Express.js