Everything you need to know about the architecture, technology stack and requirements of uwAdmin6.
Reliable, proven technologies with zero exotic dependencies.
Modular pattern with separation of concerns and native multilingual support.
Each module follows a standardised structure:
/uw-admin/admin/{modulo}/
├── index.php # Lista con filtri
├── form.php # Create/Edit
├── ajax/ # Operazioni async
│ ├── delete.php
│ ├── toggle-*.php
│ └── reorder.php
└── includes/ # Componenti riutilizzabili
24 modules implemented with this pattern
Selective activation per project
Polymorphic pattern with separate tables:
# Tabella principale
news (id, data_pubblicazione, attivo)
# Tabella traduzioni
news_traduzioni (
id, news_id, lingua_id,
titolo, slug, contenuto,
UNIQUE(news_id, lingua_id)
)
9 languages natively supported
SEO-friendly URLs per language: /it/news/titolo
Single upload, 7 automatic formats:
| Format | Size | Usage |
|---|---|---|
s | 150px | Thumbnail |
m | 300px | Card |
l | 600px | Content |
xl | 1200px | Hero |
xxl | 1920px | Full HD |
original | - | Backup |
crop | Custom | Ritaglio |
4 roles with granular per-module permissions:
| Role | Read | Write | Delete | Publish |
|---|---|---|---|---|
| Super Admin | ||||
| Admin | ||||
| Editor | ||||
| Viewer |
Active theme configurable from admin with development theme support:
Priorita risoluzione tema:
1. Tema sviluppo (se abilitato + IP/cookie)
2. Tema attivo (da database)
3. Fallback a 'default'
Granular override: customise only the files you need
Development theme: test new themes without affecting visitors
Authorisation: IP whitelist or secret cookie
Complete system with SMTP email and secure token:
Token: 64 char hex (random_bytes)
Scadenza: 1 ora
Anti-enumeration: messaggio generico
SMTP: PHPMailer con fallback mail()
Built-in modal on the login page (Alpine.js)
8 email preferences configurable from admin
reCAPTCHA v3 optional for anti-spam
Zero-dependency built-in system for GDPR and ePrivacy compliance:
Cookie Banner (2 livelli):
1. Barra fissa: Accetta | Rifiuta | Personalizza
2. Modal: toggle per categoria cookie
Blocco preventivo script:
- GA4 caricato SOLO dopo consenso
- Script custom bloccati fino ad accettazione
- reCAPTCHA classificato come tecnico
Cookie: uw_cookie_consent (base64 JSON, 365gg)
Policy: generate automaticamente IT/EN
18 preferences in database (10 privacy + 8 cookie)
PHP Classes: CookieConsent + PrivacyPolicy
Frontend: Alpine.js cookie-consent.js
Full OWASP Top 10 protection and best practices.
100% prepared statements with parameter binding via MySQLi.
$db->query($sql, [$id], 'i');
Output encoding with htmlspecialchars() on all user data.
htmlspecialchars($data, ENT_QUOTES, 'UTF-8')
Unique per-session token on every POST form.
<input type="hidden" name="csrf_token" value="...">
Hashing with PASSWORD_BCRYPT and cost factor 12.
password_hash($pwd, PASSWORD_BCRYPT, ['cost' => 12])
5 failed attempts \u{2192} 15-minute lockout. Anti brute-force.
max_attempts: 5, lockout: 900s
IP + User Agent binding. ID regeneration post-login.
session_regenerate_id(true);
Invisible anti-spam protection with score-based validation (0.0-1.0).
$recaptcha->isValid(null, 'login');
Compatible with most hosting providers.
Optional: imagick for advanced image processing
Supported external services and APIs.
A WordPress-style REST API that turns the CMS into an "AI-ready" endpoint: manage your content by talking to an AI assistant (Claude, ChatGPT, Gemini…), through open standards.
Inside the CMS (PHP): it receives HTTP+JSON requests and acts on content. Around 19 resources/modules covered.
An npm package that connects AI assistants to the API. It is self-documenting: it discovers the available functions on its own.
An admin page that generates the keys and provides copy-paste instructions for each assistant.
MCP (Model Context Protocol) and OpenAPI 3.0. The architecture is AI-agnostic by design: no vendor lock-in, and it will keep working with future models without buying anything again.
Dedicated keys for each connected app, shown only once and revocable, with the permissions of the individual user.
Each key can be limited to specific modules or actions.
Content created by AI stays invisible to the public until it is published by hand.
AI edits to published content stay online, are flagged and can be undone (restoring the previous text).
Who, what, when, from which app/IP — all visible in a dedicated panel.
Configurable hourly request cap for each key, to prevent abuse.
Payloads with per-language translations (it/en/…), consistent with the CMS.
Uploading photos to a gallery with automatic format generation.
Positioning items via AI, just like the panel's drag-and-drop.
A new API module = a single class; it appears automatically among the AI's tools.
Natural-language sentences that become content in the CMS, ready to review.
“Publish a news post titled "Saturday concert" with this text and this photo.”
“Update the English biography by adding the latest award received.”
“Create the event on June 20 at 9:00 PM at the Teatro Comunale.”
“Upload these 8 photos to the concert gallery and put them in this order.”
“Move the Corriere press review to the top.”
| Aspect | WordPress + AI plugins | uwAdmin6 REST API |
|---|---|---|
| Multi-AI | Separate plugins per single vendor, fragmented | A single API, open standards, AI-agnostic |
| Publishing safety | Varies by plugin | Native AI drafts: nothing goes live without human approval |
| Edits to live content | Risk of overwriting | Non-destructive + restore of previous text |
| Traceability | Depends on the plugin | Audit log built into the CMS |
| New content types | Depends on the plugin | One class → AI tool automatically |
Integrated e-commerce system with full product, order and payment management.
No limit on product types. You can sell any physical, digital product or service. Some examples:
Dual gateway with PCI-compliant handling:
Adaptive 4-step checkout:
5 order statuses with complete workflow:
Flexible promotions with compound rules:
Integrated sales dashboard:
Get in touch for a technical consultation or to request a personalised demo.
This website uses technical cookies and, with your consent, analytics cookies to improve your experience. Cookie Policy
Essential for the website to function. They cannot be disabled.
Help us understand how visitors interact with the website by collecting information anonymously.