Professional Documents
Culture Documents
BY
UG19ICT1021
TECHNOLOGY (ICT)
FEBRUARY 2024
DECLARATION
I, (Salis Rabiu Khalid), hereby declare that this technical report is my own work and is
Foundation. It has not been presented before in any previous application for a Bachelor's
_________________________ _________________________
SALIS RABIU KHALID DATE
ii
CERTIFICATION
This is to certify that this technical report was authored by Salis Rabiu Khalid with the
HARUNA at the conclusion of his Student Industrial Work Experience Scheme program.
_________________________ _________________________
MR. UMAR SHAFIU HARUNA DATE
SIWES Supervisor
_________________________ _________________________
MR. LAWAN GARBA DATE
SIWES Coordinator
iii
DEDICATION
This work is dedicated to Almighty Allah, whose strength, preservation and infinite
mercy have granted me the grace and success throughout this endeavor and my studies.
Additionally, I dedicate this report to my beloved and unforgettable father, Late Alhaji Rabiu
Salisiu Maikwakwa: may his soul continue to rest in peace, Amin. My heartfelt dedication
Finally, I extend this dedication to my esteemed Principal and Mentor, Professor Isah
Aliyu Ibrahim Pantami CON, whose guidance and advice have been invaluable, all throughout
my academic journey. Words are not sufficient to express my gratitude, and I pray that Allah
iv
ACKNOWLEDGEMENT
I would like to extend my heartfelt gratitude to Almighty ALLAH for His unwavering
I express my sincere appreciation to the Chief Operating Officer (COO), staff, and
I would also like to acknowledge the dedicated efforts of the Departmental SIWES
coordinator and my supervisor, Mr. Umar Shafiu Haruna. His encouragement and immense
Finally, special appreciation and gratitude are extended to my Level Coordinator, Dr.
Muktar Danlami, for his valuable advice and motivation. I am also grateful to the entire family
of late Alhaji Rabiu Salisu Maikwakwa for their financial and moral support, motivational
this endeavor.
v
TABLE OF CONTENT
Title page - - - - - - - - - - i
Declaration - - - - - - - - - - ii
Certification - - - - - - - - - - iii
Dedication - - - - - - - - - - iv
Acknowledgment - - - - - - - - - v
Table of contents - - - - - - - - - vi
CHAPTER ONE
1.1.1 VISION - - - - - - - - 1
1.1.2 MISSION - - - - - - - - - 1
1.1.3 PHILOSOPHY - - - - - - - - 1
DEVELOPMENT - - - - - - - - - 2
vi
1.4.1 HACKATHON SUCCESS - - - - - - - 3
CHAPTER TWO
WORKING EXPERIENCE
vii
2.1.8 HEAD CONTENT - - - - - - - - 9
2.12.4 SELECTORS - - - - - - - - - 21
2.12.5 SPECIFICITY - - - - - - - - - 22
2.12.7 FUNCTIONS - - - - - - - - - 24
2.12.8 SHORTHANDS - - - - - - - - 26
viii
2.12.9 COMMENTS - - - - - - - - - 26
2.13.5 COMBINATORS - - - - - - 31
ix
2.18.1 TAILWIND CSS - - - - - - - - 45
2.28.5 SCOPING - - - - - - - - - 69
x
2.28.6 SCOPE: BLOCK - - - - - - - - 69
ANONYMOUS FUNCTIONS) - - - - - - - 77
2.29.10 CLOSURE - - - - - - - - - 79
2.29.11 HOISTING: - - - - - - - - - 79
2.31.9 USESTATE - - - - - - - - - 93
2.31.10 PROPS - - - - - - - - - 93
xi
2.33 REACT ICONS - - - - - - - - - 95
ENDEAVORS - - - - - - - - 97
CHAPTER THREE
CHAPTER FOUR
APPENDIX - - - - - - - - - - 103
REFERENCES - - - - - - - - - 105
xii
CHAPTER ONE
1.1.1 Vision
To be the world class citadel of learning that provides practical education directed
1.1.2 Mission
Provide educational training, research and community service for development taking
1.1.3 Philosophy
Promote and enhance the country's - old prominence of the North-West as both
cynosure and pacesetter in the fields of learning and scholarship not only in the West Africa,
1. To prepare students for the industrial work situation they are to meet after graduation.
3. To aid easy transition of knowledge from school to the world of work, thereby
4. To provide students with the opportunity to apply their knowledge in real work
1
5. To encourage and strengthen employer’s involvement in the entire educational process
1. It bridges the gap between the theoretical aspect learned in the class, and the practical
4. It provides room for further research by students for improving industrial techniques
and also finding solution to problems; hence, helps in boosting the economy.
5. It prepares students for business careers by merging analytical experience with self-
reliance.
nHub Foundation is born from the deep desire to create an equal opportunity for
growth and development regardless of gender, ethnic, religious background, through several
impact-driven initiatives.
By fostering a supportive environment for startups and implementing impactful training and
empowerment programs, the organization is playing a pivotal role in shaping the technological
development positions nHub Foundation as a key player in the ongoing technological growth
2
1.3.1 Overview of nHub Initiative
situated in Jos, Plateau state. The core objective is to offer robust support to startups and
The decision to establish nHub in Jos instead of metropolitan hubs like Abuja and
the high cost of living in those cities. Despite the security challenges posed by insurgency in
Jos, the founders perceive a unique opportunity for growth and innovation.
2015. The event witnessed the participation of thirty coders organized into nine teams from
Jos, Abuja, and Bauchi. The projects showcased spanned various platforms, including web,
Since its establishment in September 2015, nHub has achieved success in its training
programs, with over 20 interns progressing towards retention. Notably, the founders, who are
alumni of the University of Jos, are actively engaged in establishing a tech training partnership
3
1.5 COLLABORATION WITH GOVERNMENT
collaborative initiative between the Federal Government and Huawei Technologies. The
overarching focus is on developing and empowering individuals within existing ICT hubs
Recognizing the pivotal role government support plays in fostering growth, the
founders are actively seeking increased support to further enhance their initiatives and
contribute significantly to the overall expansion of the tech ecosystem in northern Nigeria.
to creating equal opportunities for growth and development. Their diverse programs include:
Internship
UpSkills (Private)
4
youths within the next three years, the organization is steadfastly guided by key principles,
This report covers the various training I was involved directly as a frontend developer
Protocol (HTML), Cascading Style Sheet (CSS), Tailwind CSS, JavaScript (JS), Version
Controland React JS respectively. It is also intended to cover challenges encountered and the
5
CHAPTER TWO
WORKING EXPERIENCE
This section undertakes an exhaustive examination of the acquired skills during the
1. Web Development
applications. It involves creating web pages using languages like HTML, CSS, and JavaScript,
along with frameworks and tools. Developers work on both the front-end (user interface) and
Overall, web development enables the creation of online platforms for businesses, organizations,
and individuals to share information, provide services, and engage with users over the internet.
2. Website
A website is a set of related web pages containing content such as texts, images,
videos, audios, etc. A website is hosted on at least one web server, accessible via a network
such as the internet or a private LAN through an internet address known as a URL(Universal
Resource Locator). A publicly accessible websites collectively constitutes the World Wide
Web (WWW).
3. Webpage
6
elements from other websites with suitable anchors.
the most widely used language to write Web Pages. A versatile language guiding web
browsers in structuring visited web pages. HTML's adaptability, allowing developers to tailor
Hypertext refers to the way in which Web pages (HTML documents) are linked
HTML consists of a series of elements, which you use to enclose, wrap, or mark up different
parts of content to make it appear or act in a certain way. The enclosing tags can make
content into a hyperlink to connect to another page, italicize words, and so on.
1. The opening tag: This consists of the name of the element (in this example, p for
2. The content: This is the content of the element. In this example, it is the paragraph
text.
3. The closing tag: This is the same as the opening tag, except that it includes a forward
7
example: <p>Mycatis <strong>very</strong> grumpy.</p>
Not all elements follow the pattern of an opening tag, content, and a closing tag.
Some elements consist of a single tag, which is typically used to insert/embed something in
<imgsrc=https://raw.githubusercontent.com/mdn/beginner-html-site/gh-
Attributes written without values (for example) are Boolean attribute. Boolean
attributes can only have one value, which is generally the same as the attribute name.
In HTML, the characters <, >,",', and & are special characters. They are parts of the
HTML syntax itself. Special characters are achieved with the use of character references.
These are special codes that represent characters, to be used in these exact circumstances.
Each character reference starts with an ampersand (&), and ends with a semicolon (;).
< <
> >
“ "
` &apos
& &
8
2.1.6 HTML Comments
HTML has a mechanism to write comments in the code. Browsers ignore comments,
effectively making comments invisible to the user. The purpose of comments is to allow you
To write an HTML comment, wrap it in the special markers <!-- and -->. For example:
The head of an HTML document is the part that is not displayed in the web browser
when the page is loaded. It contains information such as the page <title>, links to CSS (if you
choose to style your HTML content with CSS), links to custom favicons, and other metadata
(data about the HTML, such as the author, and important keywords that describe the
document). Web browsers use information contained in the head to render the HTML
document correctly.
1. `<head>` Element:
2. `<title>` Element:
Sets the document title (displayed in the browser tab or title bar).
3. `<meta>` Element:
Provides information about the document (e.g., character set, viewport settings).
4. `<link>` Element:
9
Links external resources like stylesheets or icons to the HTML document.
5. `<style>` Element:
These elements collectively shape how the browser interprets and displays the content
of an HTML document.
A basic link is created by wrapping the text or other content inside an <a> element and
using the href attribute, also known as a Hypertext Reference, or target, that contains the web
address. Example:
<p>
</p>
To use image as a link, use the <a> element to wrap the image file referenced with the
<img> element. The example below uses a relative path to reference a locally stored SVG
image file.example
<a href="https://developer.mozilla.org/en-US/">
10
</a>
HTML also boasts a number of block level elements used to define areas of your
website (such as "the header", "the navigation menu", "the main content column").
1. header: Usually a big strip across the top with a big heading, logo, and perhaps a
tagline. This usually stays the same from one webpage to another.
2. navigationbar: Links to the site's main sections; usually represented by menu buttons,
links, or tabs. Like the header, this content usually remains consistent from one
webpage to another
3. main content: A big area in the center that contains most of the unique content of a
given webpage.
4. sidebar: Some peripheral info, links, quotes, ads, etc. Usually, this is contextual to
what is contained in the main content (for example on a news article page, the sidebar
5. footer: A strip across the bottom of the page that generally contains fine print,
copyright notices, or contact info. It's a place to put common information (like the
header) but usually, that information is not critical or secondary to the website itself.
11
2.2 DEBUGGING HTML
Debugging HTML involves identifying and resolving errors or issues in HTML code
1. Syntax errors: These are spelling or punctuation errors in your code that actually cause
2. Logic errors: These are errors where the syntax is actually correct, but the code is not
what you intended it to be, meaning that the program runs incorrectly. These are often
1. Use Developer Tools: Most modern web browsers provide built-in developer tools that
allow you to inspect HTML elements, view CSS styles, debug JavaScript, and more.
2. HTML Validation: The best strategy is to start by running your HTML page through
the Markup Validation Service — created and maintained by the W3C, the
organization that looks after the specifications that define HTML, CSS, and other web
technologies.
The <img> element, used to embed a simple image in a webpage. Enabling images in
HTML involves incorporating the `<img>` (image) element to display visual content on a web
12
2. `src` Attribute:The `src` (source) attribute is mandatory and specifies the path or URL
3. `alt` Attribute: The `alt` (alternative) attribute provides alternative text for the image.
It is crucial for accessibility, as screen readers use it to describe the image to users who
When specifying the image source (`src`), you can use a relative path if the image is in
the same directory as your HTML file, or an absolute path if the image is located elsewhere.
alt="Description">
You can use the `width` and `height` attributes to specify the dimensions of the image,
13
2.9 VIDEO AND AUDIO CONTENT
Video and audio content play a crucial role in enhancing user engagement and
providing a dynamic user experience on the web. Here are key aspects to consider:
</video>
2. Media Formats: Different browsers support different media formats. To ensure broad
compatibility, include multiple sources with different formats using the `<source>`
3. Accessibility: Provide alternative text and captions for videos to ensure accessibility
for users with disabilities. This improves comprehension for those who are hearing
4. Responsive Design: Implement responsive design techniques to ensure that video and
audio content adapts to various screen sizes and devices. This enhances the user
5. Streaming Services: Streaming services and content delivery networks (CDNs) are
commonly used for hosting and delivering high-quality video and audio content. This
14
6. Embedding: Embedding multimedia content from platforms like YouTube or Vimeo is
a common practice. This simplifies content management and leverages the features
Project Illustration:
Images that work well on devices with widely differing screen sizes, resolutions, and
other such features — and look at what tools HTML provides to help implement them. This
15
Page URL: https://replit.com/@khalidrabiusali/Assignment4
Page URL:https://replit.com/@khalidrabiusali/assigment3
16
2.11 HTML TABLE
HTML tables are used to organize and display data in a structured grid format. Tables
consist of rows (`<tr>`), which contain cells (`<td>`) or header cells (`<th>`). Here's a brief
overview:
1. Table Structure
Data cells (`<td>`) hold regular content, while header cells (`<th>`) are used
u for headers.
Example:
2. Table Headers: The `<th>` element is used to define header cells, typically placed in the
first row.
Cells can contain various types of content, such as text, images, links, or even nested tables.
4. Spanning Rows or Columns:The `rowspan` and `colspan` attributes allow cells to span
17
5. Table Head, Body, and Footer
Footer:For
For improved structure and styling, tables can be divided
18
2.12 CASCADING STYLE SHEET (CSS)
CSS (Cascading Style Sheets) allows you to create great-looking web pages. Using
CSS, you can control exactly how HTML elements look in the browser, presenting your
markup using whatever design you like.CSS is a language for specifying how documents are
CSS is a rule-based language — you define the rules by specifying groups of styles
that should be applied to particular elements or groups of elements on your web page. For
example, you can decide to have the main heading on your page to be shown as large red text.
All web standards technologies (HTML, CSS, JavaScript, etc.) are defined in giant
documents called specifications (or "specs"), which are published by standards organizations
(such as the W3C, WHATWG, ECMA, or Khronos) and define precisely how those
CSS is no different — it is developed by a group within the W3C called the CSS
Working Group. This group is made of representatives of browser vendors and other
19
2.12.3 Adding CSS to a Document
The very first thing we need to do is to tell the HTML document that we have some
CSS rules we want it to use. There are three different ways to apply CSS to an HTML
document:
1. Inline CSS: Inline CSS is applied directly within the HTML element using the `style`
attribute. Example:
2. Internal CSS: Internal CSS is placed within the `<style>` element in the head section
20
3. External CSS: External CSS is stored in a separat
separatee .css file and linked to the HTML
2.12.4 Selectors
variety of selectors in the Getting started with CSS tutorial. If CSS is not applying to content
as expected, your selector may not match the way you think it should match.
Each CSS rule starts with a selector — or a list of selectors — in order to tell the
browser which element or elements the rules should apply to. All the examples below are
h1
a:link
.manythings
21
#onething
.box p
.box p:first-child
2.12.5 Specificity
You may encounter scenarios where two selectors select the same HTML element.
Consider the stylesheet below, with a p selector that sets paragraph text to blue. However,
there is also a class that sets the ttext of selected elements to red.
Values: Each property is assigned a value. This value indicates how to style the
property.
22
The picture below highlights a single property and value. The property name is color and the
value is blue.
When a property is paired with a value, this pairing is called a CSS declaration. CSS
declarations are found within CSS Declaration Blocks. The picture above, highlighting
Finally, CSS declaration blocks are paired with selectors to produce CSS rule sets (or
CSS rules). The picture above contains two rules: one for the h1 selector and one for the p
23
2.12.7 Functions
While most values are relatively simple keywords or numeric values, there are some
An example would be the calc() function, which can do simple math within CSS:
CSS:
2. Transform functions
Another example would be the various values for transform, such as rotate().
HTML
<div class="box"></div>
CSS
24
3. @rules
example,
CSS
@import "styles2.css";
One common @rule that you are likely to encounter is @media, which is used to create media
body {
background-color: pink;
CSS:
25
2.12.8 Shorthands
Some properties like font, background, padding, border, and margin are called
shorthand properties. This is because shorthand properties set several values in a single line.
padding-top: 10px;
padding-right: 15px;
padding-bottom: 15px;
padding-left: 5px;
2.12.9 Comments
As with any coding work, it is best practice to write comments along with CSS. This
helps you to remember how the code works as you come back later for fixes or enhancement.
Example:
body {
26
2.12.10 How does CSS actually work?
When a browser displays a document, it must combine the document's content with its
style information. It processes the document in a number of stages, which we've listed below.
Bear in mind that this is a very simplified version of what happens when a browser loads a
webpage, and that different browsers will handle the process in different ways. But this is
The browser loads the HTML (e.g. receives it from the network).
It converts the HTML into a DOM (Document Object Model). The DOM represents
the document in the computer's memory. The DOM is explained in a bit more detail in the
next section.
The browser then fetches most of the resources that are linked to by the HTML
document, such as embedded images, videos, and even linked CSS! JavaScript is handled a bit
later on in the process, and we won't talk about it here to keep things simpler.
The browser parses the fetched CSS, and sorts the different rules by their selector
types into different "buckets", e.g. element, class, ID, and so on. Based on the selectors it
finds, it works out which rules should be applied to which nodes in the DOM, and attaches
The render tree is laid out in the structure it should appear in after the rules have been
applied to it.The visual display of the page is shown on the screen (this stage is called
painting). The following diagram also offers a simple view of the process.
27
Page URL: https://replit.com/@khalidrabiusali/biography
https://replit.com/@khalidrabiusali/biography-page
A CSS selector is the first part of a CSS Rule. It is a pattern of elements and other
terms that tell the browser which HTML elements should be selected to have the CSS property
values inside the rule applied to them. The element or elements which are selected by the
In CSS, selectors are defined in the CSS Selectors specification; like any other part
28
In the above, h1 is selected. All h1 in the html will have the CSS effect above.
If you have more than one thing which uses the same CSS then the individual
selectors can be combined into a selector list so that the rule is applied to all of the individual
selectors. For example, if I have the same CSS for an h1 and also a class of .special,
.spec I could
There are a few different groupings of selectors, and knowing which type of selector
you might need will help you to find the right tool for the job.
h1{
Class selectors target an element that has a specific value for its class attribute:
29
.box{
ID selectors target an element that has a specific value for its id attribute:
#unique{
2. Attribute selectors
This group of selectors gives you different ways to select elements based on the presence of a
a[title]{
Or even make a selection based on the presence of an attribute with a particular value:
a[href="https://example.com"]
This group of selectors includes pseudo-classes, which style certain states of an element.
The:hover pseudo-class for example selects an element only when it is being hovered over by
a:hover{
It also includes pseudo-elements, which select a certain part of an element rather than the
element itself. For example, ::first-line always selects the first line of text inside an element
(a <p> in the below case), acting as if a <span> was wrapped around the first formatted line
30
and then selected
.p::first-line{
2.13.5 COMBINATORS
The final group of selectors combine other selectors in order to target elements within
our documents. The following, for example, selects paragraphs that are direct children
article> p{
Everything in CSS has a box around it, and understanding these boxes is key to being
able to create more complex layouts with CSS, or to align items with other items.
In CSS we have several types of boxes that generally fit into the categories of block
boxes and inline boxes. The type refers to how the box behaves in terms of page flow and in
relation to other boxes on the page. Boxes have an inner display type and an outer display
type.
31
iii. Padding, margin and border will cause other elements to be pushed away from the
box.
i. Top and bottom padding, margins, and borders will apply but will not cause other
Some HTML elements, such as <a>, <span>, <em> and <strong> use inline as their outer
Boxes also have an inner display type, which dictates how elements inside that box are laid
out.
Block and inline layout is the default way things behave on the web. By default and without
any other instruction, the elements inside a box are also laid out in normal flow and behave as
32
2.14.1 Background and Border
Background properties allow you to set the background color or image of an element,
Example:
.example {
background-color: #f0f0f0;
CSS provides properties to handle text direction, especially useful for languages that
Example:
.rtl-text {
direction: rtl;
CSS properties control how content overflows its container, including options for
Example:
.overflow-container {
overflow: auto;
33
}
CSS supports various values and units for specifying sizes, distances, colors, and other
properties.
Example:
CSS provides properties to control the size of elements, including width, height, min-
Example:
.example {
width: 300px;
height: 200px;
CSS can be used to style the appearance of tables, including setting borders,
34
Example:
Techniques like using meaningful class names, grouping related styles, and modularizing CSS
Project:
a. Images
35
They are inserted using the `<img>` tag with the `src` attribute specifying the image file's
URL.
Example:
html
b. Media:
Media elements include audio and video files that can be embedded in a webpage.
They are inserted using the `<audio>` and `<video>` tags with the `src` attribute specifying
html
</video>
Form elements are used to collect user input on a webpage, such as text input,
They are inserted using various form-related tags like `<form>`, `<input>`, `<textarea>`,
`<select>`, etc.
html
36
<div class = “box”></div>
CSS allows you to style text in various ways including color, size, font, spacing, and more.
Fundamental text and font styling involve basic adjustments to text appearance such as
c. Styling Lists
CSS allows you to style the appearance of lists, including bullet points or numbering,
37
ul {
list-style-type: square;
margin-left: 20px;
d. Styling Links
You can use CSS to style links to make them stand out or blend in with the rest of the
e. Web Fonts
Web fonts allow you to use custom fonts in your web projects by linking to font files
@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');
body {
38
}
project:
Github: https://github.com/Khalid-R-Salis/Cool-Box
a. Normal Flow:
Code Example:
39
b. Flexbox:
Code Example:
c. FlexBook Project:
GithubURL: https://github.com/Khalid
https://github.com/Khalid-R-Salis/flexBoox
d. Grid:
40
Two-dimensional
dimensional layout system for arranging elements in rows and columns.
Code Example:
wx7AXbv77W
41
Github URL :https://github.com/Khalid
.com/Khalid-R-Salis/testimonials-grid-section-main
main
a. Floats:
Positions elements to the left or right, allowing text to wrap around them.
Historically used for layout but now less common due to modern techniques.
Code Example:
b. Positioning:
Properties like `position`, `top`, `left`, `right`, and `bottom` are used.
Code Example:
42
c. Multi-column Layout:
Code Example:
CSS:
.container {
column-width: 200px;
Media queries allow us to run a series of tests (e.g. whether the user's screen is greater
than a certain width, or a certain resolution) and apply CSS selectively to style the page
For example, the following media query tests to see if the current web page is being
displayed as screen media (therefore not a printed document) and the viewport is at least
80rem wide. The CSS for the .container selector will only be applied if these two things are
true.
.container {
43
}
CSS frameworks are pre-written libraries that contain pre-designed and pre-coded CSS
components, styles, and utilities. They provide a foundation for designing and styling web
1. Pre-written Style: CSS frameworks provide ready-to-use styles for common web
elements like buttons, forms, typography, and navigation bars, saving developers time
and effort.
2. Responsive Grid Systems: Many CSS frameworks include responsive grid systems
that help create responsive layouts that adapt to different screen sizes and devices.
consistency in design across the entire application or website and maintain a cohesive
modify and extend styles to fit the specific design requirements of their project.
44
2.18 Some CSS Frameworks
1. Tailwind CSS
2. Bootstrap
3. Foundation
4. Bulma
5. Semantic UI
6. Materialize CSS
Tailwind CSS is a utility-first CSS framework that allows you to build modern,
responsive web designs by applying utility classes directly to HTML elements. It provides a
set of pre-designed utility classes for common CSS properties, enabling rapid development
45
Installation
You can install Tailwind CSS via npm or yarn. Here's how to do it via npm:
After installation, you typically need to create a configuration file (`tailwind.config.js`) where
Utility-First Fundamental:
Tailwind CSS promotes a utility-first approach, where you apply small, single-purpose
State Variants:
46
Tailwind provides utility classes for various states like hover, focus, active, and more,
Responsive Design:
Tailwind CSS includes responsive utility classes that enable you to create designs that adapt to
To make a design responsive using Tailwind CSS, you can use its built-in responsive utility
classes. These classes allow you to apply different styles based on the screen size.
Tailwind CSS provides responsive prefixes that you can add to any utility class to
Example:
- The `bg-blue-500` class sets the background color to blue for all screen sizes by default.
- The `sm:bg-green-500` class changes the background color to green for small screens (≥
640px).
- The `md:bg-yellow-500` class changes the background color to yellow for medium screens
(≥ 768px).
47
- The `lg:bg-red-500`
500` class changes the backgroun
backgroundd color to red for large screens (≥
( 1024px).
Reusing Styles:
Tailwind encourages the reuse of utility classes, promoting consistency and efficiency in
Customization:
Configuration:
(`tailwind.config.js`), where you can modify default settings, add custom utilities, or extend
// tailwind.config.js
a. Content:
Theme:
48
Tailwind's theme configuration lets you define custom colors, fonts, breakpoints, and more,
ensuring your design system aligns with your brand identity. Example:
// tailwind.config.js
b. Screens:
Tailwind enables you to specify custom breakpoints for responsive design using Tailwind's
c. Colors:
Tailwind provides a comprehensive color palette that you can customize to match
ma your brand
// tailwind.config.js
49
2.18.3 Base Styles
a. Layout:
Tailwind offers utility classes for creating layouts using flexbox and grid, making it
b. Spacing:
Tailwind's spacing utilities provide a consistent spacing scale for margin and padding,
c. Sizing:
You can
an use Tailwind's sizing utilities to set width, height, and other dimensions of
50
<div class="w-32 h-32 bg-gray
gray-400"></div>
d. Typography:
o We use Tailwind CSS utility classes to style elements with backgrounds, borders,
51
o Backgrounds: We set different background colors (`bg-blue-200` and `bg-green-200`)
and add padding, rounded corners (`rounded-lg`), and shadows (`shadow-md` and
over it, making it slightly larger. We also apply a transition effect (`transition duration-
52
Tailwind Project:
53
GitHub URL:https://github.com/Khalid-R-Salis/ModernFarm
Project BMC
54
2.19 VERSION CONTROL
Version control is a system that records changes to a file or set of files over time so
that you can recall specific versions later. It allows multiple people to work on a project
simultaneously, tracks changes, and helps manage conflicts. Git is one of the most popular
distributed version control systems, while GitHub is a web-based platform that hosts Git
1. Git: Git is a distributed version control system that allows users to track changes in
source code during software development. It provides features like branching, merging, and
distributed workflows, making it efficient for both individual developers and large teams.
2. GitHub: GitHub is a web-based platform built around Git. It offers hosting for Git
repositories, collaboration features such as issue tracking and pull requests, and social
Basic Git commands are used to perform common version control operations such as
2. git clone <repository-url>: Clones a remote repository from the specified URL to your
local machine.
55
3. git add <file>: Adds a file or changes in a file to the staging area, preparing them to be
committed.
4. git commit -m "commit message": Commits the staged changes to the repository with
5. git status: Displays the current state of the repository, including modified files, staged
6. git branch: Lists all branches in the repository. Adding a branch name creates a new
branch.
8. git merge <branch-name>: Merges changes from the specified branch into the current
branch.
9. git pull: Fetches changes from a remote repository and merges them into the current
branch.
12. git remote add origin <repository-url>: Adds a remote repository as a new remote
named "origin".
Bash or terminal
56
gitinit //command
Bash or terminal
touch README.md
Bash or terminal
4. Push to GitHub:
Bash or terminal
Bash or terminal
57
1. Collaboration: Multiple developers can work on the same project concurrently,
3. Branching and Merging: Git enables parallel development through branching and
Click on the "Settings" tab located at the top right corner of the repository page.
o In the settings page, scroll down until you find the "GitHub Pages" section.
o Under the "Source" section within GitHub Pages, you will see a dropdown menu.
o Select the branch you want to use as the source for GitHub Pages. This is typically the
o GitHub Pages will automatically save your changes and start building your site from
58
Step6. Access Your Website:
You can also find the URL under the "GitHub Pages" section in the repository settings.
1. UI (User Interface) refers to the visual elements of a product or system with which a
user interacts. It includes buttons, icons, typography, colors, and other visual elements
2. UX (User Experience) encompasses the overall experience a user has while interacting
use, and emotional response. UX design aims to create meaningful and enjoyable
Figma is a web-based collaborative design tool used for creating user interfaces,
1. Real-Time Collaboration: Multiple users can work on the same design simultaneously,
2. Cloud-Based: Figma is a cloud-based tool, which means designs are stored online and can
59
3. Prototyping: Figma allows designers to create interactive prototypes with transitions and
4. Component Libraries: Figma supports the creation of reusable components and design
1. Create a New File: Start by creating a new Figma file for your design project.
2. Design Elements: Use Figma's tools to create design elements such as frames, shapes,
text, and images. Arrange these elements to create the desired layout for your design.
3. Components and Styles: Create reusable components for elements that appear
frequently across your designs, such as buttons, navigation bars, or cards. Apply styles
4. Collaboration: Share your Figma file with team members or stakeholders to gather
complex features on web pages — every time a web page does more than just sit there and
display static information for you to look at — displaying timely content updates, interactive
maps, animated 2D/3D graphics, scrolling video jukeboxes, etc. — you can bet that JavaScript
is probably involved. It is the third layer of the layer cake of standard web technologies, two
60
1. HTML is the markup language that we use to structure and give meaning to our web
content, for example defining paragraphs, headings, and data tables, or embedding images and
example setting background colors and fonts, and laying out our content in multiple columns.
3. JavaScript is a scripting language that enables you to create dynamically updating content,
but it is amazing what you can achieve with a few lines of JavaScript code.)
61
2.26.1
.1 JAVASCRIPT RUNNING ORDER
When the browser encounters a block of JavaScript, it generally runs it in order, from
top
op to bottom. For example, the below code run in hierarchy, from the top to bottom:
2.26.2
.2 Interpreted Versus Compiled Code
In interpreted languages, the code is run from top to bottom and the result of running
the code is immediately returned. You don't have to transform the code into a different
form before the browser runs it. The code is received in its programmer-friendly
programmer text
Compiled languages on the other hand are transformed (compiled) into another form
before they are run by the computer. For example, C/C++ are compiled into machine
code that is then run by the computer. The program is executed from a binary format,
JavaScript code in its original text form and runs the script from that.
JavaScript is applied to your HTML page in a similar manner to CSS. Whereas CSS uses
<link> elements to apply external stylesheets and <style> elements to There are several ways
to add JavaScript to a web page:
62
1. Inline Scripting:
Example:
<script>
alert("Hello, world!");
</script>
Linking an external JavaScript file using the `<script>` tag's `src` attribute.
Example:
<script src="script.js"></script>
3. Event Attributes:
Attaching JavaScript code directly to HTML elements using event attributes like `onclick`,
`onmouseover`, etc.
Example:
4. DOM Manipulation:
Dynamically adding JavaScript to the page by modifying the Document Object Model
(DOM).
Example:
63
2.26.4 ASYNCHRONOUS LOADING:
Example:
html
<script asyncsrc="script.js"></script>
5. Deferred Loading:
Loading JavaScript after the HTML content has been fully loaded.
Example:
html
<script defersrc="script.js"></script>
JavaScript Project:
URL: https://github.com/Khalid-R-Salis/KHALID-RABIU-SALIS
Primitive data types are the most basic building blocks of data in JavaScript. They are
64
1. Numbers:
o Example:
JavaScript
let pi = 3.14159;
2. Strings:
o Example:
JavaScript
3. Booleans:
o Example:
JavaScript
letisAdult = true;
letisAvailable = false;
4. Null:
o Example:
JavaScript
letemptyVariable = null;
65
5. Undefined:
o Represents the value of a variable that has been declared but not assigned a value.
o Example:
JavaScript
6. Symbols:
o Unique and immutable identifiers often used for private properties and preventing naming
collisions.
o Example:
JavaScript
letmySymbol = Symbol("uniqueSymbol");
Passed by value: When assigned to a different variable, a copy of the value is created.
values.
Undefined: Checking if a variable has been assigned a value, handling missing data.
66
Symbols: Creating unique identifiers, defining private properties in objects.
2.28 VARIABLE
ABLE DECLARATION AND ASSIGNMENT IN JAVASCRIPT
A variable is a container for a value, like a number we might use in a sum, or a string
Example
To use a variable, you've first got to create it — more accurately, we call this declaring the
variable. To do this, we type the keyword let followed by the name you want to call your
67
variable:
letmyName;
letmyAge;
Once you've declared a variable, you can initialize it with a value. You do this by
typing the variable name, followed by an equals sign (=), followed by the value you want to
myName = "Chris";
myAge = 37;
You can return your variable values by typing their name into the console
myName;
myAge;
You can declare and initialize a variable at the same time, like this:
Once a variable has been initialized with a value, you can change (or update) that
68
2.28.4 Constants in Java Script
As well as variables, you can declare constants. These are like variables, except that:
o you can't assign them a new value after you've initialized them.
For example, using let you can declare a variable without initializing it:
let count;
2.28.5 Scoping
Variable Scope
Var
Reassignment: Allowed.
let (preferred):
Scope: Block: Accessible only within the curly braces (`{}`) where it's declared.
Reassignment: Allowed..
69
2.28.7 Arithmetic Operator
These operators allow developers to manipulate numbers in various ways within their
JavaScript programs:
70
1. Addition (+): The addition operator is used to add two numbers together or concatenate
strings.
Example:
let concatenatedString = "Hello" + " " + "world"; // concatenatedString will be "Hello world"
2. Subtraction (-): The subtraction operator subtracts the second operand from the first
operand.
Example:
Example:
4. Division (/): The division operator divides the first operand by the second operand.
Example:
5. Modulus (%): The modulus operator returns the remainder of a division operation.
Example:
letnum = 5;
Example:
71
letnum = 5;
Assignment operators
Assignment operators are operators that assign a value to a variable. We have already used
the most basic one, =, loads of times — it assigns the variable on the left the value stated on
the right:
72
Comparison operators: these operators are used to compare two or more values:
Control Statements: Control statements in JavaScript are essential for directing the flow of a
Conditionals:
1. if statement: The most basic conditional statement in JavaScript. It executes a block of code
Example:
if (condition) {
2. if else statement: Extends the `if` statement to execute a different block of code if the
condition is false.
73
3. else if statement: Allows
llows for multiple conditions to be checked in sequence.
Example:
4. switch statement:: Provides a way to execute different code blocks based on different cases.
Example:
Loops:
Example:
// code to be executed
74
}
Example:
while (condition) {
// code to be executed
3. do-while loop: Similar to the `while` loop, but the code block is executed at least once
Example:
do {
// code to be executed
} while (condition);
In JavaScript, data types play a crucial role in defining the nature of the variables and
values used within a program. Among the various data types, object types including objects,
arrays, and functions are fundamental components that enable developers to organize and
1. Objects:
Objects in JavaScript are complex data types that allow developers to store collections of key-
value pairs.
They are created using curly braces `{}` and can contain properties and methods.
75
Properties can be accessed using dot notation (`object.property`) or bracket notation
(`object['property']`).
Objects are versatile and can represent a wide range of entities, such as users, products, or any
other custom data structure.
Example:
2. Arrays:
They are created using square brackets `[]` and can hold any combination of data types,
Example:
3. Functions:
76
Functions are first-class
class citizens in JavaScript, meaning they can be assigned to variables,
Functions can be declared using function declarations, function expressions, arrow functions,
Example:
Functions)
Function Declaration: This is a way to define a named function in JavaScript using the
`function` keyword followed by the function name and parentheses for parameters, and then
the
Example:
function add(a, b) {
return a + b;
77
Function Expression: In JavaScript, functions can also be defined without a name. These are
Example:
return a * b;
};
IIFE (Immediately Invoked Function Expression): An IIFE is a JavaScript function that runs
additional set of parentheses. This is commonly used to create a separate scope and avoid
Example:
(function() {
})();
Anonymous Functions: These are functions without a name. They can be function expressions
or passed as arguments to other functions. They are often used in event handlers or callback
Example:
setTimeout(function() {
}, 1000);
78
2.29.10 Closure
In JavaScript, a closure is created when an inner function has access to the variables of
its outer function, even after the outer function has finished executing. This is possible
Closures are often used to create private variables and encapsulation in JavaScript.
Example:
2.29.11 Hoisting:
moved to the top of their containing scope during the compilation phase. This means that
regardless of where variables and functions are declared, they are moved to the top of their
scope.
However, only the declarations are hoisted, not the initializations. Variables declared
with `var` are hoisted and initialized with `undefined`, while `let` and `const` declarations are
hoisted but not initialized (they remain uninitialized until their act
actual
ual declaration is reached in
the code).
Function declarations are hoisted entirely, so they can be called before they are
defined.
79
Example
var x = 5;
2.29.12 Higher-Order
Order Array Method:
Higher-order
order array methods are a powerful feature of JavaScript that allow developers
to write cleaner,
ner, more concise, and more functional code when working with arrays.
1. map: The `map` method applies a function to each element of an array and returns a new
Example:
2. filter: The `filter` method creates a new array with all elements that pass the test
implemented by the provided function. It's handy for selecting elements based on certain
criteria.
Example:
80
3. Reduce: The `reduce` method applies a function ag
against
ainst an accumulator and each element
in the array (from left to right) to reduce it to a single value. It's useful for aggregating data or
performing calculations.
Example:
4. forEach: The `forEach` method executes a provided function once for each array
arra element.
It's commonly used for performing side effects for each element in the array.
Example:
NPM: npm (Node Package Manager) is a package manager for JavaScript. It is used to install,
81
NPX: npx is a tool that comes with NPM. It is used to execute packages from the NPM
registry without the need to install them globally. It's particularly useful for running
Simple JS project
result
Code:
82
Game Project
83
Result:
Code:
84
NOTE: The above projects are to demonstrate pure JS with less HTML AND CSS. In most of
commonly used functions and utilities, making it easier for developers to build web
applications. These libraries often focus on specific tasks or functionalities, such as DOM
1. React
2. jQuery
3. Vue.js
4. AngularJS/Angular
5. D3.js
6. Lodash
7. Moment.js
85
8. Bootstrap (with JavaScript components) etc.
1. Faster Development
2. Cross-browser Compatibility:
3. Abstraction of Complexity:
5. Enhanced Functionality:
than a language, it is widely used in web development. The library first appeared in May 2013
and is now one of the most commonly used frontend libraries for web development.
To set react using VITE, the following command needs to be run on terminal
The local host link will provide the result as demonstrated on the screen below:
86
Integrating React with tailwind (steps
(steps): After setting up react, you set up tailwind on the same
2. Initialize the Tailwind CSS configuration file by running the following command:
Command: npxtailwindcssinit -p
3. Configure the tailwind.config.js file to include the appropriate content and theme settings.
4. Open your index.css file and delete its contents. Replace them with the following Tailwind
CSS directives:
87
5. Start the Development Server
React apps are made out of components. A component is a piece of the UI (user
interface) that has its own logic and appearance. A component can be as small as a button, or
functionMyButton() {
return (
<button>I'm a button</button>
);
Now that you’ve declared MyButton, you can nest it into another component:
88
2.31.3 Writing Markup with
ith JSX
JSX is stricter than HTML. You have to close tags like <br />. Your component also can’t
return multiple JSX tags. You have to wrap them into a shared parent, like a <div>...</div>
<div>...</div or
89
2.31.4 Adding Styles
In React, you specify a CSS class with className. It works the same way
w as the
<imgclassName="avatar" />
Then you write the CSS rules for it in a separate CSS file:
/* In your CSS */
.avatar {
border-radius: 50%;
JavaScript so that you can embed some variable from your code and display it to the user. For
You can respond to events by declaring event handler functions inside your
components:
90
2.31.7 SOME RULES GUIDING REACT
5. Only one statement or line can be return at a time, else, they must be wrap inside
different.
7. You should export function so that you can import in a different file
you can export at the very end of the file or together with function. Example
91
8. For pictures, external
xternal styles, other component
component, etc you need to import them before using
them example
a. for pictures
import ‘./app.css’
components (or other Hooks). If you want to use useState in a condition or a loop, extract a
UseState is a React Hook that allows functional components to manage state within
React applications. It enables components to declare and update state variables, triggering re-
re
renders when state values change. This helps maintain component state and facilitates
example demonstrating
ating how to use `useStat
`useState` to add and subtract numbers:
2.31.10 PROPS
Props, short for properties, in JSX refer to the mechanism for passing data from parent
dynamic and reusable by enabling the transfer of information down the component tree.
PASSING PROPS
Passing props in React involves sending data from a parent component to a child component.
93
2.32 REACT ROUTER/
R/ BROWSER ROUTER
ROUTING: The process of navigating between one component/pages to another on the URL
To set up react React Router DOM, Run the below command in your terminal:
In your main.jsx or app.jsx, were you are rendering component, import the the react
import{BroweserRouter,
roweserRouter, Route, Routers} from ‘react
‘react-router-dom’
94
enclose your app component in the browser route as follows:
<BrowserRouter>
//block
</BrowserRouter>
<Router>
//block
</Router>
React Icons is a library that provides a collection of popular icon packs as ready-to-use
ready
wide range of icons that can be eeasily integrated into your components.
To install React Icons using npm, you can run the following command in your terminal:
React Project:
Code:
95
Note: The above code is not complete, but is the major component
GitHub: https://github.com/Khalid-R-Salis/ReactOne
Result:
96
Project
eiXPmuOuZt
ENDEAVORS
unprecedented heights.
functionality.
This exhaustive elucidation endeavors to articulate the profound depth and expansive breadth
of the skills cultivated during the SIWES program. The program's crucible forged a seasoned
97
practitioner adept in HTML, CSS, JavaScript, Tailwind CSS, and React JS, ready to navigate
98
CHAPTER THREE
difficult to manage daily costs like transportation, meals, and even basic living
couldn't attend some workshops and conferences in different that could have enhanced
my learning experience.
supervisor left me feeling unsure about my progress and lacked guidance through
challenges.
unfairly allocating work could create frustration and hinder project progress.
99
CHAPTER FOUR
4.1 RECOMMENDATION
site visits to evaluate the progress and well-being of SIWES students at their respective
places of attachment.
attachment due to the positive relationships fostered between staff and students,
program.
100
Recommendation: Tailor SIWES activities to emphasize the development of industry-
4.2 CONCLUSION
The Student Industrial Work Experience Scheme (SIWES) has concluded, and the
knowledge acquired in an academic setting and its practical application in the real world. This
exposure has afforded me the opportunity to acquire valuable insights and skills directly
During the SIWES exercise, significant emphasis was placed on Web Development,
particularly within the Front-End stack. This focus has enriched my understanding and
competence in this domain. The gained knowledge and skills are of substantial importance,
Moreover, this experience has provided a broader perspective on the intricacies of the
industry, allowing me to appreciate the practical implications of the concepts learned within
the academic realm. Overall, the SIWES exercise has been instrumental in bridging the gap
101
4.3 LINKS
1. https://www.frontendmentor.io/solutions/card-component-design-using-flexbox-
MtGs8TWUWF
2. https://www.frontendmentor.io/solutions/ecommerce-shoe-page-eiXPmuOuZt
3. https://www.frontendmentor.io/solutions/news-homepage-fPznUjtLSr
4. https://www.frontendmentor.io/solutions/ordersummarycomponentmain-oL-_ecT1Qi
5. https://www.frontendmentor.io/solutions/product-preview-card-component-using-flex-
Bl3dYH07yI
6. https://www.frontendmentor.io/solutions/results-summary-component-8DpqsfrYSD
7. https://www.frontendmentor.io/solutions/stats-preview-card-component-
ZXfmZoKKZR
8. https://www.frontendmentor.io/solutions/testimonials-grid-section-wx7AXbv77W
https://replit.com/@khalidrabiusali
https://github.com/Khalid-R-Salis
https://www.figma.com/files/recents-and-sharing/recently-
viewed?fuid=1037341909156476413
102
APPENDIX
103
Meeting the Team
104
REFERENCES
tricks.com/snippets/css/a-guide-to-flexbox/](https://css-tricks.com/snippets/css/a-guide-
to-flexbox/)
guides/git](https://github.com/git-guides/git)
US/](https://developer.mozilla.org/en-US/)
[https://www.w3schools.com/whatis/whatis_react.asp](https://www.w3schools.com/wha
tis/whatis_react.asp)
105