The PWA template is a plain HTML, CSS and JavaScript build of the Smarthr mobile-first UI - no framework or build step is required to run it. It adds the three things that make a website installable as a Progressive Web App: a manifest.json web app manifest, a service worker for offline caching, and an install-prompt script for the "Add to Home Screen" flow.
This same PWA UI is also the visual source of truth reused by the Tailwind build, so both templates render identically.
Technologies
HTML5
SCSS / Bootstrap
JavaScript
System Requirements
- Text Editor: Visual Studio Code (or) Sublime Text
- Browser: Modern browsers (Chrome, Firefox, Safari, Edge)
- HTTP server: a local/live server, or any host over HTTP(S) - manifest and service worker registration are both blocked on
file:// - Node.js + Dart Sass (optional) - only needed if you want to recompile the SCSS source
- Installable Progressive Web App (manifest + service worker)
- "Add to Home Screen" install prompt (
install.js) - Offline page caching with auto-reload on reconnect (
offline.js) - Bootstrap-based, fully responsive, mobile-first layout
- No build step - open or serve the static files directly
- SCSS source included for full style customization
- Employee modules: Directory, Attendance, Leaves, Tasks, Projects, Payroll
- Clients, Estimates, Invoices & Expense Tracking
- Admin Suite: Dashboard, Employee List, Attendance Analytics, Performance, Assets
- AI HR Assistant, Voice & Video Call screens
- RTL variant (
template-rtl) - Compatible Browsers: Chrome, Firefox, Safari, Edge
Project Overview
The PWA template is a static site: every page and asset lives directly under template/ (or the RTL template-rtl/ variant), with no node_modules or build output.
smarthr/
└── mobile/
└── pwa/
├── template/
│ ├── assets/
│ │ ├── css/ → compiled style.css (+ .min / .map)
│ │ ├── scss/ → main.scss, _variables.scss, components/, layout/, pages/, utils/
│ │ ├── fonts/
│ │ ├── images/
│ │ │ └── icons/ → icon-128x128.png ... icon-512x512.png
│ │ ├── js/ → script.js, install.js, offline.js, ...
│ │ └── plugins/
│ ├── index.html, appointments.html, chat.html, ... (40+ pages)
│ ├── manifest.json
│ ├── service-worker.js
│ └── pwa-sw.js
│
└── template-rtl/
└── (same structure, RTL variant)
How it Works
The manifest is not linked in <head> - it is attached dynamically by assets/js/script.js, and only over http:/https:, since browsers ignore the manifest and block service workers on file://.
if (!document.querySelector('link[rel="manifest"]')) {
var manifestLink = document.createElement("link");
manifestLink.rel = "manifest";
manifestLink.href = "pwa-manifest.json";
document.head.appendChild(manifestLink);
}
manifest.json defines the app name, start URL, standalone display mode, theme/background colors and the icon set (128px up to 512px) used when the app is installed to a device's home screen:
{
"name": "Smarthr-PWA",
"short_name": "Smarthr-PWA",
"start_url": "index.html",
"display": "standalone",
"background_color": "#3E4EB8",
"theme_color": "#2F3BA2",
"icons": [
{ "src": "assets/images/icons/icon-192x192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "assets/images/icons/icon-512x512.png", "sizes": "512x512", "type": "image/png" }
]
}
Two Cache Strategies
Two service worker files ship with the template - service-worker.js and pwa-sw.js. script.js picks the right one at runtime based on the current page's markup, so the app shell and standalone pages can cache independently.
if ("serviceWorker" in navigator) {
window.addEventListener("load", function () {
var swFile = document.querySelector(".doc-wrapper, .pwa-install-bar") ? "pwa-sw.js" : "service-worker.js";
navigator.serviceWorker.register(swFile);
});
}
Each worker pre-caches its own list of pages, styles and images under a versioned CACHE_NAME (e.g. static-cache-v3). To cache an additional page or asset, add its path to the FILES_TO_CACHE array and bump the cache name so returning visitors pick up the new list. assets/js/offline.js complements this by reloading the page automatically once the connection comes back online, and assets/js/install.js listens for the browser's beforeinstallprompt event to drive the "Add to Home Screen" button.
Prerequisites
Node.js (optional)
Only required if you plan to edit and recompile the SCSS source. To just run or customize the pre-built CSS/HTML/JS, skip this step.
https://nodejs.org/en/download/
Installation Steps
Unzip Template Files
After downloading, extract the
Smarthr package. Inside, you will find the pwa/template folder, which contains all necessary files.
Copy Files to Server
Open the pwa/template folder, then copy all
files and paste them into your localhost directory (e.g.,
htdocs for XAMPP, www for WAMP) or directly into your web
server's root folder. Serving over HTTP(S) - rather than opening index.html from disk - is required for the manifest and service worker to register.
Run in Browser
Once the files are in place, open localhost/smarthr/pwa/template/index.html (or your domain's equivalent path) in any modern browser. On mobile, or via Chrome DevTools' install icon on desktop, you'll be able to install it to the home screen.
Replace the logo image at assets/img/logo.png, or edit the markup directly - the same brand link appears at the top of the sidebar on every page:
<a href="index.html" class="side-brand">
<img src="assets/img/logo.png" alt="Smarthr">
</a>
Remember to also refresh the install/home-screen icons in assets/images/icons/ (referenced from manifest.json) and assets/images/favicon.png if you change the branding.
The default font is Plus Jakarta Sans, imported and mapped to Sass variables in assets/scss/_variables.scss:
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');
$font-family-primary: 'Plus Jakarta Sans', 'poppinsregular', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
After editing the SCSS, recompile it to assets/css/style.css with the Dart Sass CLI:
sass --watch main.scss:../css/style.css in scss folder
Every color used across the template is a CSS custom property, defined once at the top of assets/scss/utils/_variables.scss (compiled straight through into :root):
:root {
--primary: #3a57c4;
--primary-hover: #2f48a8;
--primary-soft: #eef1fb;
--accent: #6c4fd6;
--success: #28a745;
--warning: #ffc107;
--danger: #dc3545;
--info: #009efb;
}
Changing a Color
Update the value in _variables.scss and recompile Sass - because every component (buttons, badges, cards, tabs) references these custom properties instead of hard-coded hex values, one change re-tints the whole app.
A dedicated Right-to-Left build ships as a sibling folder, pwa/template-rtl/, mirroring every page and asset in template/ with layout, spacing and text-direction flipped for Arabic/Hebrew-style locales.
RTL Demo
Serve pwa/template-rtl/index.html the same way as the LTR template to preview the RTL layout.
Smarthr is developed by Dreams Technologies and is available under both Envato Extended & Regular License options.
Regular License
Usage by either yourself or a single client is permitted for a single end product, provided that end users are not subject to any charges.
Extended License
For use by you or one client in a single end product for which end users may be charged.
What are the main differences between the Regular License and the Extended License?
If you operate as a freelancer or agency, you have the option to acquire the Extended License, which permits you to utilize the item across multiple projects on behalf of your clients.
| NAME | URL |
|---|---|
| Bootstrap | https://getbootstrap.com/ |
| web.dev PWA Guides | https://web.dev/explore/progressive-web-apps |
| Fontawesome | https://fontawesome.com/ |
| Google Fonts | https://fonts.google.com/ |
Need Support?
If this documentation does not address your questions, please feel free to contact us via email at support@dreamstechnologies.com
Reach the team at GMT+5:30. Typical reply within 12–24 hours on weekdays — rarely up to 48 hrs during holidays. Support is available to verified buyers for template-related issues.
Contact SupportImportant Note : We strive to offer top-notch support, but it's only available to verified buyers and for template-related issues such as bugs and errors. Custom changes and third-party module setups are not covered.
Do you need a customized application for your business?
If you need a customized application for your business depends on your specific requirements and goals, Please contact us. Customization can be the key to success, ensuring your project perfectly aligns with your unique goals and requirements.
Don't Miss Out on the Benefits of Customization!
Unlock the potential of your project. It's time to ensure your project isn't another cookie-cutter solution but truly unique and effective one.
Discover how customization can make a difference in your project's success. Let's create a solution that's as unique as your vision!
We'll tailor the application to meet your specific needs and preferences.
We will upload your website to the server and ensure it is live.
Thank You
Thank you once again for downloading Smarthr.
We hope you're enjoying your experience, and we kindly request that you take a moment to share your valuable review and rating with us.
