FullStack with Node.
js Practical Lab
Project Tasks
Instructions for the Exam
● Duration: 2 hours
● Tech Stack: Use the MERN stack (MongoDB, Express, React, Node.js). You may use
EJS for server-side rendering if preferred.
● Code Submission:
○ Start preparing your submission zip file 15 minutes before the end of the exam.
○ The zip file should include all relevant code files and folders.
● Submission Form:
○ A Google Form will be shared 30 minutes before the exam ends.
○ Use this form to upload your zip file and submit your final responses.
○ Only college email addresses are allowed for form submission.
○ You are to submit your set number as well, your set number will be calculated on
the basis of the following formula: (universityRollNumber)%4 [Same as your
midsem evaluation]
● Important: Ensure your code is well-organized and functional. Late or incorrectly
submitted files may not be evaluated.
SET 1
Create a web application that allows users to participate in public polls. Registered users can
create polls with multiple options and cast a single vote per poll. Once a vote is cast, it cannot
be edited, and results are displayed immediately.
Key Functionalities:
● User registration and login using JWT-based authentication.
● Authenticated users may create polls consisting of a title and 2 to 5 options.
● Users are limited to one vote per poll.
● Poll results are publicly accessible and visible immediately after voting.
API Routes:
● POST /api/auth/register – Register a new user.
● POST /api/auth/login – Log in and receive a token.
● POST /api/polls – Create a new poll (authentication required).
● GET /api/polls – Retrieve a list of all polls with basic information.
● GET /api/polls/:id – View a specific poll along with voting results.
● POST /api/polls/:id/vote – Submit a vote to a poll (authentication required).
SET 2
Create a web application that enables users to create and maintain a personal profile
showcasing their technical skills. Users can browse and search for other profiles based on
specific skills.
Key Functionalities:
● Registration and login functionality using JWT.
● Authenticated users can create and edit their own profile.
● Public users may search and filter profiles by skills.
API Routes:
● POST /api/auth/register – Register a new user.
● POST /api/auth/login – Log in and receive a token.
● POST /api/profiles – Create or update a user profile (authentication required).
● GET /api/profiles – View all profiles or filter using query parameters such as ?skill=node.
● GET /api/profiles/:id – View the profile of a specific user.
SET 3
Create a private mood tracking application for logging daily emotional states. Users select a
mood from predefined options and may add optional notes. Entries are only visible to the user
who created them.
Key Functionalities:
● Secure login system with route protection.
● Ability for users to log, update, view, and delete daily mood entries.
● Entries are shown in reverse chronological order.
API Routes:
● POST /api/auth/register – Register a new user.
● POST /api/auth/login – Log in and receive a token.
● POST /api/moods – Add a mood entry for the current day.
● GET /api/moods – Retrieve all mood entries for the logged-in user.
● PATCH /api/moods/:id – Edit an existing mood entry.
● DELETE /api/moods/:id – Remove a mood entry.
SET 4
Create a movie-tracking application that allows users to maintain a personal watchlist. Users
can add movies, categorize them as watched or unwatched, and filter the list by genre or watch
status.
Key Functionalities:
● User authentication with JWT.
● Ability to add movies with title, genre, year, and watch status.
● Filtering based on genre and watched status.
API Routes:
● POST /api/auth/register – Register a new user.
● POST /api/auth/login – Log in and receive a token.
● POST /api/movies – Add a new movie to the user's list (authentication required).
● GET /api/movies – View list of movies with optional filters such as ?watched=true or
?genre=Drama.
● PATCH /api/movies/:id – Update a movie's watched status or details.
● DELETE /api/movies/:id – Delete a movie from the user's list.