Welcome to the documentation for our HTML templates. Whether you're a beginner or experienced developer, this guide covers everything you need to build and customize your website with ease.
Dive in and start creating something amazing!
This template is fully coded and built on top of Open Sources, more details here:
Our template includes high-quality images from Unsplash, Pexels, and Pixabay. When needed, we use AI to create unique visuals. All images are included to inspire and enhance your projects.
How to Change Images in the Template:
There are two common ways to use and replace images in this template: with an <img>
tag or via CSS background
style.
Steps (for both methods):
/assets/img/
or /assets/logo/
).
A. Using <img>
tag:
B. Using background style:
Through most of the examples in this template, we are using
Bootstrap Icon
and
Heroicons
.
So, all you need to do is to add icons using the <svg>
tag directly to your HTML code. Here's an example:
And sometimes, we used other icons in the SVG
format from these icons libraries:
Lucide Icons
,
Google Icons
,
Tabler Icons
,
Fontawesome Icons
.
To start using this template you will need to import some files in your current project or start from scratch using our template (scroll down in this page to view it).
Note: By default all of these quick starts are configured on the template, so don't worry!
Copy and paste the following <link>
tags into your <head>
, before all other stylesheets, to load our CSS:
Some components require Bootstrap’s JavaScript to function properly. Include the following <script>
tags just before the closing </body>
tag. Popper.js is already included in bootstrap.bundle.min.js
.
Use the HTML5 doctype and viewport meta tag to follow modern design and responsive standards. Your page should look like this:
This template includes key global styles to ensure consistent behavior across browsers.
Bootstrap needs the HTML5 doctype to work properly; without it, styles may break.
dir="ltr"
to the html tag
it is important for some styles like arrows ... etc!!!
Bootstrap uses a mobile-first approach. Add the viewport meta tag in your <head>
for proper scaling and touch support.
If you want to learn more, we recommend you check the Bootstrap documentation, click here for the documentation
RTL means Right to Left laguages like Arabic
and Hebrew
.
Learn how to enable support for right-to-left text in our template:
There are two strict requirements for enabling RTL in Bootstrap-powered pages.
dir="rtl"
on the <html>
element.
lang
attribute, like lang="ar"
, on the <html>
element.
From there, you’ll need to include an RTL version of our CSS (main.min.rtl.css
). Example:
This template has a top-right toggle for light, dark, and auto modes. In auto mode, it follows the user's device settings.
Note: The toggler initially defers to a user’s current system color mode but provides an option to override that and pick a specific color mode.
To enable the light, dark, and auto mode toggle, you need to include the color-modes.js
file at the top of your HTML document, just after the opening <head>
tag (By default it is included!):
For details on customizing light and dark modes, including Sass variables and the data-bs-theme
attribute, see the official Bootstrap documentation.
Prerequisites: For smooth SCSS compilation, use the latest Node.js LTS version. It ensures a stable and reliable development environment. Follow these steps to effectively compile Bootstrap SCSS and manage dependencies:
Start by locating the target SCSS folder within your project directory. This is where the SCSS files, including those for Bootstrap, are stored.
Once Node.js is installed, open your terminal and execute the following command to install the required dependencies:
This command will fetch and install the dependencies outlined in your project's package.json
file.
Feel free to make any necessary changes to your SCSS files. This could involve adjusting Bootstrap variables, customizing styles, or adding your own stylesheets.
To compile your SCSS files, including Bootstrap's SCSS, into a minified CSS file, execute the following command:
This command compiles and outputs a minified main.min.css
file to assets/css/
.
If you prefer to compile the SCSS files without minification, use the following command:
This command compiles and outputs an unminified main.css
file to assets/css/
.
To change the site’s color scheme, edit _color_palette.scss
in assets/scss/
— you’ll find primary, text, and background color variables at the end.
Note: Customize colors by editing SCSS variables.
Use uicolors.app/create to generate shades (50–950) and match your brand.
First install the rtlcss
package, by executing the following command:
(You can learn more on this guide: rtlcss.com)
To create a right-to-left (RTL) version of your main.min.css
for languages that read from right to left, execute the following command at the same folder that locate main.min.css
file:
Running this command will transform your main.min.css
into main.min.rtl.css
, which can be used to support RTL languages.
Use color utility classes to convey meaning and style elements, including hover effects. The primary palette is neutral and used throughout the template.
.bg-body-secondary
.bg-body-tertiary
.text-primary
.text-primary-emphasis
.text-secondary
.text-secondary-emphasis
.text-success
.text-success-emphasis
.text-danger
.text-danger-emphasis
.text-warning
.text-warning-emphasis
.text-info
.text-info-emphasis
.text-light
.text-light-emphasis
.text-dark
.text-dark-emphasis
.text-body
.text-body-emphasis
.text-body-secondary
.text-body-tertiary
.text-black
.text-white
If you'd like to customize the font-family
used throughout the template, it's a straightforward process. By following these steps, you can easily modify the font-family to better match your design preferences.
First, locate style.css
in ./assets/css/
. It's included on all pages.
At the top of style.css
, you’ll see an @import
rule for the current font. Example:
To change the font, find the font-family
in the CSS (usually under body
) and replace 'Inter var'
with your preferred font—local or imported.
After editing font-family
, save style.css
. The new font will apply site-wide for consistent styling.
Bootstrap has a lot of utility/helper classes to quickly style elements without using any CSS code. See the official Bootstrap documentation. We also made some changes to the SCSS, including spacing (margins, padding), sizing (max-width, max-height, width, height), and more to better fit the design.
The following utilities are part of our custom SCSS, not the default Bootstrap.
To view all modifications in full, check the main.css
file (The unminified version).
We’ve customized Bootstrap’s spacing utilities in our own SCSS. This includes changes to spacing values (margin, padding, gap, and gutters) to better fit the design system.
Example: Margin
Use directional classes like .mt-*
, .mb-*
, .ms-*
, .me-*
, .mx-*
, .my-*
for specific sides. They are responsive too (e.g., mt-sm-4
).
For negative margins, add n
before the value (e.g., .mt-n1
→ margin-top: -0.25rem
).
Note:
This spacing scale and naming pattern also apply to padding, gap, and gutters. All follow the same step-based values and support responsive classes like pt-sm-10
or g-sm-5
:
.p-*
, .pt-*
, .pb-*
, etc.), with an extended range up to .p-12
(12rem)
.gap-*
, .gx-*
, .gy-*
, .g-*
, etc.)
Use these utilities to set the maximum width or height of an element. The max-height
utilities follow the same pattern as max-width
.
Example: Max-Width
These utilities are for setting the width
or height
of an element. The .h-*
classes for height follow the same sizing pattern as the .w-*
classes for width.
Example: Width
Use the .rounded-*
utilities to control the border-radius of an element. These classes are also responsive, like .rounded-sm-6
.
.rounded
, .rounded-0
, .rounded-1
, etc., to apply the radius to all corners.
-top
, -end
, -bottom
, and -start
.
.rounded-circle
for a perfect circle and .rounded-pill
for a pill shape.
Example: rounded
Utilities for controlling the shadow of a text element. These classes work seamlessly in both light and dark modes, automatically adapting to your theme:
An optimized Workflow.
An optimized Workflow.
An optimized Workflow.
An optimized Workflow.
An optimized Workflow.
An optimized Workflow.
To apply mask effects, start with the base .mask-image
class to enable masking capabilities. Combine it with directional modifiers and percentage controls, plus responsive disable utilities when needed:
.mask-image
(required for all mask effects)
.mask-top
(top fade)
.mask-bottom
(bottom fade)
.mask-start
(start - auto-flips for RTL/LTR)
.mask-end
(end - auto-flips for RTL/LTR)
.mask-{direction}-from-{0,10,25,50,75,90,100}
(fade from position)
.mask-{direction}-to-{0,10,25,50,75,90,100}
(fade to position)
.mask-none-{xs,sm,md,lg,xl,xxl}
(disables mask for specific breakpoint ranges)
Refine your text with our versatile typography classes. Easily customize font-size, line-height, letter-spacing, and text clamping to ensure your content looks great on all devices.
The following typography classes are part of our custom SCSS, not the default Bootstrap.
To view all modifications in full, check the main.css
file (The unminified version).
Utilities for controlling the font size of an element.
Utilities for controlling the leading (line-height) of an element.
Utilities for controlling the tracking (letter-spacing) of an element.
Utilities for clamping text to a specific number of lines.
Now, let's discuss setting up the contact form
so that you can receive messages by adding your email
.
To receive messages from the contact form, you'll need to update the email address in the email.php
file, which is located in the ./assets/php
directory. Simply replace "Your_Email@example.com
" with your own email address.
Note: Be sure to check your spam or junk folder if you don't see the email in your inbox.
Make sure you have the ./assets/js/scripts.js
javascript file at the bottom of the page. (By default it is included!)
This section will guide you through getting the action URL
from a Mailchimp embedded form. This URL is all you need to connect the template's subscriber form to your Mailchimp account, allowing you to easily collect email subscribers.
Mailchimp's interface may change, but the goal is the same: find and copy the action
attribute.
Here's what you need to do:
Signup Forms
tab:
Create embedded form
:
Embedded form name
and select the Audience
, then click Begin
button.
Continue
button:
<form action="..."
.
action
attribute and remove the quotation marks around it, as shown on this screen:
assets/js/scripts.js
file, find the formActionURL
constant, which is typically defined at the beginning of the file:
enter_your_form_action_url_here
with the URL you copied from Mailchimp and save the file.
scripts.js
at the bottom of your page, (by default it is included!):
Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.
Registration is complete! Welcome to our vibrant community. You can now access all the features and resources we offer.
Database connection has failed! This issue requires urgent attention to restore services and prevent data loss.
Low disk space detected! Free up space to avoid performance issues and ensure your system runs smoothly.
System maintenance is scheduled for 3 AM. Please plan your activities accordingly to avoid disruptions.
A new feature update is available! Discover the latest enhancements and improve your user experience today.
Backup completed successfully! Your data is safe and secure. Regular backups help protect against data loss.
You have received a new message! Check your inbox to stay updated with the latest information.
A security breach has been detected! Immediate action is required to secure your account and protect your data.
Algolia is a powerful search-as-a-service platform with a REST API for indexing and searching data. It is an excellent solution for enhancing your static site with robust search functionality.
To get started, you'll need three pieces of information from Algolia:
The Algolia platform may change. Regardless of any design updates, your main goal is to get the three required pieces of information.
Creating an Account and an Application: If you haven't done so already, create an account with Algolia.
When you create an account for the first time, a default application named My First Application
is automatically created for you. You can use this application instead of creating a new one. Or if you want, you can create a new application by using this link: create an application.
To enable search functionality, we need to populate the index with data. For now, we will use the Algolia UI to do this.
Here’s how to do it using the Algolia UI:
When you click on My First Application
, you'll see something like the following screenshot, and then click on the upload a file
card.
Then, a pop-up window will appear, where you need to upload the JSON
file.
The JSON file is located at assets/img/algolia/algolia-json.json
. Open it with your favorite text editor, such as Sublime Text or VS Code. Make the necessary changes to fit your website content, and then upload the updated file.
Alternatively, you can copy this example and create a new file:
Note: Remember to replace the images in the same folder assets/img/algolia/
with your own images. Also, make sure they are smaller in size. These images are the ones displayed in front of the search results when you perform searches.
When the file uploaded, then choose title
for the primary text field and description
for the secondary text field. As shown on this example:
And then click the Continue
button three times. Then copy the Application ID
and Search API Key
Once you have this information from the Algolia platform, paste these values into the variables located at the top of the scripts.js
file found in the assets/js/
directory (by default the file is included!), like this:
Note: The ALGOLIA_INDEX_NAME
is usually the name of the JSON file you uploaded. Alternatively, you can find it somewhere in the Algolia dashboard!
To enable the search functionality with Algolia and trigger the search modal, ensure you include the following button code in your HTML file. This button, when clicked, will open the search modal, allowing users to perform searches using Algolia. This code is included in the file by default:
Ensure you have the following files in these folders:
assets/libraries/algolia/algoliasearch-lite.umd.js
assets/libraries/algolia/instantsearch.production.min.js
We have included a script located in assets/js/scripts.js
. This script dynamically includes the above files and creates the search modal. To enable this functionality, simply include the scripts.js
file at the bottom of your HTML file.
Here’s how you can include the scripts.js
file: (by default the file is included!)
We've added some CSS to modify its style. It is located on the assets/css/style.css
. (by default it is included!)
Additionally, you can learn more about setting up Algolia search in this blog post.
AOS: CSS-Driven “On Scroll” Animation Library.
AOS animates elements on scroll by adding or removing the aos-animate
class based on their position. All visual animation is controlled entirely by CSS.
Here are some examples of how you can use it:
And you need to include some packages: (They are included by default!)
This is how we initialize it:
This is initialized by default at the file scripts.js
located a the folder path: assets/js/
This section provides a step-by-step guide for editing a countdown timer on an HTML page. By following the instructions, you can easily update the launch date and time of your countdown. Let's dive in!
data-future-date
attribute. It should look something like this:
date
and time
to your desired launch date and time, while making sure to maintain the exact format
. For example:
scripts.js
at the bottom of your page, (by default it is included!):
And that's it! You've successfully edited the countdown on your HTML page.
To embed a Google Map on a webpage, you can use the Google Maps Embed API. Here's how:
Share or embed map
button and then click on the embed map
tab.
copy HTML
button to copy the embed code.
src
attribute in the example code below. Copy the URL from the code provided by Google Maps and paste it into the src
attribute, keeping all other attributes like class
and style
the same.
Typed.js is a library that types. Enter in any string, and watch it type at the speed you’ve set, backspace what it’s typed, and begin a new sentence for however many strings you’ve set. Live Demo
The README on GitHub is going to be very helpful for any questions, features, or use cases.
And you need to include a JS package at the bottom: (It's included by default!)
For Javascript, we have added the script to make it work on scripts.js
file. So include the file at the bottom (by default it is included!) or use this code:
Note:
If you want to include multiple Typed.js instances on the same page, ensure each instance uses unique IDs, like typed2
and typed-strings2
, to avoid conflicts. Use the appropriate function (initializeTyped
or initializeTypedInput
) to reinitialize the JavaScript code with the corresponding unique IDs. This guarantees that each Typed instance operates independently, allowing for multiple animations without interference. Adjust the initialization options according to your specific requirements for each instance.
To add particles to the background of a webpage, you can use a library such as
tsParticles.js
.
tsparticles.bundle.min.js
near the end of your page, right before the closing </body>
tag, to enable them. (by default it is included!)
div
element in your HTML page where you want the particles to be displayed. Give the div
element an ID
so you can reference it in your JavaScript code. For example:
tsParticles.js
library to create a new particle effect and display it in the div
element you created earlier.
scripts.js
file. (by default it is included!)
tsparticles.bundle.min.js
!
If you want only to make some changes:
More
dropdown at the top left corner.
Export Config
. Scroll to the bottom and then click the Copy
button.
scripts.js
file in your text editor, and search for the optionTsParticles
object and then changed it to the new data that you copied before.
Here is a portion of the JavaScript code: (by default it is included!)
Note:
You can find more information about tsParticles
on this
Github Repository
CSS Modification:
We've added some CSS to modify its style. It is located on the assets/css/style.css
. (by default it is included!)
To add another particle container, create another div
with a different id
(e.g., tsparticles2
) and load it using tsParticles.load
with the new options or the same option as before.
Use the .filter
class to apply CSS filter effects to an element. Supported filters include
blur
,
brightness
,
contrast
,
drop-shadow
,
grayscale
, and
saturation
.
The following classes are part of our custom SCSS, not the default Bootstrap.
To view all modifications in full, check the main.css
file (The unminified version).
Note: To disable the filter, use the .filter-none
class or .filter-none-hover
on hover to disable the filter effects.
To apply the filter effects , use the .filter
class to define the desired effects. You can then combine it with one or more of the following classes like: .filter .blur-3xl .brightness-105 .grayscale-100
Note:
This is useful for applying shadows to irregular shapes, like text and SVG elements. For applying shadows to regular elements, you should probably use a box-shadow
instead like .shadow-sm
, .shadow
, and .shadow-lg
classes.
Use the .backdrop-filter
class to apply visual effects to the content behind an element. This allows you to create layered, frosted-glass effects without altering the CSS directly.
The supported backdrop filter effects is only blur
.
The following classes are part of our custom SCSS, not the default Bootstrap.
To view all modifications in full, check the main.css
file (The unminified version).
Note: To disable the backdrop filter, use the .backdrop-filter-none
class or .backdrop-filter-none-hover
on hover to disable the backdrop-filter effects.
To apply the backdrop filter effects , use the .backdrop-filter
class to define the desired effects. You can then combine it with the following classes like: .backdrop-filter .backdrop-blur-xl
Enhance your website's visual dynamics with classes for smooth transitions and animations. These utilities allow you to easily define how elements transition, manage timing functions, and apply various effects to improve the user experience.
The following classes are part of our custom SCSS, not the default Bootstrap.
To view all modifications in full, check the main.css
file (The unminified version).
Utilities for controlling which CSS properties transition..
Our Transform CSS classes provide a powerful way to apply visual effects like translation, rotation, and scaling. They leverage CSS variables for easy customization and are fully compatible with both LTR and RTL layouts.
The following classes are part of our custom SCSS, not the default Bootstrap.
To view all modifications in full, check the main.css
file (The unminified version).
Note: To disable all transformations, use the .transform-none
class or .transform-none-hover
class on hover.
To apply the transform , use the .transform
class to define the base class. You can then combine it with the following classes like: .transform .scale-150-hover
1 -
Use the .rotate-n{*}
, and .rotate-n{*}-hover
classes for negative values
2 -
Use the .rotate-x-{*}
, .rotate-y-{*}
, and .rotate-z-{*}
for x, y, and z axes. You can use the same logic for negative values and hover states for x, y, and z axes as we did for .rotate-{*}
classes.
Note:
Use the
.translate-x-n{*}
, .translate-x-n{*}-hover
,
.translate-y-n{*}
, .translate-y-n{*}-hover
,
.translate-z-n{*}
, and .translate-z-n{*}-hover
classes for negative values
Note:
Use the
.skew-y-n{*}
, .skew-y-n{*}-hover
,
.skew-x-n{*}
, and .skew-x-n{*}-hover
classes for negative values
Utilities for specifying the origin for an element's transformations.
Perspective: Utilities for controlling an element's perspective when placed in 3D space.
Perspective Origin: Utilities for controlling an element's perspective origin when placed in 3D space.
perspective-origin-top-start
perspective-origin-bottom-end