Skip to content

dominguetigs/task-management-app

Repository files navigation

Task Management App

Node.js version NPM version NextJS version ReactJS version Made by Gustavo Domingueti

Table of Contents

πŸ”– About

This project is a Task Management App built with Next.js, React, TypeScript, and Zustand. It allows users to create, edit, categorize, and track tasks efficiently. The app was designed with a custom-built table view, dynamic filtering, and inline editing, providing a seamless user experience.

🎯 Main features

  • Task creation and editing with title, status, and priority selection.
  • Inline editing available for all table columns except the ID column, allowing quick modifications directly in the table.
  • Task deletion available both from the table row and within the task edit form.
  • Custom-built table view for task visualization, designed from scratch for flexibility and performance.
  • Custom pagination with options to define items per page and a clear indication of the currently selected page.
  • Sorting configuration available for all table columns, allowing dynamic ordering of tasks.
  • Custom fields support with text, number, and boolean types, enabling flexible task attributes.
  • Column-based filtering with intelligent filtering based on column types, including default filters for title (task name), priority, and status.
  • Custom field filtering automatically adapts to the field type (text, number, or boolean).

✨ Bonus features

  • Micro-animations to enhance user experience, providing smooth transitions and feedback for actions like task updates, filtering, and pagination.
  • Multi-select support in the table, allowing bulk actions such as mass deletion, bulk status updates, and priority changes.
  • Undo/Redo functionality available for certain task creation, editing, and deletion actions.
  • Global search field to quickly find tasks across the entire table.

πŸš€ Technologies and libraries

The project was developed using the following technologies and libraries:

βœ… Best Practices & Tooling

This project follows modern best practices to ensure code quality, consistency, and maintainability:

  • Husky Automates pre-commit hooks to enforce standards before pushing changes.
  • ESLint Ensures consistent code quality by identifying and fixing linting issues.
  • Prettier Automatically formats code to maintain a uniform style.
  • Commitlint Enforces a standardized commit message format.
  • Lint-staged Runs linters on staged files before committing, ensuring only formatted and checked code is pushed.

πŸ“‚ Project structure

/task-management-app
│── src/                     # Main source code
β”‚   β”œβ”€β”€ app/                 # Next.js app directory (includes pages, layouts, and API routes)
β”‚   β”œβ”€β”€ components/          # Reusable UI components (ShadCN UI components and custom ones)
β”‚   β”œβ”€β”€ constants/           # Static values and configuration constants
β”‚   β”œβ”€β”€ containers/          # High-level components that structure sections of the app
β”‚   β”œβ”€β”€ lib/                 # Shared libraries, helpers, and integrations
β”‚   β”œβ”€β”€ services/            # Handles data persistence and business logic (using LocalStorage for storage)
β”‚   β”œβ”€β”€ stores/              # State management (Zustand)
β”‚   β”œβ”€β”€ types/               # TypeScript types and interfaces
β”‚   β”œβ”€β”€ utils/               # Utility functions and helper methods
│── public/                  # Static assets (images, fonts, favicons)
│── package.json             # Project dependencies and scripts
│── README.md                # Project documentation

βœ”οΈ πŸ’» Desktop Result

Desktop result 1

βœ”οΈ πŸ“± Mobile Result

Mobile result 1

πŸ”₯ How to use

  • Prerequisites

    • It is necessary to have Node.js installed on the machine in the lts version.
    • Also, you need to have a package manager be it NPM or Yarn.
  1. Clone the repository:
  $ git clone [email protected]:dominguetigs/task-management-app.git
  1. Run the Application:
  # Install the dependencies
  $ npm install

  # Initialize the application
  $ npm run dev

πŸ“ License

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


Made with πŸ’™ by Gustavo Domingueti

Releases

No releases published

Packages

No packages published