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.
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.
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:
npm install -g expo-cli
git clone https://github.com/hoangsonww/Task-Manager-ReactNative.git
cd Task-Manager-ReactNative
Using npm:
npm install
Using Yarn:
yarn install
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:
a
or i
in the terminal to open the app on Android/iOS, respectively, with the simulator/emulator running), orw
in the terminal, it will then open a new tab in your default browser).
Note: The web version may not display correctly on larger screens. Also, some functionalities, like drag-and-drop, date picker, time picker, etc. may not work as expected on the web since they are designed for mobile devices.
+not-found
screen (though no such routes are present in the app - itβs technically impossible to get lost!).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
folder, this script resets the project state as needed.npm run format
or yarn format
to format the entire project. It formats most (if not all) files in the project according to the Prettier configuration.chmod +x <script-name>.sh
to make it executable, then run ./<script-name>.sh
to execute it.docker-compose.yml
) to build and run the Docker container, by running docker-compose up --build
. Ensure that Docker is installed and running on your system.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.
This project is licensed under the MIT License. See the LICENSE file for more details.
For any questions, feedback, or suggestions, please contact:
Thank you for checking out TaskNexus - Task Manager React Native App! ππ²