Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,050 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kazitel PBX

Laravel 12 + Filament 3 admin panel for FusionPBX — Shibganj, Bogura, Bangladesh


Stack

Layer Technology
Framework Laravel 12
Admin UI Filament 3
Auth/RBAC spatie/laravel-permission
App DB SQLite (dev) / MySQL (prod)
PBX DB PostgreSQL (FusionPBX)
Theme Amber #fd9c03 — dark sidebar

Quick Start

1. Clone & install

git clone https://github.com/your-org/kazitel-pbx.git
cd kazitel-pbx

composer install
npm install

2. Environment

cp .env.example .env
php artisan key:generate

Edit .env:

# App
APP_NAME="Kazitel PBX"
APP_URL=http://localhost

# Company strip
COMPANY_NAME="Kazitel"
COMPANY_ADDRESS="Shibganj, Bogura, Bangladesh"
COMPANY_PHONE="+8801XXXXXXXXX"
COMPANY_EMAIL="support@kazitel.io"

# FusionPBX PostgreSQL connection
FUSIONPBX_DB_HOST=127.0.0.1
FUSIONPBX_DB_PORT=5432
FUSIONPBX_DB_DATABASE=fusionpbx
FUSIONPBX_DB_USERNAME=fusionpbx
FUSIONPBX_DB_PASSWORD=your_password

3. Database (app DB — SQLite/MySQL)

touch database/database.sqlite   # SQLite only

php artisan migrate
php artisan db:seed

4. Create admin user

php artisan make:filament-user

Or seed one:

php artisan tinker
>>> \App\Models\User::factory()->create(['name'=>'Admin','email'=>'admin@kazitel.io','password'=>bcrypt('secret')]);
>>> $user = \App\Models\User::first();
>>> $user->assignRole('superadmin');

5. Build assets & run

npm run build
# or for development:
# npm run dev

php artisan serve

Open http://localhost:8000/admin — login with your admin credentials.


Project Structure

kazitel-pbx/
├── app/
│   ├── Filament/
│   │   ├── Pages/
│   │   │   └── PbxDashboard.php        # Main PBX dashboard page
│   │   └── Resources/
│   │       ├── UserResource.php        # Laravel users (MySQL)
│   │       └── FusionPBX/             # 117 FusionPBX resources (PostgreSQL)
│   │           ├── Extensions/
│   │           ├── Dialplans/
│   │           ├── Gateways/
│   │           ├── CallCenterQueues/
│   │           └── ... (all FusionPBX modules)
│   ├── Http/
│   │   └── Controllers/
│   │       ├── AuthController.php      # Web login/logout
│   │       ├── DashboardController.php # User dashboard
│   │       └── Api/FusionPBX/         # REST API controllers (117 resources)
│   ├── Models/
│   │   ├── User.php                   # Laravel auth user (SQLite/MySQL)
│   │   └── FusionPBX/                 # All FusionPBX models (PostgreSQL)
│   │       ├── BaseFusionPbxModel.php  # UUID PKs, insert_date/update_date
│   │       ├── Extension.php
│   │       ├── Gateway.php
│   │       └── ... (all models)
│   └── Providers/
│       ├── AppServiceProvider.php
│       └── Filament/
│           └── AdminPanelProvider.php  # All 117 resources + nav groups
├── bootstrap/
│   ├── app.php
│   └── providers.php
├── config/
│   ├── app.php
│   ├── company.php                     # COMPANY_* env variables
│   ├── database.php                    # fusionpbx pgsql connection
│   └── permission.php
├── database/
│   ├── factories/
│   ├── migrations/
│   └── seeders/
├── resources/
│   ├── css/
│   │   ├── app.css                     # Tailwind v4
│   │   └── filament/admin/theme.css    # Kazitel amber theme
│   ├── js/
│   │   └── app.js
│   └── views/
│       ├── auth/login.blade.php        # Login page
│       ├── company/
│       │   ├── contact.blade.php       # /contact
│       │   └── offer.blade.php         # /offer
│       ├── dashboard/index.blade.php   # /dashboard (post-login)
│       ├── filament/
│       │   ├── admin/topbar/
│       │   │   └── company-strip.blade.php
│       │   └── pages/
│       │       └── pbx-dashboard.blade.php
│       └── layouts/site.blade.php      # Public site layout
├── routes/
│   ├── api.php                         # API + FusionPBX routes
│   ├── api_fusionpbx.php              # All 117 FusionPBX REST routes
│   ├── web.php                         # Web routes
│   └── console.php
├── .env.example
├── composer.json
├── package.json
├── vite.config.js
└── ui-preview.html                     # Static UI preview (no server needed)

Navigation Groups (Filament)

Group Resources
Accounts Extensions, Users, Groups, Permissions
Dialplan Dialplans, Destinations, Domains, Number Translations
Applications IVR, Ring Groups, Call Flows, Voicemail, Recordings, Music on Hold
Call Center Queues, Agents, Tiers, FIFO, Follow Me
Devices Devices, Profiles, Vendors, Keys, Lines
SIP & Gateways Gateways, SIP Profiles, Sofia Global Settings
Contacts Contacts, Phones, Emails, Groups, Addresses
Messaging Email Templates, Queues, Fax
Reports XML CDRs, CDR Extensions, Flows, Logs
System Default Settings, Modules, Databases, Variables
Administration Menus, Group Permissions, Event Guard Logs

API

All 117 FusionPBX resources are exposed as a REST API under /api/fpbx/*.

GET    /api/fpbx/extensions
POST   /api/fpbx/extensions
GET    /api/fpbx/extensions/{uuid}
PUT    /api/fpbx/extensions/{uuid}
DELETE /api/fpbx/extensions/{uuid}

# ... same pattern for all 117 resources

Full route list: routes/api_fusionpbx.php


Database Connections

Connection name Driver Used for
sqlite (default) SQLite Laravel users, sessions, cache, jobs
fusionpbx PostgreSQL All FusionPBX models (BaseFusionPbxModel)

Theming

Brand color: #fd9c03 (FusionPBX amber)
Theme file: resources/css/filament/admin/theme.css

Key CSS variables:

:root {
  --kazitel-accent: #fd9c03;
}

Requirements

  • PHP ≥ 8.2
  • Node.js ≥ 18
  • FusionPBX running on PostgreSQL (accessible from app server)
  • SQLite or MySQL for the Laravel app database

License

MIT © Kazitel

About

Open Source VoIP Billing Solution http://www.astppbilling.org | Report a bug https://inextrix.atlassian.net/jira/projects

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages