Admin Service
The Admin Service is the central management interface for the Vecton platform. It handles tenant lifecycle management, user administration, platform configuration, and monitoring.
Architecture
Admin Frontend (Vue 3)
│
▼
Admin Backend (Laravel 12 + FrankenPHP)
│
├──▶ PostgreSQL (vecton_admin_db)
├──▶ Redis (cache, sessions, queues)
├──▶ RabbitMQ (async jobs)
├──▶ S3 / Rook-Ceph (file storage)
└──▶ Identity Service (auth)
Tech Stack
| Component | Technology |
|---|---|
| Backend | Laravel 12 + PHP 8.4 |
| Server | FrankenPHP (Octane) |
| Frontend | Vue 3 + TypeScript |
| Database | PostgreSQL 16 (dedicated DB per service) |
| Cache/Sessions | Redis 7 |
| Queue | RabbitMQ via php-amqplib |
| Object Storage | Rook-Ceph S3 (private + public buckets) |
Deployment
The Admin service runs in the vecton-admin Kubernetes namespace with:
| Component | Replicas | Sync Wave |
|---|---|---|
| Backend (FrankenPHP) | 2 | 1 |
Worker (queue:work) | 1 | 1 |
| Frontend (Nginx) | 2 | 1 |
| Redis | 1 | 3 |
| CronJob (scheduler) | 1 | 2 |
Credential Provisioning
On first deployment, a credential-generator Job (sync-wave -1) automatically creates:
| Secret | Contents |
|---|---|
vecton-admin-pg-credentials | PostgreSQL user, password, DATABASE_URL |
vecton-admin-rabbitmq-credentials | RabbitMQ user, password, vhost, AMQP URL |
vecton-admin-app-secrets | Laravel APP_KEY |
vecton-admin-redis-credentials | Redis host, port, password, URL |
s3-credentials | AWS access key, secret key, endpoint, buckets |
Features
Tenant Management
- Create Tenant — Provision new tenant with all services via DevOps API
- List/Search Tenants — View all tenants with status, plan, and resource usage
- Update Tenant — Modify configuration, feature flags, and plans
- Suspend/Activate — Temporarily disable or re-enable tenant access
- Delete Tenant — Clean removal of all tenant resources
User Management
- View and manage platform-wide users
- Assign roles and permissions
- Reset passwords and 2FA
- View login history and security events
Platform Monitoring
- Service health status across all namespaces
- Resource utilization (CPU, memory, storage)
- Queue depths and processing rates
- Error rates and alerts
API
Base URL
| Environment | URL |
|---|---|
| Production | https://admin.vecton.hu/api |
| Development | http://localhost:8002/api |
Key Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/tenants | List all tenants |
| POST | /api/tenants | Create new tenant |
| GET | /api/tenants/{id} | Get tenant details |
| PUT | /api/tenants/{id} | Update tenant |
| DELETE | /api/tenants/{id} | Delete tenant |
| POST | /api/tenants/{id}/suspend | Suspend tenant |
| POST | /api/tenants/{id}/activate | Activate tenant |
| GET | /api/users | List platform users |
| GET | /api/dashboard | Platform dashboard stats |
Authentication
All API requests require a valid Bearer token from the Identity Service:
curl -H "Authorization: Bearer {token}" \
https://admin.vecton.hu/api/tenants
Configuration
Key environment variables:
| Variable | Description | Example |
|---|---|---|
APP_URL | Backend URL | https://admin.vecton.hu |
DB_CONNECTION | Database driver | pgsql |
DB_HOST | PostgreSQL host | platform-postgres-pooler.postgresql.svc |
DB_DATABASE | Database name | vecton_admin_db |
QUEUE_CONNECTION | Queue driver | rabbitmq |
CACHE_STORE | Cache driver | redis |
SESSION_DRIVER | Session storage | redis |
FILESYSTEM_DISK | Default storage | s3 |
IDENTITY_API_URL | Identity service URL | https://identity.vecton.hu/api |
Development
# From the vecton/init directory
make dev-main
# Or directly
cd main/main-backend
php artisan serve --port=8002
# Frontend
cd main/main-frontend
npm run dev -- --port 5174
Database
The Admin backend uses its own PostgreSQL database (vecton_admin_db) with a dedicated user, created automatically by the credential-generator in production.
In development, it uses the shared vecton_db with the admin schema.
# Run migrations
php artisan migrate
# Seed with test data
php artisan db:seed
# Fresh start
php artisan migrate:fresh --seed