Projects
Projects
Description: Create a "Contact Us" form that includes input fields for name,
email, phone number, and a message. The form should have a submit button,
and the fields should have basic validation, such as ensuring the name, email,
and phone number fields are required before submission. Use appropriate
input types and attributes for each field to ensure the form is user-friendly and
accessible.
Project Exercises 1
Skills Covered: CSS styling, applying selectors, text formatting, using
padding/margins, and understanding the box model for layout control.
Description: Design a responsive photo gallery using CSS Grid. The gallery
should display images of varying sizes in a grid layout, where the number of
columns adjusts based on the screen size. Use media queries to ensure the
layout is responsive and looks great on different devices, such as desktops,
Project Exercises 2
tablets, and mobiles. The gallery should adapt to different screen widths,
adjusting the grid to display images in an optimal manner.
Skills Covered: CSS Grid for layout management, media queries for
responsiveness, and creating flexible, adaptive designs.
Skills Covered: Basic JavaScript syntax, functions, event handling, and DOM
manipulation.
Description: Create a webpage with an unordered list and a button. When the
button is clicked, use JavaScript to dynamically add new list items to the
unordered list. The script should create a new list item element and append it
to the list each time the button is clicked. Style the list and button using CSS
for better presentation. Focus on DOM manipulation techniques like
document.createElement() and appendChild() to achieve this functionality.
Description: Build a simple calculator using HTML, CSS, and JavaScript. The
calculator should have buttons for numbers (0-9), basic operators (+, -, *, /),
and a display area to show the input and result. Use JavaScript to handle
Project Exercises 3
button clicks, perform calculations, and update the display. Style the calculator
using CSS for a clean, user-friendly interface.
Skills Covered: Creating forms and buttons, handling user input with
JavaScript, basic arithmetic operations, DOM manipulation, and CSS styling
for layout and responsiveness.
Description: Create a form that includes fields for name, email, and password.
Write a JavaScript function to validate the form before submission. Ensure that
the name field is not empty, the email follows a valid email format, and the
password meets certain criteria (e.g., minimum length). If the validation fails,
display an error message next to the respective field and prevent the form
from being submitted. Style the form and error messages for clarity.
Description: Build a simple to-do list application where users can add new
tasks, mark them as complete, and remove tasks. Use JavaScript event
listeners to handle interactions such as adding tasks when the user submits
input, toggling task completion when clicked, and deleting tasks when a
remove button is clicked. Dynamically update the DOM based on user actions
to reflect the changes in the to-do list.
Project Exercises 4
Description: Create a button that animates when clicked. Use CSS transitions
to make the button grow when hovered over and shrink when clicked,
providing smooth effects. Implement the animation using @keyframes and
transition properties such as transform and scale . Ensure the animation is
smooth and feels interactive for the user, with appropriate timing and easing
functions.
Project Exercises 5
Topic Covered: HTML, CSS
Description: Create a countdown timer that starts from a specified time (e.g.,
10 minutes) and counts down to zero. The timer should update every second
and display the remaining time on the webpage. When the timer reaches zero,
an alert should appear notifying the user that time is up. Use setInterval() to
update the timer every second and clearInterval() to stop the countdown when it
reaches zero.
Skills Covered: setInterval() for periodic updates, clearInterval() for stopping the
timer, time manipulation, and updating the DOM to display the countdown.
Project Exercises 6
Project Exercise 18: Custom Modal Popup
Topic Covered: HTML, CSS, JavaScript
Skills Covered: DOM manipulation for showing and hiding the modal, event
handling for button clicks, CSS positioning for the modal, and controlling
visibility with CSS and JavaScript.
Description: Build a to-do list application that allows users to add, delete, and
mark tasks as completed. The tasks should be stored in the browser's local
storage, ensuring they persist even after the page is reloaded. Use JavaScript
to handle the creation and deletion of tasks, update the DOM accordingly, and
utilize the localStorage API to save tasks. When the page is refreshed, the tasks
should be reloaded from local storage and displayed.
Description: Build a weather app that fetches real-time weather data from a
public API (such as OpenWeatherMap) and displays it in a user-friendly
interface. The app should allow users to search for the weather by city name.
Use the Fetch API to request data, handle the JSON response, and update the
Project Exercises 7
DOM with the weather information (e.g., temperature, humidity, and
conditions). Include error handling for invalid city names or network issues.
Skills Covered: Using the Fetch API to retrieve data, handling JSON
responses, DOM manipulation to display the weather data, and implementing
error handling for API requests.
Skills Covered: React setup, JSX syntax, Virtual DOM vs. Real DOM, NPM
package usage, React project folder structure.
Project Exercises 8
Description: Create a functional component that receives data via props and
displays it. Use the useState hook to manage and update the component's state
dynamically. Render a list of movies or items using the map() method and allow
for updates to the list through state changes. Create parameterized
components that accept dynamic props, and implement event handling for
interactions like button clicks or form submissions.
Skills Covered: State management with useState , passing data via props,
rendering dynamic lists with map() , parameterized components, event handling
in React.
Description: Build a memory game app using React where users match pairs
of cards. Start by creating a class component and implement the
componentDidMount method to initialize the game state. Then, refactor the
component into a functional one and use the useEffect hook to handle side
effects like shuffling the cards or checking for matches. Implement the
mounting, updating, and unmounting of components when the game starts,
and use useContext to share the game state (e.g., score, matched cards) across
the app.
Description: Build a contact card app where users can enter contact details
(name, phone number, email) into a form. When the user submits the form, the
contact is added to a list and displayed on the screen. Use useState to manage
the form inputs, useContext to share the list of contacts globally, and useEffect to
manage any side effects (e.g., resetting the form after submission). Optimize
Project Exercises 9
performance with useMemo and useCallback . Use useRef to focus on the name
input field when the form is loaded. Create a custom hook to manage form
validation or fetch data if required.
Description: Build a multi-page website with React Router that includes pages
for Register , Login , and Home . Set up react-router-dom to navigate between these
pages. Use a navigation bar ( Navbar ) for easy navigation. In the Register and
Login pages, create forms for users to input their data, and validate the form
data before submission. If the form data is correct, store the user's information
in localStorage for authentication and navigate to the Home page. Implement
basic form validation (e.g., check for valid email or password). Use useNavigate
for programmatic navigation and handle conditional rendering based on
whether the user is authenticated.
Skills Covered: React Router setup, <Link> for navigation, useNavigate for
programmatic navigation, form validation, localStorage for authentication,
creating and handling dynamic routes, conditional rendering based on
authentication state.
Project Exercises 10
Redux logic with Redux Toolkit for more efficient state management.
Additionally, implement async actions using Redux Thunk to handle time-
dependent actions (e.g., saving transaction details to an external database).
Description: Build a dynamic login form in React with fields for email and
password. Implement two-way data binding using React's useState for the form
inputs. Validate the inputs on the client side (e.g., check for a valid email
format and ensure the password is not empty). On form submission, use axios
or fetch to send the form data to a mock API endpoint. Display user feedback
such as loading, success, or error based on the response from the mock API.
Description: Build a movie discovery app using the free TMDB (The Movie
Database) API and focus on optimizing its performance. Implement code
splitting using React.lazy and Suspense to load components like movie lists and
details only when needed, improving the app's initial load time. Use React.memo
to prevent unnecessary re-renders of movie components. Cache expensive
calculations, such as movie search results, with useMemo and useCallback to
improve rendering efficiency. Use axios or fetch to make API calls to TMDB and
display movie details dynamically. Analyze the performance of the app using
Chrome DevTools and Lighthouse, and optimize the component structure for
faster rendering.
Project Exercises 11
Skills Covered:
Skills Covered:
Project Exercises 12
Project Exercise 31: Hello World Backend
Topic Covered: Running Node.js Script, CommonJS vs ES6 Modules.
Skills Covered:
Node.js fundamentals
Description: Build a Node.js script that explores the file system. The script
should read and display all files and subdirectories within a specified directory
using fs and path modules. Include the ability to handle errors (e.g., if the
directory doesn't exist).
Skills Covered:
Description: Create a basic HTTP server using Node.js. The server should
respond with "Hello, Browser!". Handle different routes and return appropriate
status codes (e.g., 404 for unknown routes).
Skills Covered:
Project Exercises 13
Building HTTP servers with Node.js
Description: Build an HTTP server in Node.js that handles routes for /home ,
/about , and a fallback route /404 . Serve appropriate HTML content for each
route and ensure the use of proper HTTP status codes (e.g., 200 for
successful routes and 404 for missing routes).
Skills Covered:
Skills Covered:
Project Exercises 14
Project Exercise 36: Serving Static Files
Topic Covered: Express.js Static Middleware.
Description: Use Express.js to serve a static folder containing assets like CSS,
images, and JavaScript files. Create a basic homepage that uses these assets
for styling and functionality. Ensure a proper folder structure for better
organization.
Skills Covered:
Skills Covered: EJS syntax, rendering dynamic data, working with forms.
Skills Covered:
Application-level middleware
Project Exercises 15
Project Exercise 39: File Upload System
Topic Covered: Handling Files with Multer .
Skills Covered:
with fields such as title, author, and genre. Connect your Node.js application to
the database and add functionality to insert and retrieve book data.
Description: Build a REST API for a library system using Express.js and
MongoDB. Implement endpoints to perform CRUD operations:
Project Exercises 16
Skills Covered: Designing and implementing RESTful APIs .
Skills Covered:
Description: Build a user authentication system where users can register and log
in. Securely hash passwords using bcrypt during registration, and validate
credentials during login. On successful login, generate and return a JWT
(JSON Web Token) to the user. Use the JWT for session management and
secure protected routes.
Skills Covered:
Project Exercises 17
Description: Create a real-time chat application that allows users to join
specific chat rooms and exchange messages with other participants.
Implement features like user connection / disconnection notifications and chat room
management.
Skills Covered:
Skills Covered:
Description: Create a utility class for handling and standardizing errors across
your API. Implement custom error-handling middleware in Express and use next()
to pass errors through the middleware chain.
Skills Covered:
Project Exercises 18
Building custom error classes.
Description: Create a web application where users upload their resumes, and
AI provides feedback for improvement. Use OpenAI APIs (or Gemini tools) for
generating suggestions.
Description: Build a tool that generates engaging captions for Instagram posts
based on an input image or text.
Description: Develop a chatbot for virtual interviews using LangChain . The bot
should ask questions based on a job profile and provide feedback on answers.
Description: Convert a simple website into a PWA . Add a manifest file and
implement a service worker for offline functionality .
Project Exercises 19
Project Exercise 51: Implement Lazy Loading and Code Splitting
Topic Covered: Performance Optimization in PWAs
Description: Create a PWA that lazy loads images and splits code into smaller
chunks for faster load times.
Description: Build a news app that caches articles and serves them offline.
Use strategies like Cache First and Network First .
Skills Covered:
Project Exercises 20
Writing YAML configuration for Kubernetes.
Skills Covered:
Skills Covered:
Project Exercises 21
Project Exercise 57: Build an API Gateway with Event-Driven
Communication
Topic Covered: API Gateway for Microservices & Redis Pub/Sub.
Skills Covered:
Event-driven architecture.
Skills Covered:
Project Exercises 22
Project Exercise 59: Deploy with DigitalOcean App Platform
Topic Covered: Simplified Deployment.
Skills Covered:
Project Exercises 23