Certification projects are done for Responsive Web Design Certification on freeCodeCamp.
In order to receive the certification, I had to complete all the projects listed below (to fulfil the given user stories and pass all the tests). I gave a personal style to each project.
- Survey Form
- Tribute Page
- Technical Documentation Page
- Product Landing Page
- Personal Portfolio Webpage
Objective: Build an app that is functionally similar to https://survey-form.freecodecamp.rocks
User Stories:
- You should have a page title in an
h1element with anidoftitle. - You should have a short explanation in a
pelement with anidofdescription. - You should have a
formelement with anidofsurvey-form. - Inside the form element, you are required to enter your name in an
inputfield that has anidofnameand atypeoftext. - Inside the form element, you are required to enter your email in an
inputfield that has anidofemail. - If you enter an email that is not formatted correctly, you will see an HTML5 validation error.
- Inside the form, you can enter a number in an
inputfield that has anidofnumber. - The number input should not accept non-numbers, either by preventing you from typing them or by showing an HTML5 validation error (depending on your browser).
- If you enter numbers outside the range of the number input, which are defined by the
minandmaxattributes, you will see an HTML5 validation error. - For the name, email, and number input fields, you can see corresponding
labelelements in the form, that describe the purpose of each field with the following ids:id="name-label",id="email-label", andid="number-label". - For the name, email, and number input fields, you can see placeholder text that gives a description or instructions for each field.
- Inside the form element, you should have a
selectdropdown element with anidofdropdownand at least two options to choose from. - Inside the form element, you can select an option from a group of at least two radio buttons that are grouped using the
nameattribute. - Inside the form element, you can select several fields from a series of checkboxes, each of which must have a
valueattribute. - Inside the form element, you are presented with a
textareafor additional comments. - Inside the form element, you are presented with a button with
idofsubmitto submit all the inputs.
Objective: Build an app that is functionally similar to https://tribute-page.freecodecamp.rocks
User Stories:
- Your tribute page should have a
mainelement with a correspondingidofmain, which contains all other elements - You should see an element with an
idoftitle, which contains a string (i.e. text), that describes the subject of the tribute page (e.g. "Dr. Norman Borlaug") - You should see either a
figureor adivelement with anidofimg-div - Within the
#img-divelement, you should see animgelement with a correspondingid="image" - Within the
#img-divelement, you should see an element with a correspondingid="img-caption"that contains textual content describing the image shown in#img-div - You should see an element with a corresponding
id="tribute-info", which contains textual content describing the subject of the tribute page - You should see an
aelement with a correspondingid="tribute-link", which links to an outside site, that contains additional information about the subject of the tribute page. HINT: You must give your element an attribute oftargetand set it to_blankin order for your link to open in a new tab - Your
#imageshould usemax-widthandheightproperties to resize responsively, relative to the width of its parent element, without exceeding its original size - Your
imgelement should be centered within its parent element
Objective: Build an app that is functionally similar to https://technical-documentation-page.freecodecamp.rocks
User Stories:
- You can see a
mainelement with a correspondingid="main-doc", which contains the page`s main content (technical documentation) - Within the
#main-docelement, you can see severalsectionelements, each with a class ofmain-section. There should be a minimum of five - The first element within each
.main-sectionshould be aheaderelement, which contains text that describes the topic of that section. - Each
sectionelement with the class ofmain-sectionshould also have anidthat corresponds with the text of each header contained within it. Any spaces should be replaced with underscores (e.g. The section that contains the header "JavaScript and Java" should have a correspondingid="JavaScript_and_Java") - The
.main-sectionelements should contain at least tenpelements total (not each) - The
.main-sectionelements should contain at least fivecodeelements total (not each) - The
.main-sectionelements should contain at least fiveliitems total (not each) - You can see a
navelement with a correspondingid="navbar" - The
navbarelement should contain oneheaderelement which contains text that describes the topic of the technical documentation - Additionally, the navbar should contain link (
a) elements with the class ofnav-link. There should be one for every element with the classmain-section - The
headerelement in the#navbarmust come before any link (a) elements in the navbar - Each element with the class of
nav-linkshould contain text that corresponds to theheadertext within each section (e.g. if you have a "Hello world" section/header, your navbar should have an element which contains the text "Hello world") - When you click on a
navbarelement, the page should navigate to the corresponding section of the#main-docelement (e.g. If you click on a.nav-linkelement that contains the text "Hello world", the page navigates to asectionelement with thatid, and contains the corresponding header) - On regular sized devices (laptops, desktops), the element with
id="navbar"should be shown on the left side of the screen and should always be visible to the user Your technical documentation should use at least one media query