Your Central Hub for Task Management Excellence
A modern, cross-platform task management application built with React Native, Expo, and TypeScript. Manage your daily tasks efficiently with real-time synchronization, beautiful charts, and intuitive UI.
TaskNexus is a comprehensive task management solution designed for modern users who need reliable, efficient, and beautiful task tracking across all their devices. Built with cutting-edge technologies and best practices, it offers a seamless experience whether you're on iOS, Android, or the web.
Designed specifically for efficient task management with an intuitive interface that gets out of your way.
Optimized performance with real-time updates and smooth animations throughout the app.
Your data is protected with Supabase authentication and row-level security policies.
Beautiful charts and statistics to help you understand your productivity patterns.
The name "TaskNexus" reflects the app's core purpose โ serving as a central hub (nexus) for all your tasks. It conveys a sense of connectivity and organization, bringing together tasks from different aspects of your life into one unified, powerful platform.
TaskNexus follows a modern, scalable architecture pattern with clear separation of concerns. The application is built using React Native with Expo, leveraging TypeScript for type safety and Supabase for backend services.
Task-Manager-ReactNative/
โโโ ๐ฑ app/ # Expo Router screens
โ โโโ _layout.tsx # Root layout with providers
โ โโโ index.tsx # Flash/Splash screen
โ โโโ (tabs)/ # Tab-based navigation
โ โโโ home.tsx # Task management screen
โ โโโ stats.tsx # Analytics screen
โ โโโ login.tsx # Authentication screen
โ โโโ register.tsx # Registration screen
โโโ ๐จ components/ # Reusable components
โ โโโ Chart.tsx # Chart visualizations
โ โโโ CustomTabBar.tsx # Custom tab bar with theme toggle
โ โโโ TaskAddModal.tsx # Task creation modal
โ โโโ TaskItem.tsx # Individual task component
โโโ ๐ฏ contexts/ # Global state management
โ โโโ TaskContext.tsx # Task state & operations
โ โโโ ThemeOverrideContext.tsx # Theme management
โโโ ๐ง lib/ # Utilities & configuration
โ โโโ supabaseClient.ts # Supabase initialization
โโโ ๐
styles/ # Component styles
โ โโโ HomeScreenStyles.ts
โ โโโ StatsScreenStyles.ts
โ โโโ ...
โโโ ๐ญ constants/ # App constants
โ โโโ Colors.ts # Theme colors
โโโ ๐ช hooks/ # Custom React hooks
โ โโโ usePrevious.ts # Previous state hook
โโโ ๐ฆ types/ # TypeScript definitions
โ โโโ types.ts # Shared types
โโโ ๐๏ธ supabase/ # Database schema
โ โโโ db.sql # PostgreSQL schema
โโโ ๐งช __tests__/ # Test files
โโโ ๐ณ Dockerfile # Container configuration
โโโ ๐ README.md # Documentation
Flash Screen
Home - Light Mode
Stats - Light Mode
Home - Dark Mode
Stats - Dark Mode
Flash Screen
Home - Light Mode
Stats - Light Mode
Home - Dark Mode
Stats - Dark Mode
Home - Light Mode
Stats - Light Mode
Home - Dark Mode
Stats - Dark Mode
iOS User Experience
Android User Experience
Real-time Synchronization Across Devices
Note: The GIFs and images may not fully represent the app's current state, as they were captured during development. The app has since been enhanced with new features and improvements. Clone the repository to experience the latest version!
React Context API for global state management with TaskContext and ThemeContext providers
Expo Router for file-based routing with nested layouts and tab navigation
React Native Reanimated for smooth 60 FPS animations and gesture handling
Supabase real-time subscriptions for instant synchronization across devices
# Install Expo CLI globally
npm install -g expo-cli
git clone https://github.com/hoangsonww/Task-Manager-ReactNative.git
cd Task-Manager-ReactNative
# Using npm
npm install
# Or using Yarn
yarn install
Create a .env file in the root directory with your
Supabase credentials:
EXPO_PUBLIC_SUPABASE_URL=your_supabase_url
EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
Run the SQL schema from supabase/db.sql in your
Supabase project:
-- Creates tasks table with row-level security
-- Run this in your Supabase SQL editor
# Start the Expo development server
npm start
# Or use Expo CLI directly
npx expo start
# Clear cache if needed
npx expo start -c
Press a for Android, i for iOS, or w for Web
Use the shell scripts in the shell/ directory for
common tasks:
./shell/start.sh - Start the app./shell/format.sh - Format code./shell/reset.sh - Reset project stateThe web version may not display correctly on larger screens and some features like drag-and-drop may have limited functionality on web.
# Run all tests
npm test
# Watch mode
npm run test:watch
# Coverage report
npm run test:coverage
Tests are located in the __tests__/ directory using
Jest and React Testing Library.
# Build and run with Docker Compose
docker-compose up --build
# Stop containers
docker-compose down
Note: Docker setup is optimized for the web version of the app.
| Column | Type | Description |
|---|---|---|
| id | UUID | Primary key |
| user_id | UUID | Foreign key to auth.users |
| text | Text | Task description |
| color | Text | Task color |
| due_date | Timestamp | Due date and time |
| completed | Boolean | Completion status |
npm start
Start the Expo development server
npm run android
Start on Android emulator
npm run ios
Start on iOS simulator
npm run web
Start on web browser
npm run format
Format code with Prettier
npm test
Run test suite
TaskNexus is open source and welcomes contributions! Feel free to:
This project is licensed under the MIT License. See the LICENSE file for details.
Note: This project is for educational purposes. Please credit the original author when using any part of this code.