Assignment Category 0001
Assignment Category 0001
Assignment Category 0001
Your website can not be related to your previous assignments' layout/ design or any
practice project shown in the course modules or our conceptual sessions.
Ex: You can't copy any design or similar functionality/ layout of
● Dragon news
● Espresso Emporium
● Genius Car
● Career Hub Website,
● Any conceptual session projects
● Projects shown in our course.
● Any of your previous assignments
In this assignment, you will build a web application for online group study with
friends(Every registered user is a friend of others). Users can create assignments,
complete them, and grade their friends' assignments.
Key Rules:
● Include a minimum of 18 notable GitHub commits on the client side
● Include a minimum of 8 notable GitHub commits on the server side
● Add a meaningful readme.md file with the name of your website and a live site
URL. Include a minimum of five bullet points to feature your website. Write your
selected category's name here.
● Make it responsive for all devices. You need to make it responsive for mobile,
tablet and desktop views.
● After reloading the page of a private route, the user should not be redirected to
the login page.
● Use the Environment variable to hide the Firebase config keys and Mongodb
credentials.
● Don’t use any Lorem ipsum text; you can not use the default alert to show any
error or success message.
Main requirements
***All the pages mentioned below are must have to be created***
1. Home page(public) -
will have a navbar, footer, a banner section, a feature section, and a FAQ section.
○ Navbar - will have a logo, assignments, login, register link before logged in and
will have a logo, assignments, create assignments, pending assignments and
user avatar after logged in. While click on the user avatar it will open a dropdown
and the dropdown will have my attempted assignments, logout button
○ Banner section - Design it based on the project theme
○ Feature section - will have few cards of feature
○ Faq - will have some frequently asked questions
○ Footer - will have copyright and relevant links
Every individual assignment will have a thumbnail, title, marks, assignment difficulty
level and a delete, update, and view assignment button. It's up to you how you will
display the cards of the assignment
○ Delete button functionality
● Only the user is able to delete an assignment who has created the
assignment. A user is not able to delete assignments which are created
by other users. Show a confirmation modal to confirm the delete action
while pressing the delete button.
Hint: While a user will create an assignment you have to store the user email
with the assignment data [followed Assignment creation requirement]. And
then while a user will be trying to delete an assignment you will compare the
current user email with the assignment
creator email. And if it matches then the assignment will be deleted.
● A successful message will be shown when the assignment will be deleted
successfully.
● An error message will be shown when a user tries to delete an
assignment which is not created by himself.
○ Update button functionality
● Any user can update any assignment.
● While a user will try to update an assignment the input fields of the
updated assignment form will be filled automatically with currently stored
data of the assignment. Users can change the input field data and can
update by clicking on the update assignment button.
● The assignment submission form will have input fields for PDF/doc link
submission and another text area for giving a quick note text.
● By clicking on the give mark button it will open a modal or will navigate to a
new page. A user will be able to see the pdf/docs link, and notes which the
examinee has submitted. There will be a marks input field, a feedback input field
and a submit button for giving marks.
● The user can give mark by clicking on the submit button after filling feedback,
and mark input fields.
6. Application will have a login and registration page(both are public pages). please
read the Authentication section in the functionalities
Challenge Requirements:
1. Validation :
● Add validation in the create assignment form.
● Add validation in all authentication-related forms.
2. JWT:
Upon login, you will create a JWT token and store it on the client side. Ensure
you have implemented jwt token and create a token and store it on the client-side
for both email/password-based authentication and social login. You must
implement JWT on your private routes.
3. Show a preview: Show a Preview of every pdf with iframe on the Submitted
assignment page. You can use any packages for this. You can also use
<iframe/>
4. Theme Customization
Add a Theme Toggling Button for changing themes from light to dark / dark to
light. By changing the theme, it will make the full system dark / light based on
user interaction.
What to submit:
1. Your Assignment ID/variant
2. Your client-side code GitHub repository
3. Your server-side code GitHub repository
4. Your live website link
Additional information:
1. You can host images anywhere.
2. You can use vanilla CSS or any library.
3. Try to host your site on Firebase (Netlify hosting will need some extra
configurations)
4. Host your server-side application on Vercel. If needed, you can host somewhere
else as well.
5. Make Sure you deploy server-side and client-side on the first day. If you have
any issues with hosting or GitHub push, please join the "Github and deploy"
related support session.
Some Guidelines:
1. Do not waste much time on the website idea. Just spend 15-20 minutes deciding,
find a sample website, and start working on it.
2. Do not waste much time finding the right image. You can always start with a
simple idea. Make the website and then add different images.
3. Don't look at the overall task list. Just take one task at a time and do it. Once it's
done, pick the next task. If you get stuck on a particular task, move on to the next
task.
4. Stay calm, think before coding, and work sequentially. You will make it.
5. Be strategic about the electricity issue.
6. use chat gpt to generate JSON data. You can use chatGPT for Other purposes
as well.