4.3 KiB
Task Management Mobile Application – Project Summary
Overview
This project is a mobile task management application developed using React Native (Expo) with Supabase as the backend. The application enables users to create, view, edit, and delete tasks while maintaining secure authentication and session management.
The system follows a full-stack architecture, integrating frontend UI components with backend database operations and authentication services.
Technologies Used
Frontend
- React Native (Expo)
- Expo Router (navigation)
- React Hooks (
useState,useEffect,useFocusEffect)
Backend
- Supabase (PostgreSQL database + authentication)
- Row Level Security (RLS) for data protection
Storage & Security
- Expo SecureStore for persistent session storage
Application Structure
Navigation
The app uses Expo Router with a combination of:
- Tab navigation for main screens
- Stack navigation for individual pages
Main routes:
/→ Home (Today view)/tasks→ Task list/createTask→ Create new task/editTask→ Edit existing task/createUser→ Sign up/login→ Login
Authentication System
The application includes a complete authentication flow:
- User Registration
- Email and password-based signup
- User Login
- Credential-based authentication
- Session Management
- Persistent sessions using SecureStore
- Protected Routes
- Users are redirected if not authenticated
- Logout
- Ends session via Supabase
Task Management Features
Create Task
Users can:
- Enter title, description, and deadline
- Set completion status using a checkbox
- Save tasks to the database
Read Tasks
- Tasks are fetched from Supabase
- Displayed using a
SectionList - Categorized into:
- Upcoming Tasks
- Completed Tasks
- Supports manual refresh and auto-refresh on screen focus
Update Task
- Existing tasks can be edited
- Fields are pre-filled with current values
- Updates are sent to the database using task ID
Delete Task
- Tasks can be deleted with confirmation
- List updates after deletion
User Interface Design
A centralized styling system (defaultStyles) was implemented to ensure consistency across the application.
Key UI Components
- Text inputs for forms
- Buttons and pressable elements
- Custom checkbox component
- Sectioned task list
- Activity indicators for loading states
UX Features
- Keyboard handling with
KeyboardAvoidingView - Tap outside to dismiss keyboard
- Alerts for feedback (success/errors)
- Dynamic headers with actions (refresh, logout)
State Management
The app uses local state via React Hooks:
useStatefor form data and UI stateuseEffectfor lifecycle eventsuseFocusEffectfor refreshing data when screens are focused
Backend Integration
Supabase Client
- Configured using environment variables
- Secure session persistence enabled
- Automatic token refresh
Database Operations
INSERT→ create tasksSELECT→ fetch tasksUPDATE→ edit tasksDELETE→ remove tasks
Data Model (Tasks Table)
tId(UUID)titledescriptiondeadlineisCompletedlastChangeduId(user reference)
Security
- Row Level Security (RLS) ensures users can only access their own tasks
- Queries are filtered using
auth.uid() = uId - Update operations require a
WHEREclause to prevent unintended changes
Challenges and Solutions
Routing Issues
- Fixed incorrect relative paths by using absolute routes and parameters
Data Binding
- Ensured edit forms are pre-filled by fetching data using task ID
Database Errors
- Resolved missing
WHEREclause in update queries - Handled invalid date formats
UI Layout Problems
- Improved header layout by replacing default buttons with custom components
- Fixed spacing and alignment issues
Conclusion
The project successfully demonstrates the development of a full-stack mobile application with:
- Secure authentication
- Persistent user sessions
- CRUD operations with a backend database
- Structured navigation and UI design
The application follows scalable patterns and provides a solid foundation for further enhancements such as improved UI design, additional features, and performance optimizations.