🇮🇩 Bahasa Indonesian
Project ini adalah template untuk hotspot di mikrotik , menggunakan bahasa pemrograman dasara sederhana (HTML, CSS, JS). Project ini dirancang supaya mudah dikembangkan dan kamu dapat fork repository ini dan melakukan perubahan dan pull ke repository ini untuk meminta perubahan, rapi strukturnya, dan mudah dideploy ke server statis.
- Struktur file sederhana & modular
- Header / Footer global (inject via
global.js) - Build & Dev
- Formatting otomatis (Prettier)
static
├─ assets/
│ ├─ favicon.js
│ └─ images/
├─ src/
│ ├─ js/
│ │ ├─ global.js
│ │ └─ jquery/
│ │ └─ global.js
│ └─ css/
│ └─ styles.css
├─ *.html # Page
└─ md5.js
- Node.js (opsional, untuk workflow dev/build)
- Browser modern/old (untuk produksi HTML/CSS/JS murni)
- Buka
login.htmldi browser.- Untuk hasil terbaik gunakan server lokal (bukan
file://) , bisa menggunakan extension VSCODE yaitu LiveServer.
- Untuk hasil terbaik gunakan server lokal (bukan
- Install dependensi:
# npm
npm install
# pnpm
pnpm install- Jalankan mode development:
# npmu
npm run dev
# pnpm
pnpm run dev
# -> buka http://127.0.0.1:8080 (atau alamat yang ditampilkan)- Build untuk produksi:
# npm
npm run build
# pnpm
pnpm run buildBisa dicompress ke zip ( lokasi: build/*.zip ) lalu di ekstrak kemudian bisa diaplikasikan ke mikrotiknya
# npm
npm run compress
# pnpm
pnpm run compress- Fork → branch fitur (
feature/your-name) → commit → PR. - Ikuti gaya kode: jalankan
npm run formatsebelum commit. - Bila menambahkan dependency baru, update
README&package.json.
-
global.jstidak melakukan inject header/footer:- Pastikan
global.jsdimuat setelah DOM (deferatau sebelum</body>). - Cek
consoledi DevTools untuk error. - Jika template memakai placeholder MikroTik
$(...), jangan masukkan placeholder keglobal.jseksternal — inject melalui inline bootstrap di HTML (mis.window.SHELL = {...}).
- Pastikan
-
CHAP / MikroTik captive-portal:
- Pastikan
md5.jsdimuat sebelum kode yang memanggilhexMD5. - Pastikan form
name="login"& hiddenname="sendin"ada.
- Pastikan
- Lisensi: MIT
🇬🇧 English Leanguage
This project is a template for hotspots on Mikrotik, using simple basic programming languages (HTML, CSS, JS). This project is designed to be easy to develop. You can fork this repository, make changes, and pull them into this repository to request changes. It has a neat structure and is easy to deploy to a static server.
- Simple & modular file structure
- Global header/footer (injected via
global.js) - Build & Dev
- Automatic formatting (Prettier)
/
├─ index.html
├─ about.html
├─ src/
│ ├─ js/
│ │ ├─ global.js
│ │ └─ main.js
│ ├─ css/
│ │ └─ styles.css
│ └─ assets/
│ └─ images/
├─ includes/ # (optional) header/footer for fetch()
├─ public/ # build output (if any)
├─ package.json
├─ .prettierrc
└─ README.md
- Node.js (optional, for dev/build workflow)
- Modern/old browser (for pure HTML/CSS/JS production)
- Open
login.htmlin your browser.- For best results, use a local server (not
file://) , you can use the VSCODE extension LiveServer.
- For best results, use a local server (not
- Install dependencies:
# npm
npm install
# pnpm
pnpm install- Run development mode:
# npm
npm run dev
# pnpm
pnpm run dev
# -> open http://127.0.0.1:8080 (or the address displayed)- Build for production:
# npm
npm run build
# pnpm
pnpm run buildCan be compressed into a zip file (location: build/*.zip), then extracted and applied to the Mikrotik
# npm
npm run compress
# pnpm
pnpm run compress- Fork → feature branch (
feature/your-name) → commit → PR. - Follow coding style: run
npm run formatbefore committing. - When adding new dependencies, update
README&package.json.
-
global.jsdoes not inject header/footer:- Ensure
global.jsis loaded after the DOM (deferor before</body>). - Check the
consolein DevTools for errors. - If the template uses MikroTik placeholders
$(...), do not include placeholders in externalglobal.js— inject them via inline bootstrap in HTML (e.g.,window.SHELL = {...}).
- Ensure
-
CHAP / MikroTik captive-portal:
- Ensure
md5.jsis loaded before the code that callshexMD5. - Ensure the
name=“login”form & hiddenname=“sendin”exist.
- Ensure
- License: MIT



