About this software
About Linkhive — ISP Billing, Customer Portal & MikroTik / RADIUS Automation
Linkhive is a Laravel 12 (PHP 8.3) application that bills broadband and Wi-Fi subscribers and pushes service changes to MikroTik routers or a FreeRADIUS SQL database. It includes an admin panel with role-based permissions, a customer self-service portal, a reseller panel with prepaid wallets, and a responsive technician web app at /tech. Online payments go through Stripe, PayPal, SSLCommerz, bKash and Nagad drivers plus bank transfer, and the code verifies each payment with the gateway's API before booking it. The digest also shows a token-based REST API, 42 reports, a fibre network map, an installer, Docker files and a test suite. There is no native mobile app, and the digest does not show a language pack beyond English via __().
Why Linkhive — ISP Billing, Customer Portal & MikroTik / RADIUS Automation
What makes it better
than the alternatives
- 01
Verified payments
Online payments are completed only after Gateway::verify() confirms amount and reference with the gateway's API, not from data posted to a return URL.
- 02
Idempotent billing automation
Renewals are claimed once through invoices.fulfilled_at, so repeat runs or retried webhooks do not create a second invoice.
- 03
Router changes never block payments
Provisioner logs failures in ProvisioningLog and flags the subscription, so an offline router does not roll back a payment.
- 04
Zone and reseller data isolation
Staff queries use visibleTo() scopes and permission middleware, with tests covering IDOR, zone and reseller separation.
- 05
Runs without a build step
Blade and vanilla JS with no Node build; SQLite for trials, MySQL for production, web cron fallback, Docker setup included.
Customers & Subscriptions
- Customer create
- edit
- suspend
- resume
- disconnect and terminate
- Change package with renew
- change or invoice modes and credit for unused time
- PPPoE and hotspot connection types
- CSV customer export
- Leads with conversion to customers
Packages & Speed Profiles
- Packages with validity in days or months
- Speed profiles with burst settings
- pushed to routers on save
- Discount coupons by percent or fixed amount
Invoicing & Payments
- Manual and automatic invoices
- printable invoices and receipts
- Cash payment recording and pending bank-transfer approval
- Invoice and payment CSV exports
- Prepaid auto-renew
- reminders
- grace days and automatic cut-off
Payment Gateways
- Stripe and PayPal
- SSLCommerz
- bKash and Nagad drivers
- Demo card gateway for demos
Network Automation
- MikroTik RouterOS API client
- plain or TLS
- FreeRADIUS SQL driver
- Online session view
- Fibre map of POP
- OLT
- splitter
- ODP and customer on OpenStreetMap
Resellers & Vouchers
- Reseller panel with prepaid wallet and ledger
- Voucher generation and printable voucher sheets
Support & Field Work
- Tickets in admin and customer portal
- Work orders for installs and repairs
- Technician web app with job and customer lookup
- Portal announcements by zone
Reports & Finance
- 42 reports via a report catalogue
- Expenses with categories for profit reporting
- Dashboard with MRR
- collections and dues
Access & Security
- Six staff roles with a permission matrix
- Two-factor authentication (TOTP) for staff
- Sanctum API tokens with read or write abilities and expiry
- Audit log and security headers with CSP nonces
Operations & Setup
- Web installer and artisan install command
- Database backups from the admin
- Notifications via SMS
- WhatsApp and Telegram settings
- Docker Compose
- CI workflow and tests
| Language | Version | Framework | Used for | Share of code |
|---|---|---|---|---|
| PHP | — | — | Web, API | 93.2% |
| SQL | — | — | Database | 3.2% |
| CSS | — | — | Styling | 2.5% |
| JavaScript | — | — | Front-end | 0.9% |
| Shell | — | — | Scripts | 0.1% |
- Primary language
- PHP 8.3+ (CI runs 8.3 and 8.4)
- Framework
- Laravel 12
- Database
- MySQL 8 / MariaDB 10.6+ (SQLite for trials)
- Authentication
- Session-based sign-in for staff and customers (separate guards), two-factor authentication (TOTP), and Sanctum personal access tokens for the REST API
- Licence
- Single-site
- Screens
- 90
- Database tables
- 32
- Supported languages
- English (UK) strings wrapped in __() for translation; no other language packs are in the digest. Not RTL.
- Browser support
- Modern evergreen browsers. Responsive Blade pages with vanilla JavaScript and no build step; no specific browser test matrix is documented in the digest.
| Minimum | Recommended | |
|---|---|---|
| CPU | 2 vCPU | 2 vCPU |
| RAM | 2 GB | 4 GB |
| OS | Linux: PHP 8.3+ (ctype, curl, gd, mbstring, openssl, pdo, xml), Composer 2, MySQL 8+/MariaDB 10.6+ | Linux: PHP 8.3+ (ctype, curl, gd, mbstring, openssl, pdo, xml), Composer 2, MySQL 8+/MariaDB 10.6+ |
| Est. monthly hosting | $20 | $20 |
The repository ships docker-compose.yml, a PHP Dockerfile and an nginx service. Set APP_KEY, DB_PASSWORD and DB_ROOT_PASSWORD in the environment file first. ```bash cp linkhive-app/.env.example linkhive-app/.env echo "base64:$(openssl rand -base64 32)" # paste into APP_KEY in linkhive-app/.env # also set DB_PASSWORD and DB_ROOT_PASSWORD in linkhive-app/.env docker compose --env-file linkhive-app/.env up -d --build ``` Then open http://localhost:8080 (APP_PORT).
Run from the linkhive-app folder on a server with PHP 8.3+, Composer and MySQL 8 / MariaDB 10.6+. ```bash cd linkhive-app composer install --no-dev --optimize-autoloader cp .env.example .env php artisan key:generate # set DB_* in .env, then: php artisan linkhive:install --no-interaction --email=you@example.co.uk ``` Point the web server document root at linkhive-app/public.
Upload the files, point the domain at linkhive-app/public, and open /install in the browser. The web installer writes .env for you.
Quality report
Manually reviewedHow to read the quality report
What this is. Every project on Vibe96 goes through an automated audit of its source code before a reviewer in Dubai checks it by hand. The score is out of 100; 75 is the minimum to be listed, and any single failing check blocks a listing regardless of the score.
- Security
- No real credentials in the code, every data-changing route protected, admin areas role-gated, no SQL built from user input.
- Code structure
- A developer can navigate and extend it: clear module boundaries, no giant files, little copy-paste.
- Docs & completeness
- The setup guide, example config, schema and required files the builder committed to are actually in the archive.
- Dependency health
- Packages pinned, no known critical vulnerabilities, no abandoned libraries in production paths.
- Build & deploy
- A clean machine can restore, build and start it by following the shipped instructions.
Warnings are problems that didn't block the listing; they stay visible here until a later version clears them. The audit reads the code — it does not run it — so always try the live demo before you buy. Lines of code are counted from the same audited archive.
Reviewer notes (4 minor)
Database layer appears disciplined, but the key files (schema, migrations, models, radius driver) were not visible; authz design looks strong, but routes and controllers were not visible so enforcement is unverified. None of these stop the software from working; the developer has been told and improvements come in a future update.
Versions & updates
No updates yet. New versions appear here with a changelog.
Buyers receive updates free for 1 year.
What you get
- </>Full source codeThe complete audited source, delivered as a download from your account. No obfuscation.
- ▤DocumentationSetup guide, architecture notes, CLAUDE.md and AGENTS.md.
- ↻One year of updatesEvery new version the builder publishes, free for 12 months.
- ♧30 days of supportInstallation and defect support through Vibe96 tickets.