mini project
mini project
BACHELOR OF TECHNOLOGY
in
“Computer Science & Engineering”
Submitted by
Rishikesh Mall
(Roll No. : 2201200109019)
Under Guidance of
Mr. Nitin Dixit
(Assistant Professor, CSE)
Submitted To
1- To impart quality education in computer science & engineering through competent faculties,
good infrastructure and learning resources to produce competent graduates required by the
industry.
3- To develop graduates to be computer professionals with high ethical standard and self-
learning ability.
PO
Rubrics CO Statements MAPPING
Students will be able to work effectively in individual and PO9,
1 C211.1 teamto manage the projects. PO11
Apply written and verbal communication through report and
2 C211.2 presentation. PO10
Evaluation
Program Name : B. Tech (CSE) Semester : VII
Course Name : Mini Project or Internship Session : 2024-25
Course Code : KCS 752 Section : C
v
DECLARATION
This is certified that the work which is being presented in the mini project entitled “Web Based
Digital Admission System” is submitted in the department of Computer Science and Engineering
work carried out during the semester under the supervision of “Front End Web Development
The matter presented in this mini project has not been submitted by me for the award of any other
Rishikesh Mall
This is to certify that the above statement made by the candidate is correct to the best of my
knowledge.
vi
ABSTRACT
This project introduces a task-tracking application designed to help users effectively manage and
With a streamlined, user-friendly interface, the application allows users to create tasks with
customizable tags, set due dates, and update their status in real time. The application features
automatic notifications for tasks due on the current date, enhancing user accountability.
Task completion is tracked through dynamic columns ("To Do," "Doing," "Done"), each displaying
tasks based on their current status.This project integrates React ‘s component-driven structure,
efficient state management, and local storage for data persistence, providing a reliable and responsive
experience.
vii
ACKNOWLEDGEMENT
Whenever a module of work is completed, there is always a source of inspiration. I always find my
parents as my torch bearers. While completing this task, I realized from my inner core that Rome was
not built in day. I found a stack of mini project reports in the library of ITM Gorakhpur library. Those
reports are the landmarks for me on the way of this task. The presented report is an effort of day and
I am sincerely thankful to Mr. Ashutosh Rao (HOD) &Mr. Nitin Dixit (Mini Project
Coordinator)for his support. I express my gratitude and thanks to all the faculties and staff members
of Computer Science & Engineering department for their sincere cooperation in furnishing relevant
Finally, my greatest debt is to my parents, my family for their enduring love, support and forbearance
Rishikesh Mall
viii
TABLE OF CONTENTS
Page No.
CERTIFICATE v
DECLARATION vi
ABSTRACT vii
ACKNOWLEDGEMENT viii
TABLE OF CONTENTS ix
LIST OF TABLES x
LIST OF FIGURES xi
LIST OF SYMBOLS AND ABBREVIATIONS xii
ix
4.5 STYLING AND USER INTERFACE DESIGN 28 – 29
x
LIST OF FIGURES
xi
LIST OF TABLES
xii
CHAPTER-1
INTRODUCTION TO TASK – TRACK WEB APPLICATION
In today's fast-paced world, managing tasks efficiently is crucial for both personal and
professional productivity.
Many individuals struggle to keep track of their to-do lists, deadlines, and task progress.
Existing solutions often come with complex features that may not be necessary for everyone.
This project aims to develop a simple and intuitive task tracking application that allows users
to easily add, manage, and track their tasks.
The application will enable users to categorize tasks based on their status (e.g., "To Do",
"Doing", "Done"), set due dates, and mark tasks as completed. Additionally, users will be able
to delete tasks once they are no longer needed.
The goal of this project is to provide a lightweight tool for users to stay organized, with a
focus on simplicity, ease of use, and essential features.
The objective of this project is to develop a simple and user-friendly task tracking application
that allows users to:
1. Create Tasks: Users can easily add tasks with details like task name, status, due date, and
tags.
2. Organize Tasks: Tasks will be categorized based on their status (To Do, Doing, Done),
making it easier to track progress.
3. Edit and Delete Tasks: Users can update task details and remove tasks once they are no
longer needed.
4. Complete Tasks: Users can mark tasks as completed, helping them keep track of finished
work.
5. Set Due Dates: Tasks can have due dates, with reminders for tasks due today.
This application aims to provide a simple, intuitive interface for managing tasks efficiently and
effectively.
1
1.3 Scope of the Project :
1. Task Management: The application allows users to create, edit, delete, and complete tasks.
Each task can have a name, tags, status, and due date.
2. Task Categorization: Tasks are categorized into three statuses: "To Do," "Doing," and
"Done," providing a clear view of their progress.
3. Tagging System: Users can assign multiple tags (e.g., HTML, CSS, JavaScript, React) to
tasks for better organization and identification.
4. Due Date Reminders: The application provides notifications for tasks that are due today.
5. Simple User Interface: The interface is designed to be straightforward and easy to use, with
no complex configurations or setup required.
6. Data Persistence: Tasks are stored locally in the browser using localStorage, ensuring data is
saved even after the application is closed or refreshed.
This task tracking application serves as an efficient tool for personal task management. The
project provides the following benefits:
1. Improved Productivity: By organizing tasks into categories like "To Do," "Doing," and
"Done," users can better prioritize and track their progress, leading to improved time
management and productivity.
2. Simple User Interface: The application is designed to be user-friendly, making it accessible
even to those who are not familiar with complex task management systems.
3. Customization with Tags: The tagging feature allows users to categorize tasks by different
criteria (e.g., HTML, CSS, JavaScript), helping them stay organized and focused on specific
areas of work.
4. Due Date Notifications: The reminder system ensures that tasks are completed on time by
notifying users of tasks that are due today.
5. Local Data Storage: The use of localStorage ensures that users' tasks persist between
sessions without requiring an internet connection, making it reliable and efficient for personal
use.
2
1.5 Overview of the Technology used :
These technologies work together to make the app easy to use and manage tasks efficiently.
3
CHAPTER – 02
LITERATURE REVIEW
2.1 Existing Task Management Systems:
Task management systems have become essential tools for individuals and teams to track, organize,
and manage their tasks efficiently.
These systems offer a variety of features to help users prioritize, delegate, and monitor the progress
of tasks.
1. Trello: Trello is a visually-oriented task management tool that uses boards, lists, and cards to
help users organize tasks. It is widely used for project management and collaboration,
especially among teams. Its drag-and-drop interface makes it easy to move tasks between
different stages of completion.
2. Asana: Asana is a project management tool that focuses on task tracking and team
collaboration. It allows users to create tasks, assign them to team members, set deadlines, and
track progress. It also includes features like task dependencies, project timelines, and
workflow automation.
3. Todoist: Todoist is a personal task management app that helps users organize tasks by project,
priority, and deadline. It has a simple and intuitive user interface that makes it ideal for
managing personal tasks and small projects.
4. Microsoft To-Do: This task management app integrates seamlessly with other Microsoft
tools. It is designed for simple task tracking and supports features like due dates, reminders,
and task categories. It's suitable for users looking for a straightforward tool with integration
into the Microsoft ecosystem.
Task Creation: Most task management systems allow users to create tasks with key details
like title, due date, and priority. This feature helps users organize their work effectively and
ensures nothing is overlooked.
Task Prioritization: Users can assign due dates, set priorities, and categorize tasks, which
helps them focus on urgent tasks first. These features are critical for users with a heavy
workload.
4
Collaboration: Many task management tools enable collaboration, allowing teams to assign
tasks to specific members, comment on tasks, and share project progress.
Notifications: Task reminders and due date notifications help users stay on track and avoid
missing deadlines.
Cross-Platform Syncing: Most modern task management systems support cloud syncing,
ensuring that users can access their tasks from any device, whether on desktop or mobile.
Complexity: Some tools, like Asana and Trello, offer a wide range of features that may be
overwhelming for individual users or small teams.
Cost: While many task management tools offer free versions, some advanced features (such
as detailed reporting, additional integrations, or larger storage) are often locked behind paid
plans.
Lack of Offline Mode: Some tools, particularly cloud-based platforms, require an internet
connection to function. Opportunities for Improvement:
Task management tools could offer simpler interfaces for individual users or smaller teams,
reducing the learning curve and enhancing usability.
More affordable solutions could be developed to cater to individuals or small businesses that
cannot afford the premium versions of larger systems.
6
b. In contrast, Trello primarily focuses on individual use, though it does allow for team
collaboration with some limited features.
Task Tracking ✔️Track progress with task ✔️Task statuses and ✔️Track progress through task
& Progress statuses and checklists progress bars status (Todo, Doing, Done)
✔️Allows sub-tasks
✔️Add sub-tasks for better ✔️No sub-task functionality
Subtasks and task
task management (tasks are standalone)
dependencies
UI & UX ✔️Modern, intuitive, easy- ✔️Simple yet feature- ✔️Simple UI with task board
7
to-navigate rich interface and filtering options
8
CHAPTER – 03
TECHNOLOGY STACK
1) React:
a. Purpose: React was chosen as the main framework due to its component-based structure,
which allows for creating reusable UI elements and makes the application scalable and
maintainable.
b. Role in Application: It serves as the core of the application, managing state (like task data)
and rendering components, such as task columns and individual task cards, based on task
status.
c. Component-Based Architecture: Encourages modular design, making each part of the UI
manageable and reusable.
d. Virtual DOM: Enhances performance by reducing direct DOM manipulation and only re-
rendering changed components.
e. Declarative UI: Simplifies development with components that update automatically based on
state changes.
9
2) JavaScript (JS):
a. Functionality: JavaScript enables dynamic interactions, making the application more
responsive and interactive.
b. Implementation: JavaScript powers functions like task creation, status updates, and deletion,
allowing smooth updates to the UI as the user interacts with tasks.
c. Event Handling: Provides dynamic interactivity, enabling responsive features like adding or
deleting tasks instantly.
d. DOM Manipulation: JavaScript can directly manipulate the DOM for real-time updates,
enhancing user experience.
3) CSS:
a. Objective: CSS was used for styling to enhance the visual appeal and improve the user
experience.
b. Application: CSS styles elements across the application, such as task cards, columns, and the
task form, ensuring a clean and organized layout.
c. Layout Control: Flexbox and Grid allow precise, responsive layout designs that work across
screen sizes.
d. Responsive Design: CSS media queries make the app adaptable to different devices (e.g.,
mobile, tablet, desktop).
4) HTML:
a. Structural Basis: HTML provides the structure and layout of the web application, allowing
content to be displayed meaningfully.
b. Usage in Layout: HTML is used in the component templates, giving structure to the task
columns, task form, and buttons, making it easier for users to understand and interact with the
app
c. Structure: HTML provides the foundational layout, creating a clear structure for elements
like headers, footers, and sections.
d. Semantic Elements: HTML5 elements (like <article>, <section>, <header>) improve
accessibility and SEO.
In this task-tracking application, several icons and assets were incorporated to enhance the user
interface, making the application more engaging and easier to navigate.
1) Icons
a. Key icons used in the app include:
10
i. Add Task Icon: This icon is placed in the TaskForm component, symbolizing the action of
adding a new task.
ii. Delete Icon: Found in the TaskCard component, this icon represents the option to remove
tasks.
iii. Edit Icon (if applicable): If included, this icon appears next to tasks in the TaskCard
component, allowing users to quickly edit a task’s details. .
2) Images/Assets :
a. Examples of assets used include:
i. Logo/Branding: The logo or brand image appears at the top of the application, helping to
establish the identity of the app.
ii. Background Images: Subtle background images or patterns are incorporated to improve the
visual experience without distracting from the primary functionality of the app.
iii. Task Tag Icons: Custom icons for different task tags are displayed next to each task in the
TaskCard component, visually representing task categories.
3) Custom Assets :
a. Custom-designed assets like icons, illustrations, or images are tailored to match the app's
unique style and branding.
b. For example, custom icons could be used for special actions like task prioritization or
deadlines.
ICONS USED :
11
Fig. 3.4 : DIRECT – HIT - BUTTON :
In this application, Local Storage and State Management play key roles in managing data
effectively and ensuring a smooth user experience.
1) Local Storage
12
a) Purpose: Local Storage is used to store data on the user’s device, allowing information to
persist even after the app is closed or refreshed.
b) Implementation: In this app, Local Storage is used to save task data, which means tasks
remain available even when the page is reloaded.
When a new task is added or an existing task is deleted, the data is updated in Local Storage,
ensuring it reflects the latest state of tasks.
i. const [tasks, setTasks] = useState([]); in the App component initializes the task list.
d. Together, Local Storage and State Management create a seamless experience where users’
data persists reliably and updates instantly across components like TaskForm, TaskColumn,
and TaskCard.
e. This combination allows users to manage tasks without losing progress, even if they refresh or
revisit the app.
13
3.4 JavaScript ES6+ Features :
In developing this task-tracking application, several ES6+ JavaScript features were utilized to write
cleaner, more efficient, and organized code.
1. Arrow Functions
a. Usage in the Application: Arrow functions are used throughout the application for handling
user interactions, such as adding or deleting tasks.
b. For example, const handleDelete = (taskId) =>{ ... } in the task deletion logic. This keeps the
code concise and improves readability.
2. Destructuring
a. Usage in the Application:Destructuring is used in components to pull out specific properties
from objects.
b. For example, in TaskCard, destructuring is used to extract title, description, and other task
properties, so they can be directly accessed.
c. Example: const { title, description, status } = task; extracts these properties in one line for use
in TaskCard.
3. Template Literals
a. Usage in the Application: Template literals are used in various parts of the app, particularly
for displaying dynamic content.
b. For instance, if there is a need to show the task count in a message, template literals like `You
have ${tasks.length} tasks` help in creating this message quickly without complex
concatenation.
4. Array Methods (e.g., map, filter, forEach)
a. Usage in the Application: These methods are used extensively to manage tasks.
b. For instance, the filter method is used in the handleDelete function to remove tasks by
creating a new array without the deleted task.
c. The map method is used to render task components dynamically in TaskColumn.
d. Example:tasks.filter(task => task.id !== taskId); filters out the task to be deleted.
5. Spread and Rest Operators
a. Usage in the Application: The spread operator is commonly used to add a new task to the
existing list of tasks without mutating the original array.
b. For example, setTasks([...tasks, newTask]) creates a new array with the existing tasks plus the
new task, keeping the original array unaltered.
14
3.5 Development Tools :
To build and manage this task-tracking application effectively, several development tools were
utilized. Each tool played a specific role in improving productivity, debugging, and maintaining
code quality.
Browser Development Tools were essential in building, testing, and debugging this task-tracking
application. They provided powerful features to inspect the code, troubleshoot issues, and refine
the app’s visual and functional aspects.
1. Console
a. Usage in the Application: The Console was used to verify that functions like handleDelete
were working as expected by logging task data and checking for any unexpected behavior.
15
b. For example, logging messages were added to confirm that tasks were being successfully
added or deleted.
2. Elements Panel (Inspector)
a. Usage in the Application: The Elements panel was used to inspect and modify styles for
components like TaskCard and TaskForm, ensuring they were displayed correctly.
b. Temporary CSS adjustments were made to test colors, spacing, and layouts, which helped
refine the appearance of each component before finalizing the styles in the code.
3. Network Panel
a. Usage in the Application: Although this app is mostly local, the Network panel was helpful
when checking how Local Storage loads task data on startup.
By observing any loading times or network-related messages, it was easy to confirm data was
accessed efficiently without unnecessary delays.
4. Sources Panel
a. Usage in the Application: The Sources panel was used to set breakpoints and examine how
the state of tasks changes during operations like adding or deleting tasks.
It allowed step-by-step debugging, helping to ensure that each component, like TaskColumn
and TaskCard, was displaying data as expected.
5. Application Panel
a. Usage in the Application: The Application panel was used to inspect Local Storage and
verify that tasks were saved and loaded correctly.
By viewing the stored task data, it was easy to confirm that each change made in the app (like
adding or deleting tasks) was accurately reflected in Local Storage, ensuring data persistence
across sessions.
16
CHAPTER – 04
SYSTEM DESIGN
4.1 Architecture Overview :
My task-tracking application is built with a modular, component-based architecture, typical of React
applications. It relies on core components for task creation, management, and display, with Local
Storage integration for data persistence. Here’s an overview:
1. Frontend Structure
a. App Component: Acts as the root component, orchestrating the data flow and state between
child components.
b. TaskForm Component: Handles task input, allowing users to create new tasks.
c. TaskColumn Component: Manages the categorization and display of tasks, grouped by their
status.
d. TaskCard Component: Displays individual task details within each TaskColumn.
e. Tag Component: Represents task tags, providing visual context (with colors) for different
task types.
2. State Management and Local Storage
a. State Management: Manages real-time updates and user interactions through useState and
useEffect hooks.
b. Local Storage Integration: Stores task data persistently, ensuring tasks are retained across
browser sessions.
3. Data Flow
Task data flows from TaskForm (creation) to TaskColumn and TaskCard (display and
deletion), with each action reflected in both the local state and Local Storage.
The main App component manages the state, with task data flowing through components as
props.
For example, when a task is created in TaskForm, it updates the state in App, and
TaskColumn and TaskCard reflect the changes.
17
2. Reusability
Components like TaskCard and Tag are designed for reuse, displaying tasks consistently and
assigning color-coded tags based on task categories.
18
Fig.4.1 : Component Interaction Diagram
In this task-tracking application, data flow and state management play key roles in keeping the
interface responsive and organized. Here’s how they work within the app:
19
a. To maintain tasks even after the app is closed, task data is stored in Local Storage, allowing
persistence across sessions.
b. Example: Each time a task is added or modified, the app updates Local Storage, so when
reopened, the app retrieves the data and re-populates the state.
Local Storage is used in this application to ensure that tasks persist even when the app is closed or
refreshed, providing a continuous user experience. Here’s how it’s implemented:
Fig.4.2 :User Interaction Flow in Task-Tracking Application with Local Storage Integration
a. Typography Choices
Selected fonts and sizes maintain readability and a professional look across all components,
helping users easily read and interact with the app.
b. Spacing and Alignment
Uniform spacing around elements in each component helps prevent clutter and makes the
interface look clean and well-organized.
Each button (e.g., add, edit, delete) and task card is styled similarly throughout the app,
promoting a sense of continuity and improving user understanding of actions.
Light shadows and borders on TaskCard components add depth, making tasks stand out
without overwhelming the user visually.
a. Color Psychology
Thoughtful color choices are made for different tags (e.g., blue for “In Progress,” green for
“Completed”) to intuitively indicate status.
b. Accessibility in Color Choices
Colors are chosen with contrast in mind to ensure readability and accessibility for users with
visual impairments, enhancing inclusivity.
3. Responsive Layout
c. Clickable Feedback
Buttons also change appearance slightly when clicked, confirming interactions and giving the
app a responsive feel.
Button colors and sizes are chosen with accessibility in mind, ensuring ease of use across a
range of devices and user needs.
CHAPTER – 05
22
IMPLEMENTATION OF TASK – TRACKING
APPLICATION
5.1 Application Overview :
This task-tracking application is designed to help users effectively manage and organize tasks
through a simple, intuitive interface.
Each feature is crafted to ensure ease of use, quick task tracking, and reliable data storage for user
convenience. Here’s a breakdown of the application's core features and design principles:
23
Accessibility features, such as high-contrast colors for tags and intuitive button placement,
help users interact effortlessly with the app, regardless of their device.
The app is responsive and designed to work on both desktop and mobile, giving users the
flexibility to manage tasks wherever they are.
6. Error Handling and User Feedback
The application includes basic error handling to notify users of any issues (e.g., missing task
information) before submission.
User feedback elements, such as hover effects and color changes on buttons, improve
interactivity and make it clear when actions are being performed.
For this task-tracking application, a carefully set up development environment was essential to
streamline coding, testing, and deployment.
25
The component architecture of the task-tracking application is built around several functional
components that manage different aspects of the application.
The application is divided into smaller, reusable components, each handling a specific aspect of the
task management process.
2. Main Component:
Purpose: It serves as a container that lays out the overall structure of the application. It
includes the TaskForm for creating new tasks and the TaskColumn for displaying tasks.
Implementation: The Main component receives the task data from App.jsx and passes it
down to TaskColumn for displaying.
It ensures the proper layout by managing how tasks are organized and displayed within
columns based on their status.
26
Fig.5.4 : Implementation of main.jsx
3. TaskForm Component:
Purpose: This component provides the user interface for adding new tasks.
Implementation: It includes input fields for the task’s title, description, and other details.
4. TaskColumn Component:
27
Purpose: The TaskColumn groups tasks by their status (e.g., Pending, In Progress,
Completed) and handles filtering.
Implementation: The TaskColumn component receives the task data from App.jsx and uses
filtering logic to display tasks based on their current status.
5. TaskCard Component:
Purpose: The TaskCard displays individual task details and allows the user to
interact with the task (e.g., delete or change its status).
Implementation: Each TaskCard receives a task as a prop and displays its
information.
28
5.4 State Management And Data Flow :
In the Implementation Phase, State Management and Data Flow are fundamental to ensuring the
smooth operation and interactivity of the task-tracking application.
Proper management of the application’s state and a clear, predictable data flow are essential for
maintaining performance, scalability, and the overall user experience.
1.State Management
State management refers to how data (tasks in this case) is stored, updated, and shared between
various components in the application.
b. State Updates:
State updates in the application occur when the user interacts with the UI (e.g., adding a new
task, deleting a task, or updating a task's status).
App.jsx contains functions like addTask, deleteTask, and updateTask that modify the task
state.
These functions are passed down to child components as props and are triggered by events
(e.g., form submission, button click).
After each update, React automatically re-renders the components that rely on the modified
state, ensuring the UI reflects the most recent changes.
c. Local State in Child Components:
Some components may manage their own local state to handle temporary values.
For example, TaskForm may store the form inputs in local state to track user input before
submitting.
2. Data Flow
Data flow in the application follows a unidirectional (one-way) pattern, where the flow of data
moves from parent components to child components and updates propagate through function
calls.
1. Task Creation:
User enters task details in TaskForm and clicks "Add Task."
TaskForm triggers the addTask function from App.jsx, which updates the main task state.
App.jsx passes the updated task list down to TaskColumn for display.
2. Task Deletion:
User clicks "Delete" on a TaskCard.
TaskCard calls the deleteTask function from TaskColumn, which updates the state in App.jsx.
App.jsx updates the task list and re-renders the UI with the updated data.
3. Task Status Update:
User changes the status of a task in TaskCard (e.g., from Pending to In Progress).
30
TaskCard triggers the updateTask function, which modifies the task's status in App.jsx.
The updated task list is passed back down to TaskColumn for re-rendering.
In the Implementation Phase, Event Handling and User Interaction are essential aspects of the
task-tracking application, as they directly influence how users interact with the system and trigger
various actions such as adding, deleting, or updating tasks.
Event handling is crucial for enabling interaction within the app, allowing users to trigger specific
actions like submitting forms, clicking buttons, and changing task statuses.
In React, event handling is typically done by defining event handlers that are passed to the relevant
components as props.
Event: When the user submits the task creation form, the onSubmit event is triggered.
Implementation:
a. The TaskForm component listens for the submit event using the onSubmit attribute on the
form element.
b. When the form is submitted, the event handler function (e.g., handleSubmit) is called.
c. handleSubmit collects the user input from the form, prevents the default form submission
behavior (using event.preventDefault()), and passes the task data back to App.jsx via a
function prop (e.g., addTask).
d. User Interaction: The user enters task details (like name, description, and due date) and
clicks the "Add Task" button. This triggers the form submission event.
Event: When the user clicks the "Delete" button on a TaskCard, the onClick event is
triggered.
Implementation:
a. Each TaskCard has a delete button with an associated event handler, typically an onClick
function.
b. When the delete button is clicked, the event handler (e.g., handleDelete) is called.
31
c. The handleDelete function updates the state in App.jsx by removing the task from the task
list.
d. The updated task list is then passed down to TaskColumn to re-render the tasks without the
deleted one.
User Interaction: The user clicks on the "Delete" button next to a task. This action triggers
the deletion event, removing the task from the application.
Event: When the user clicks to change the status of a task (e.g., from "Pending" to "In
Progress"), the onClick or onChange event is triggered.
Implementation:
a. Each TaskCard displays a button or toggle for changing the task's status.
b. When the user interacts with this button (e.g., clicking a "Mark as Done" button), the onClick
event triggers an event handler (e.g., handleStatusChange).
c. The event handler updates the task's status in the main state in App.jsx.
d. The updated task list, with the new status, is passed down to TaskColumn, which re-renders
the task list with the updated task status.
User Interaction: The user clicks a button to change the task's status, which triggers an event
that updates the status and re-renders the tasks.
Event: When the user clicks on a "Edit" button to modify the task details, the onClick event is
triggered.
Implementation:
a. TaskCard has an edit button that triggers the handleEdit function when clicked.
b. The handleEdit function typically opens an input form pre-filled with the task’s existing
details, allowing the user to modify them.
c. Once the user submits the form with updated information, the event handler updates the task
in the state (via a function passed down from App.jsx).
User Interaction: The user clicks the "Edit" button on a task, which triggers the edit event.
After editing the details, the task is updated in the application.
a. The user interacts with the TaskForm by entering task details (e.g., title, description,
deadline).
b. After filling out the form, the user clicks the "Add Task" button.
c. This triggers the form submission event, and the new task data is passed to App.jsx to update
the state and re-render the application.
2. Deleting a Task:
b. This triggers the deletion event, calling the event handler (e.g., handleDelete), which removes
the task from the main task list in App.jsx.
a. The user clicks a button (e.g., "Mark as Done") to update the status of a task.
b. This triggers the event handler that updates the task’s status in App.jsx.
c. The updated status is passed down to TaskColumn and TaskCard, and the UI reflects the
new status.
4. Editing a Task:
b. The edit form appears, allowing the user to change the task details.
c. After the user updates the task, the changes are passed to App.jsx to update the task state and
re-render the UI.
In the Implementation Phase, Input Validation and User Feedback are crucial to ensure that the
task-tracking application behaves predictably, maintains data integrity, and provides a smooth and
engaging user experience.
Input Validation
Input validation is the process of verifying that user inputs meet the required criteria before being
processed.
33
In the task-tracking app, input validation is used to ensure that tasks are created, updated, or modified
correctly. The validation is primarily implemented in the TaskForm component, where users enter
task details.
Validation Criteria:
o Description: Optional, but if provided, should not exceed a certain character limit (e.g., 500
characters).
Implementation:
o When the user submits the task creation form, an event handler (e.g., handleSubmit) is triggered.
o Inside this function, checks are performed to ensure that the inputs meet the validation criteria.
o If validation fails, an error message is displayed, and the task is not added to the state.
Example:
34
2. Task Edit Validation
Validation Criteria:
o Ensure that edited task data, such as the task name and description, meet the same criteria as
when creating a new task.
Implementation:
o When a user updates a task, the new values are validated before saving the changes.
o If the data is invalid, an error message is displayed, preventing the task from being updated until
valid data is provided.
If validation fails, error messages should be displayed to inform the user about what went wrong
and guide them in correcting the issue.
Implementation: Error messages are conditionally rendered based on the validation outcome.
For example:
6. Notification System
A notification system can be used to show temporary success or error messages. These
notifications should automatically disappear after a set duration to avoid cluttering the
interface.
Implementation: Implement notifications that appear at the top of the screen when an action
is successfully completed or when an error occurs.
For Example :
35
7. Visual Cues for Invalid Inputs
When an invalid input is detected (e.g., empty fields or incorrect formats), visually highlight
the invalid fields by changing their border color or displaying an error icon.
Implementation: Use CSS to apply a red border or error icon next to invalid inputs to provide
immediate feedback.
In the Implementation Phase, Design and UI/UX Considerations play a pivotal role in ensuring
that the task-tracking application is not only functional but also easy to use and visually appealing.
1. User-Centered Design
Goal: The application should be designed with the user’s needs and behaviors in mind.
By understanding the target audience (e.g., professionals, students, or general users managing
personal tasks), the UI can be tailored to provide the most relevant features in an intuitive manner.
Implementation:
o Conduct user research to gather insights into the needs and preferences of your target audience.
o Develop user personas to represent typical users and their goals, behaviors, and challenges when
managing tasks.
o Create wireframes and mockups based on these personas to ensure the application’s design
addresses the users' needs.
Goal: The interface should be easy to navigate, with clear and simple layouts that do not
overwhelm users with too much information at once.
Implementation:
o Use a clean layout that prioritizes essential actions (e.g., adding, editing, and deleting tasks)
and presents them in a logical order.
o Provide clear call-to-action (CTA) buttons for tasks like "Add Task," "Edit," and "Delete,"
which should be prominently visible and easy to access.
o Ensure that the most frequently used features are easily accessible, while less critical features
are tucked away in menus or additional tabs.
36
3. Consistency
Goal: Consistent design across the application ensures that users are not confused by
unexpected changes in appearance or functionality.
Implementation:
o Use consistent colors, fonts, and UI elements (buttons, forms, icons) throughout the
application.
o For example, the primary action button (e.g., "Add Task") should always be the same color
across screens.
o Ensure that task lists, task status indicators, and action buttons are consistently displayed
across different views (e.g., TaskColumn, TaskCard, etc.).
4. Visual Hierarchy
Goal: The UI should clearly guide the user’s attention to the most important elements or
actions in the application.
Implementation:
o Use typography (font size, weight, and color) to differentiate between headings, subheadings,
and task descriptions.
o Use contrast to highlight critical actions, such as "Add Task" buttons or task status indicators,
making them stand out from less important elements.
o Create a visual flow that guides the user through their task management process.
o For instance, the form to add a task should be at the top of the page, followed by the task list,
and then options for task editing or deletion.
5. Responsive Design
Goal: The application should be fully functional and user-friendly across a range of devices,
from desktops to tablets and smartphones.
Implementation:
37
o Use media queries to adjust the layout for different screen sizes, ensuring that the
application’s interface looks good and remains usable on both large and small screens.
o Prioritize mobile-first design, ensuring that key actions (e.g., adding tasks, task editing) are
easily accessible on smaller screens.
o For example, a floating action button for adding tasks can be added on mobile to enhance
usability.
o Optimize task cards and form fields for mobile use, ensuring that users can easily interact with
elements like checkboxes, buttons, and input fields without unnecessary scrolling or zooming.
Goal: The app should help users quickly understand and organize their tasks.
Implementation:
o Task Columns: Use columns to categorize tasks by status (e.g., “To Do,” “In Progress,” and
“Completed”).
o This allows users to quickly track task progress and manage their work effectively.
o Tagging and Color Coding: Implement task tags with color coding to help users categorize
tasks by priority, type, or project.
o Task Cards: Present each task as a TaskCard with key information (e.g., task name, due
date, status, and tags).
o Task cards should be interactive, allowing users to edit or delete tasks with a click or tap.
o Drag-and-Drop: Allow users to drag and drop tasks between columns to change their status.
7. Notifications
Goal: Provide clear feedback to users after they perform any action, ensuring they understand
whether it was successful or if something went wrong.
Implementation:
o Use toast notifications or modal popups to alert users about the success or failure of their
actions, such as "Task Added Successfully" or "Error: Task Name Cannot Be Empty."
Implementation:
o Keep the user interface clean by avoiding unnecessary elements or distractions. For example,
remove any superfluous features or information that does not directly contribute to task
management.
o Make sure buttons and icons are clearly labeled (e.g., “Add Task,” “Delete Task”) to
eliminate any ambiguity.
o Use tooltips or brief instructions to help users understand the functionality of certain features
without overloading them with information.
39
CHAPTER – 06
In the task-tracking application, manual testing was used to ensure that all features work as
intended from the user’s perspective.
It helped identify issues in the user interface and interactions that automated tests might not catch.
Objective: Ensure that users can add tasks correctly and that the form behaves as expected.
Application:
o TaskForm Component: Tested the task creation form by entering both valid and invalid task
names.
o Validated that the form shows appropriate error messages when the task name is empty or too
long.
o Validation Logic: Confirmed that the "Add Task" button is only enabled when the task name
meets the required conditions.
Objective: Confirm that tasks can be deleted smoothly and without errors.
Application:
o TaskCard Component: Clicked the "Delete" button on various tasks to ensure the tasks were
removed from the task list and no errors were triggered.
o State Consistency: Checked that the deleted task was removed both visually and from the
internal state without any glitches.
Objective: Verify that users can edit tasks and update their statuses (e.g., move between "To
Do", "In Progress", and "Completed").
Application:
40
o TaskCard Component: Manually edited task details and changed task statuses by interacting
with the available buttons.
o Real-time Updates: Ensured that any changes to task details or status were reflected
immediately in the user interface without requiring a page reload.
Objective: Ensure a smooth and intuitive user experience throughout the task management
process.
Application:
o Task Form to Task List: Tested the process of adding a task and observing its instant
appearance in the task list. Verified that editing and deleting tasks was seamless and intuitive.
o Task Transitions: Checked the fluidity of moving tasks between different columns, ensuring
that the user experience remained smooth throughout.
Objective: Verify that the app functions correctly across different screen sizes, ensuring
accessibility and usability.
Application:
o General Layout: Tested the layout across various devices, from mobile phones to desktops,
to ensure task cards and columns remained organized and readable on different screen sizes.
o Usability on Small Screens: Checked the size of clickable elements (like buttons) and made
sure they were appropriately sized for easy navigation on smaller devices.
Objective: Ensure the application handles unexpected inputs or actions without breaking or
crashing.
Application:
o Invalid Inputs: Tested scenarios where users tried to add tasks with missing or invalid data,
like blank task names or special characters, and verified that the app handled such cases
gracefully by showing appropriate error messages.
o Task Deletion Repeated Testing: Repeatedly deleted tasks and ensured that the UI and
internal state stayed synchronized and updated correctly after each deletion.
41
6.2 Debugging :
Debugging played a vital role in ensuring the proper functionality of the task-tracking application.
Throughout the development process, I faced several challenges and used debugging techniques to
resolve them and improve the application’s performance.
Problem: The handleDelete function was not working as expected. The task was not being
removed from the task list even after clicking the delete button.
Debugging Approach:
o I checked the state update in the handleDelete function to ensure the task array was properly
updated after the task was deleted.
o I used console.log to print out the task list before and after deletion to track if the array was
being modified correctly.
Solution:
o I identified that the filtering logic was incorrect, so I corrected it to properly filter out the
deleted task and update the state.
Problem: Tasks were not updating their status when moved between columns (e.g., "To Do"
to "In Progress").
Debugging Approach:
o I used console.log to verify that the status was being changed in the state when a task was
clicked.
o I also inspected the component’s re-rendering behavior to see if the updated state was being
reflected in the UI.
Solution:
o After reviewing the code, I found that the state update was not triggering a re-render in the
component.
o I fixed the state update by ensuring the correct component re-rendered with the updated task
status.
42
3. Task Form Validation
Problem: The task form was allowing users to submit empty tasks or tasks with invalid data.
Debugging Approach:
o I tested the form submission with various inputs and used console.log to check if the
validation function was being triggered.
o I also verified that the “Add Task” button was enabled only when the input was valid.
Solution:
Problem: The layout of the task list was breaking on smaller screen sizes, causing task cards
to overlap.
Debugging Approach:
o I used browser developer tools to simulate different screen sizes and checked the CSS
properties applied to the task cards.
o I inspected the layout using console.log to check if any CSS properties were not being applied
correctly on smaller screens.
Solution:
o I identified a missing media query in the CSS for small screen sizes and added the necessary
styles to ensure the layout remained intact.
Problem: The application was running slowly when displaying a large number of tasks,
causing a delay in rendering.
Debugging Approach:
o I used performance profiling tools in the browser to analyze the rendering performance.
43
o I checked the React components to see if there were unnecessary re-renders or excessive
computation in the render cycle.
In the task-tracking application, automated testing was not implemented due to the focus on rapid
development and the scope of the project.
While automated tests are beneficial for larger-scale projects, the decision to proceed without them
was made for the following reasons:
Reason: The task-tracking application is a relatively small project, and it was developed with
fewer complex features. Since the application did not include extensive integrations or third-party
services, manual testing was sufficient for ensuring core functionality.
Impact: With manual testing, I was able to quickly test core features like task creation, task
deletion, and status updates without the need for complex automated test setups.
Reason: Due to time limitations, I focused on writing functional code and testing manually.
Automated tests often require additional time for writing, setting up test cases, and maintaining
them throughout the development process.
Impact: I prioritized completing the core features and conducting manual tests to make sure
everything worked as expected, allowing me to stay within the project deadlines.
Reason: As this project is part of my ongoing learning in web development, I did not have much
experience with setting up automated testing frameworks for React applications at the time.
Impact: While I recognized the value of automated testing for future projects, I focused on
improving my understanding of core development tasks, like task management and UI
responsiveness.
Reason: The features of the application (task creation, deletion, status updates) are simple and do
not involve complex data flows or dependencies. Manual testing was effective in ensuring these
features worked correctly.
44
Impact: I could efficiently validate that tasks were added, deleted, and updated as intended, using
basic manual tests without the need for automation.
Reason: The testing required for this project, such as ensuring the app works across different
screen sizes and devices, was more suited for manual testing.
Impact: I tested the responsiveness and user interactions directly on real devices and different
browsers, which would have been time-consuming to replicate through automated testing.
45
CONCLUSION AND FUTURE WORK
7.1 Conclusion :
The task-tracking application has been successfully developed and implemented, addressing
the need for an efficient and intuitive way to manage tasks.
Throughout the development process, I focused on creating a simple, user-friendly interface
that allows users to add, edit, update, and delete tasks, as well as manage their status (To Do,
In Progress, and Completed).
Key features of the app, including task creation, deletion, and task status updates, were
thoroughly tested to ensure smooth functionality.
Although the application does not include advanced features like automated testing or
complex back-end integrations, it meets the core requirements of a task management system.
The application’s user interface was designed with responsiveness in mind, ensuring it works
seamlessly across different screen sizes, from mobile phones to desktop devices.
The app also provides clear feedback to users, improving the overall experience.
In conclusion, the project has met its objectives and was a great learning opportunity for me to
implement core concepts in React, state management, and UI/UX design.
While the task-tracking app is functional in its current state, there are several areas where the app can
be enhanced in the future:
1. Automated Testing: Although manual testing was sufficient for the current version,
implementing automated tests for critical functions such as task creation, deletion, and status
updates would improve the efficiency and reliability of future development and maintenance.
2. User Authentication and Authorization: In the future, user authentication can be added,
allowing users to register and log in to their accounts.
This would enable them to track tasks across different devices and maintain personalized task
lists.
46
3. Task Reminders and Notifications: Adding a feature to set reminders for tasks would
improve the usability of the app. Users could receive notifications for upcoming deadlines or
pending tasks, helping them stay organized.
4. Data Persistence: Currently, the app does not save tasks after the page is refreshed. A
backend system (e.g., Node.js with MongoDB) can be integrated to store tasks persistently,
ensuring that users' tasks are saved and retrieved from a database.
5. Advanced Features: Future updates could include features such as task prioritization, tags for
categorizing tasks, or even team collaboration options where multiple users can share and
work on tasks together.
By incorporating these future improvements, the task-tracking app can evolve into a more robust and
scalable tool for personal and team task management.
47
APPLICATION WALKTHROUGH
The following screenshots showcase the final version of the task-tracking application,
highlighting its core features and user interface design.
Each screen illustrates the essential functions available to users, including task creation,
editing, deletion, and status updates.
These visuals offer an overview of the application’s layout, functionality, and responsiveness
across different devices, providing a complete look at the app in action.
48
REFERENCES
1. Wieruch, R. (2021). The road to React: Your journey to master plain yet pragmatic React.js. Self-
published.
2. Mozilla Developer Network. (2024). React documentation. Retrieved from
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises
3. Meta Platforms, Inc. (2024). React documentation. Retrieved from https://react.dev/
4. Figma, Inc. (2023). A guide to building intuitive user interfaces. Retrieved from
https://www.figma.com/blog
5. Stack Overflow. (n.d.). Technical Q&A and solutions for React development. Retrieved from
https://stackoverflow.com/
6. Cohn, M. (2009). Succeeding with agile: Software development using Scrum. Addison-Wesley
Professional.
7. GitHub. (2024). GitHub guides on project management and version control. Retrieved from
https://docs.github.com/
8. World Wide Web Consortium (W3C). (2023). Web Content Accessibility Guidelines (WCAG)
overview. Retrieved from https://www.w3.org/WAI/standards-guidelines/wcag/
49
50