This section explains all the technical terms you'll encounter.
HTML (HyperText Markup Language)
<div>, <p>, <button> to define content<h1>Hello World</h1> creates a headingCSS (Cascading Style Sheets)
color: blue; makes text blueJavaScript
Webpage vs Website
index.html)Browser
SCSS (Sassy CSS)
.scssSass (Syntactically Awesome Style Sheets)
Variable
$primary: blue; - now you can use $primary anywhere instead of typing blueNesting
.card {
.title {
// Styles for .title inside .card
}
}
Mixin
@mixin rounded {
border-radius: 10px;
}
.button {
@include rounded;
}
Import
@import 'variables'; brings in _variables.scssPartial
_variables.scssCompile/Compilation
Bootstrap
Component
Utility Class
text-center centers text, p-3 adds paddingGrid System
<div class="row">
<div class="col-md-6">Left half</div>
<div class="col-md-6">Right half</div>
</div>
Responsive
Breakpoint
Node.js (or just "Node")
NPM (Node Package Manager)
npm installPackage
package.json
node_modules
npm installScript
"build": "sass src/scss:dist/css"npm run buildDependency
Directory
Path
src/scss/_variables.scss/home/user/project/src/scss/_variables.scss)../scss/_variables.scss)Root
Source (src)
Distribution (dist)
Extension
.html, .css, .scss, .jsSelector
p { } /* All <p> elements */
.button { } /* Elements with class="button" */
#header { } /* Element with id="header" */
Property
color, padding, borderValue
blue, 10px, solidRule/Rule Set
.button { /* Selector */
color: blue; /* Property: value; */
padding: 10px;
}
Class
<div class="card">
<p class="card">
Multiple elements can have the same class.
ID
<div id="header">
Only one element should have a specific ID.
Declaration
color: blue;Pseudo-class
a:hover { } /* When hovering over link */
a:focus { } /* When link is focused */
input:disabled { } /* When input is disabled */
Media Query
@media (min-width: 768px) {
/* Styles for screens 768px and wider */
}
Hex Code
#ff0000 is red#RRGGBB (Red Red Green Green Blue Blue)RGB (Red Green Blue)
rgb(255, 0, 0) is redRGBA (Red Green Blue Alpha)
rgba(255, 0, 0, 0.5) is semi-transparent redOpacity
Contrast
px (Pixels)
16px is always 16 pixelsrem (Root EM)
1rem = 16px by default2rem = 32pxem
% (Percent)
width: 50% = half the parent's widthvh (Viewport Height)
100vh = full height of viewportvw (Viewport Width)
100vw = full width of viewportBox Model
Padding
Margin
Border
Flexbox
display: flex;Grid
Build
npm run buildCompile
Watch/Watch Mode
npm run watchTerminal/Command Line
IDE (Integrated Development Environment)
Syntax
Comment
// This is a comment
/* This is also a comment */
Q: Do I need to know how to code to use this?
A: You need basic knowledge, but this documentation teaches you everything step-by-step. Start with the BEGINNERS_GUIDE.md.
Q: Can I use this for commercial projects?
A: Yes! This theme is MIT licensed, meaning you can use it for any purpose, including commercial projects.
Q: Do I need an internet connection to develop?
A: After initial setup (installing packages), you can develop offline. However, if using Google Fonts or CDN resources, those need internet.
Q: Will this work with WordPress/React/Vue/etc?
A: The compiled CSS (css/custom.css) works with any framework or CMS. Just link to it like any CSS file.
Q: Which version of Node.js should I install?
A: Install the LTS (Long Term Support) version from nodejs.org. As of 2024, that's version 20.x.
Q: How much disk space does this project need?
A: About 200-300 MB after installing all packages (mostly in node_modules).
Q: Can I delete node_modules to save space?
A: Yes, but you'll need to run npm install again before you can build. Delete it when you're not working on the project if you need space.
Q: Do I need to install Bootstrap separately?
A: No! Running npm install installs Bootstrap and all other dependencies automatically.
Q: Can I change just one color without affecting everything?
A: Yes! Bootstrap uses specific variables. For example, to change only button colors, modify the button-specific variables without changing $primary.
Q: How do I add my company's brand colors?
A: Define your colors in _variables.scss, then assign them to Bootstrap's theme color variables:
$company-blue: #1a2b3c;
$primary: $company-blue;
Q: Can I use images in my theme?
A: Yes! Put images in a folder like src/images/, then reference them in CSS:
.hero {
background-image: url('../images/hero-bg.jpg');
}
Q: How do I make everything bigger/smaller?
A: Change the base font size and spacer:
$font-size-base: 1rem; // Bigger: 1.125rem, Smaller: 0.875rem
$spacer: 1rem; // Bigger: 1.25rem, Smaller: 0.75rem
Q: Can I use this theme with the regular Bootstrap CSS?
A: No, this replaces Bootstrap's CSS. But you can use Bootstrap's JavaScript (bootstrap.bundle.min.js).
Q: What's the difference between .css and .scss files?
A:
.scss files are source code (you edit these).css files are compiled output (generated automatically).css, not .scssQ: Why do I need to build/compile?
A: Browsers can't read SCSS files. Building converts your SCSS to CSS that browsers understand.
Q: Can I edit the CSS file directly instead of SCSS?
A: You can, but don't! The CSS file gets overwritten every time you build. Always edit SCSS files.
Q: What does "!default" mean?
A:
$primary: blue !default;
Means: "Use blue unless someone already defined $primary elsewhere." It allows overriding.
Q: What's the difference between @import and @use?
A:
@import is old Sass syntax (being deprecated)@use is new syntax (better, but not fully compatible with Bootstrap yet)@import for Bootstrap compatibilityQ: Why does the build show deprecation warnings?
A: These are warnings about future Sass versions. They don't affect functionality now. You can ignore them.
Q: How long should a build take?
A: First build: 5-15 seconds. Subsequent builds: 2-5 seconds. Watch mode rebuilds: 1-3 seconds.
Q: Can I speed up builds?
A: Watch mode (npm run watch) is fastest because it only rebuilds changed files.
Q: Do I need to build before viewing the demo?
A: The project comes pre-built, so you can view demo/index.html immediately. Build only when you make changes.
Q: What if I get "out of memory" errors?
A: Increase Node's memory limit:
export NODE_OPTIONS="--max-old-space-size=4096"
Then try building again.
Q: Why doesn't my color look the same in different browsers?
A: Monitor calibration and browser color profiles vary. This is normal. Colors should be very similar though.
Q: What's a good contrast ratio for accessibility?
A:
Q: How do I know if my colors are accessible?
A: Use online tools like WebAIM Contrast Checker. Input your foreground and background colors.
Q: Should I use px or rem?
A: Use rem for most things (better accessibility). Use px for:
Q: What's the difference between margin and padding?
A:
Q: What screen sizes should I design for?
A: Bootstrap's breakpoints:
Test all three ranges.
Q: How do I make something only show on mobile?
A:
<div class="d-block d-md-none">Mobile only</div>
Q: How do I make something only show on desktop?
A:
<div class="d-none d-md-block">Desktop only</div>
Q: Can I add custom breakpoints?
A: Yes, but it's complex. Better to use Bootstrap's existing breakpoints.
Q: Why does my site look weird on iPhone/Android?
A: Make sure you have the viewport meta tag:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Q: How do I change button styles?
A: Modify button variables in _variables.scss:
$btn-padding-y: 0.5rem;
$btn-padding-x: 1rem;
$btn-border-radius: 0.25rem;
Q: Can I create custom button colors?
A: Yes! Add to theme colors:
$theme-colors: (
"primary": $primary,
"my-custom": #ff6b6b
);
Then use: <button class="btn btn-my-custom">Button</button>
Q: How do I make tables more compact?
A: Use the .table-sm class:
<table class="table table-sm">
Or change the table padding variables.
Q: Can I change the navbar height?
A: Yes, modify navbar padding:
$navbar-padding-y: 0.5rem;
Q: What's the best workflow for developing?
A:
npm run watchQ: Should I edit demo/index.html?
A: Yes, it's there for testing. Or create your own HTML files.
Q: How do I add my HTML page?
A:
mypage.html anywhere<link rel="stylesheet" href="path/to/css/custom.css">
Q: Can I organize my SCSS files differently?
A: Yes! Create more partial files and import them in custom.scss:
@import 'variables';
@import 'my-custom-file';
@import 'another-file';
Q: How do I use this theme on my live website?
A:
npm run buildcss/custom.css to your serverjs/bootstrap.bundle.min.js to your serverQ: Do I need to upload node_modules?
A: No! Only upload the dist folder (or just the files in it).
Q: Do I need to upload src folder?
A: No, only if you want to edit SCSS on the server (unusual). Usually just upload dist.
Q: Can I rename custom.css?
A: Yes, but update the link in your HTML:
<link rel="stylesheet" href="my-theme.css">
Q: My changes aren't showing up. Why?
A: Common causes:
npm run buildQ: I got an error. What do I do?
A:
Q: How do I reset everything if I break something?
A:
# Delete generated files
rm -rf dist node_modules
# Reinstall
npm install
npm run build
Q: Can I undo my changes?
A: If using Git:
git checkout -- path/to/file.scss
If not using Git, you'll need to manually revert or restore from backup.
Q: Should I comment my code?
A: Yes! Explain why you made changes:
// Increased button padding for better mobile touch targets
$btn-padding-y: 0.625rem;
Q: How should I name custom classes?
A: Use descriptive, lowercase names with hyphens:
.user-profile-card { } // Good
.Card123 { } // Bad
.usrPrflCrd { } // Bad
Q: Should I use !important?
A: Avoid it if possible. It makes styles hard to override later. Use more specific selectors instead.
Q: How do I organize my custom styles?
A: Group related styles together with comments:
// =============================
// Custom Components
// =============================
// User Profile Card
.user-profile-card { }
// Dashboard Widgets
.dashboard-widget { }
Q: I'm stuck. What should I learn first?
A: In this order:
Q: What resources do you recommend?
A:
Q: How long does it take to learn this?
A: Basic customization (colors, spacing): 1-2 days
Q: Is web development hard?
A: The basics are easy. Advanced techniques take time. This documentation makes it easier!
npm install # Install all packages
npm run build # Build once
npm run watch # Build and watch for changes
npm run dev # Build and watch
node --version # Check Node version
npm --version # Check NPM version
src/scss/_variables.scss → Edit colors, sizes, spacing
src/scss/custom.scss → Add custom styles
css/custom.css → Generated CSS (don't edit!)
demo/index.html → Test page
package.json → Project configuration
$variable-name: value !default; // Define variable
property: $variable-name; // Use variable
property: $variable-name * 2; // Math with variable
property: darken($variable-name, 10%); // Function with variable
.class-name { // Class selector
property: value; // Declaration
}
#id-name { // ID selector
property: value;
}
.parent .child { // Descendant selector
property: value;
}
.element:hover { // Hover state
property: value;
}
@media (min-width: 768px) { // Media query
.responsive {
property: value;
}
}
This glossary should help you understand the terminology used throughout the documentation. Refer back to it whenever you encounter unfamiliar terms!