MikroDex is a premium Windows desktop application for managing MikroTik hotspot networks. Built with a dark futuristic UI, real-time monitoring, and seamless router integration.
MikroDex brings a professional, glassmorphism-powered interface to MikroTik hotspot management. Whether you're an ISP technician or a network admin, MikroDex gives you full control β beautifully.
| Problem | MikroDex Solution |
|---|---|
| π€ Winbox is outdated & clunky | β Modern dark UI with smooth animations |
| π€ No real-time monitoring | β Live dashboard, auto-refresh every 10s |
| π€ No local data history | β SQLite β full session & usage history |
| π€ Slow user management | β One-click create, edit & delete users |
| π€ No offline access | β Works fully offline, no cloud needed |
| Live network statistics with auto-refresh every 10 seconds. Always know what's happening on your network at a glance. | One-click connection to any MikroTik router via REST API with auto-reconnect on drop. |
| Create, edit, and delete hotspot users with profile assignment, bandwidth control, and credential management. | Real-time view of every active session β IP, MAC, uptime, and data usage in one clean table. |
| Complete log of every user session β login/logout time, data consumed, and session duration. | Glassmorphism cards, neon glow accents, and buttery-smooth Framer Motion animations. |
| All your data stays on your machine. No cloud. No subscription. Full privacy. | Context isolation, disabled nodeIntegration, secure IPC bridge, and SQL prepared statements. |
| Layer | Technology | Purpose |
|---|---|---|
| π₯οΈ Desktop Framework | Electron | Cross-platform desktop app |
| βοΈ UI Library | React | Component-based interface |
| β‘ Build Tool | Vite | Fast dev server & bundler |
| π¨ Styling | TailwindCSS | Utility-first CSS |
| πΎ Database | SQLite / better-sqlite3 | Local data persistence |
| ποΈ State Management | Zustand | Global app state |
| ποΈ Animations | Framer Motion | Smooth UI transitions |
| π HTTP Client | Axios | Router API requests |
| π£ Icons | Lucide React | Clean icon set |
- Node.js v16 or higher β Download
- npm or yarn
- A MikroTik router with REST API enabled on port
8728
1. Clone the repository
git clone https://github.com/A3hiK/MikroDex.git
cd MikroDex2. Install dependencies
npm install3. Start in development mode
npm run electron-devπ‘ This starts the Vite dev server on
http://localhost:5173and launches the Electron app with hot reload.
4. Build for production
npm run electron-buildπ¦ Windows installer will be generated in the
out/directory.
MikroDex/
β
βββ π src/
β βββ π components/ # Reusable UI components
β β βββ Sidebar.jsx
β βββ π pages/ # Application pages
β β βββ Dashboard.jsx
β β βββ RouterConnection.jsx
β βββ π services/ # Business logic & API layer
β β βββ MikroTikService.js
β β βββ DatabaseService.js
β βββ π store/ # Zustand global state
β β βββ store.js
β βββ π styles/ # Tailwind CSS entry
β β βββ index.css
β βββ App.jsx # Root app component
β βββ main.jsx # React entry point
β
βββ π electron/
β βββ main.js # Electron main process
β βββ preload.js # IPC preload script
β
βββ π public/ # Static assets
βββ vite.config.js # Vite configuration
βββ tailwind.config.js # TailwindCSS config
βββ postcss.config.js # PostCSS config
βββ package.json
βββ index.html
| Parameter | Default | Notes |
|---|---|---|
| Host | 192.168.88.1 |
Your router's IP address |
| Port | 8728 |
MikroTik REST API port |
| Username | admin |
Router admin username |
| Password | β | Your router password |
Windows: C:\Users\{Username}\.mikrodex\database.db
import MikroTikService from './services/MikroTikService';
// Connect to router
const result = await MikroTikService.connect('192.168.88.1', 'admin', 'password');
// Get all online users
const onlineUsers = await MikroTikService.getOnlineUsers();
// Create a new hotspot user
const newUser = await MikroTikService.createHotspotUser({
name: 'testuser',
password: 'pass123',
profile: 'default'
});
// Delete a user
await MikroTikService.deleteHotspotUser('testuser');Supported Operations:
| Operation | Description |
|---|---|
connect() |
Establish connection to router |
disconnect() |
Close router connection |
getHotspotUsers() |
List all hotspot users |
createHotspotUser() |
Add a new user |
deleteHotspotUser() |
Remove a user |
getOnlineUsers() |
Get live active sessions |
getRouterInfo() |
Fetch router system details |
routers -- Saved router connection profiles
users -- Hotspot user records
usage_history -- Session logs with data usage
settings -- App configuration key-value store
login_history -- Login and logout event recordsimport DatabaseService from '../services/DatabaseService';
// Save a setting
DatabaseService.setSetting('theme', 'dark');
// Read a setting
const theme = DatabaseService.getSetting('theme');# ββ Development ββββββββββββββββββββββββββββββ
npm run dev # Vite dev server only
npm run electron-dev # Electron app + Vite β recommended
# ββ Production βββββββββββββββββββββββββββββββ
npm run build # Build React for production
npm run electron-build # Package Windows installer
# ββ Code Quality βββββββββββββββββββββββββββββ
npm run lint # Run ESLint
npm run format # Format with Prettier
npm run preview # Preview production buildEdit tailwind.config.js to adjust the color system:
colors: {
primary: '#6095ff', // Blue β buttons, links
accent: '#00f0ff', // Cyan β highlights
purple: '#b026ff', // Purple β badges
pink: '#ff006e', // Pink β alerts
dark: '#0f1419', // Deep background
surface: '#1a232f', // Card surface
}| Class | Usage |
|---|---|
.btn-primary |
Primary action buttons |
.btn-secondary |
Secondary / ghost buttons |
.card-glass |
Glassmorphism cards |
.badge |
Status indicator badges |
π΄ Connection Issues
- Verify the router IP address is reachable on your network
- Ensure MikroTik REST API is enabled on port
8728- Go to: Winbox β IP β Services β api-ssl / api
- Check firewall rules on both the router and your machine
- Confirm your username and password are correct
π΄ Database Issues
- To fully reset the database, delete this file:
C:\Users\{Username}\.mikrodex\database.db - Rebuild the native module:
npm rebuild better-sqlite3
π΄ Electron / Build Issues
- Clear the Vite cache β delete the
.vitefolder - Reinstall all dependencies from scratch:
rm -rf node_modules npm install
| Feature | Status |
|---|---|
| Context isolation in Electron | β Enabled |
nodeIntegration |
β Disabled |
| IPC communication via preload | β Secure |
| Form input validation | β All forms |
| SQL injection prevention | β Prepared statements |
1. Create component in src/pages/YourPage.jsx
2. Import it in src/App.jsx
3. Add a route in <Routes>
4. Add menu entry in src/components/Sidebar.jsx
1. Create file in src/services/YourService.js
2. Export as singleton instance
3. Import and use in your components
| Link | |
|---|---|
| π Website | mikrodex.pro.bd |
| π₯ Download | Latest Release |
| π Issues | Report a Bug |
| π¬ Developer | Jazabor Ashik |
MIT License β Free to use, modify, and distribute.
See the LICENSE file for full details.


