- About
- Main Features
- Bonus Features
- Technologies
- Best Practices & Tooling
- Project Structure
- How to Use
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.
- 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).
- 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.
The project was developed using the following technologies and libraries:
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.
/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
- Clone the repository:
$ git clone [email protected]:dominguetigs/task-management-app.git
- Run the Application:
# Install the dependencies
$ npm install
# Initialize the application
$ npm run dev
This project is under the MIT license. See the LICENSE file for more details.