Task-Manager-ReactNative

TaskNexus - Task Manager React Native App πŸ“±

Project Version React Native Expo Node.js TypeScript Node Package Manager Yarn Prettier React Native Paper React Native Chart Kit MIT License

TaskNexus Logo

Table of Contents

Overview

TaskNexus - Task Manager React Native App is a modern, cross-platform mobile application built using React Native with Expo and TypeScript.

The app allows users to manage their daily tasks efficiently, with features like task addition, completion, deletion, and drag-and-drop reordering.

The app also includes a dedicated Stats screen with interactive charts (pie, bar, and line) for visualizing task statistics. It also features dark/light theme toggling with smooth transitions and a custom bottom tab bar for a better UI/UX.

TaskNexus Logo

TaskNexus Branding

I chose the name β€œTaskNexus” for the app to reflect its core purpose - a central hub for managing tasks.

I hope its name and branding convey a sense of connectivity and organization, with the app serving as a nexus for all tasks and to-dos.

iOS

Task Manager App - iOS Task Manager App - iOS Task Manager App - iOS Task Manager App - iOS Task Manager App - iOS

Android

Task Manager App - Android Task Manager App - Android Task Manager App - Android Task Manager App - Android Task Manager App - Android

Modals

Task Manager App - Add Modal Task Manager App - Add Modal Dark Task Manager App - Edit Modal Task Manager App - Edit Modal Dark

Web

Task Manager App - Web

Screen Recordings (GIFs)

Task Manager App - iOS Task Manager App - Android

Features

Task Management

Statistics Visualization

Theme & UI

Flash Screen

Technical Stack & Libraries

TaskNexus is built using a modern tech stack that includes both core and third-party libraries to enhance functionality and user experience. Here are the key components:

Core Dependencies:

Third-Party Dependencies:

Other:

Installation & Setup

Prerequisites

Clone the Repository

git clone https://github.com/hoangsonww/Task-Manager-ReactNative.git
cd Task-Manager-ReactNative

Install Dependencies

Using npm:

npm install

Using Yarn:

yarn install

Running the App

Start the Expo development server:

npm start
# or
yarn start

Alternatively, you can use the Expo CLI directly:

npx expo start

Note: You can also use the -c flag to clear the cache and start fresh if needed: npx expo start -c.

Then:

Usage Instructions

Home Screen

Stats Screen

Theme Toggle

Routing

File Structure

Task-Manager-ReactNative
β”œβ”€β”€ app.json                       # Expo configuration file
β”œβ”€β”€ package.json                   # Project dependencies and scripts
β”œβ”€β”€ tsconfig.json                  # TypeScript configuration file
β”œβ”€β”€ .gitignore                     # Git ignore file
β”œβ”€β”€ Dockerfile                     # Dockerfile for containerization
β”œβ”€β”€ docker-compose.yml             # Docker Compose file for containerization
β”œβ”€β”€ app
β”‚   β”œβ”€β”€ _layout.tsx                # Main layout with theme, navigation, and context providers
β”‚   β”œβ”€β”€ index.tsx                  # Flash screen and redirection to home screen
β”‚   β”œβ”€β”€ +not-found.tsx             # Custom Not Found screen for undefined routes
β”‚   └── (tabs)
β”‚       β”œβ”€β”€ _layout.tsx            # Layout for tabbed screens
β”‚       β”œβ”€β”€ home.tsx               # Home screen for task management
β”‚       └── stats.tsx              # Stats screen for displaying charts and statistics
β”œβ”€β”€ components
β”‚   β”œβ”€β”€ Chart.tsx                  # Reusable chart component for pie, bar, and line charts
β”‚   β”œβ”€β”€ CustomTabBar.tsx           # Custom bottom tab bar component (with theme toggle)
β”‚   β”œβ”€β”€ TaskAddModal.tsx           # Modal component for adding new tasks
β”‚   └── TaskItem.tsx               # Component for displaying individual tasks
β”œβ”€β”€ constants
β”‚   └── Colors.ts                  # Color definitions for light and dark themes
β”œβ”€β”€ contexts
β”‚   β”œβ”€β”€ ThemeOverrideContext.tsx   # React Context for theme override management (dark/light mode)
β”‚   └── TaskContext.tsx            # React Context for global task state management
β”œβ”€β”€ hooks
β”‚   └── usePrevious.ts             # Custom hook to capture previous state values
β”œβ”€β”€ scripts
β”‚   └── reset-project.js           # Script to reset project state (if needed)
β”œβ”€β”€ styles
β”‚   β”œβ”€β”€ HomeScreenStyles.ts        # Custom styles for the Home screen
β”‚   β”œβ”€β”€ StatsScreenStyles.ts       # Custom styles for the Stats screen
β”‚   β”œβ”€β”€ IndexStyles.ts             # Custom styles for the Flash screen and redirection
β”‚   β”œβ”€β”€ LayoutStyles.ts            # Custom styles for the main layout
β”‚   β”œβ”€β”€ TaskModalStyles.ts      # Custom styles for the task add modal
β”‚   β”œβ”€β”€ TaskItemStyles.ts          # Custom styles for individual task items
β”‚   β”œβ”€β”€ NotFoundStyles.ts          # Custom styles for the Not Found screen
β”‚   └── CustomTabStyles.ts         # Custom styles for the tab bar and related UI components
β”œβ”€β”€ types
β”‚   └── types.ts                   # TypeScript type definitions for the project
β”œβ”€β”€ assets
β”‚   β”œβ”€β”€ fonts                      # Custom fonts for the app (Roboto)
β”‚   └── images                     # Images used in the app
β”œβ”€β”€ img                            # Screenshots and GIFs for the README
└── shell                          # Shell scripts for common tasks
    β”œβ”€β”€ run-platform.sh            # Script to run the app on a specific platform
    β”œβ”€β”€ format.sh                  # Script to format the project code
    β”œβ”€β”€ start.sh                   # Script to start the app
    β”œβ”€β”€ reset.sh                   # Script to reset the project state
    └── update.sh                  # Script to update project dependencies

Scripts & Tools

Known Issue

Future Enhancements

Currently, the app provides essential task management features with a focus on simplicity and usability. In the near future, if I have more time, I would love to implement the following features that I have in mind:

These features would make TaskNexus similar to another app of mine - CollabNote, which is a full-stack web application for collaborative note-taking with user authentication, real-time updates, and more - but in a mobile app format.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Contact

For any questions, feedback, or suggestions, please contact:


Thank you for checking out TaskNexus - Task Manager React Native App! πŸš€πŸ“²

πŸ” Back to top