{"elements":[{"id":1,"title":"DressAPI - Vesti il tuo Database, Ottieni una REST API completa","body":"<!-- Section 1: Come Funziona -->\n<section class=\"da-section da-section-alt\">\n  <div class=\"container\">\n    <h2 class=\"text-center mb-4\">Come Funziona<\/h2>\n    <div class=\"row g-4\">\n      <div class=\"col-md-4\">\n        <div class=\"da-step\">\n          <div class=\"da-step-number\"><i class=\"bi bi-database\"><\/i><\/div>\n          <h4>1. Progetta il Database<\/h4>\n          <p>Usa SQL standard con semplici convenzioni di naming. Prefissa le chiavi esterne con <code>id_<\/code> per il rilevamento automatico. Usa <code>*_img<\/code> per le immagini, <code>*email*<\/code> per i campi email e <code>*password*<\/code> per l'hashing delle password.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"col-md-4\">\n        <div class=\"da-step\">\n          <div class=\"da-step-number\"><i class=\"bi bi-terminal\"><\/i><\/div>\n          <h4>2. Installa DressAPI<\/h4>\n          <p>Basta un comando Composer. Imposta le credenziali del database in <code>config.php<\/code> e punta il web server alla directory <code>www\/<\/code>.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"col-md-4\">\n        <div class=\"da-step\">\n          <div class=\"da-step-number\"><i class=\"bi bi-check-circle\"><\/i><\/div>\n          <h4>3. La tua API e' Pronta<\/h4>\n          <p>Operazioni CRUD complete, autenticazione JWT, ACL basato sui ruoli, cache intelligente, paginazione, filtri e ordinamento disponibili immediatamente.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- Section 2: Esempio Rapido -->\n<section class=\"da-section da-section-dark\">\n  <div class=\"container\">\n    <h2 class=\"text-center mb-4\">Esempio Rapido<\/h2>\n    <div class=\"row g-4\">\n      <div class=\"col-lg-6\">\n        <h4>La tua Tabella SQL<\/h4>\n        <div class=\"da-code-block\"><span class=\"cm\">-- SQL standard<\/span>\n<span class=\"kw\">CREATE TABLE<\/span> <span class=\"fn\">product<\/span> (\n  <span class=\"str\">id<\/span> <span class=\"type\">INT UNSIGNED<\/span> <span class=\"kw\">AUTO_INCREMENT PRIMARY KEY<\/span>,\n  <span class=\"str\">name<\/span> <span class=\"type\">VARCHAR(120)<\/span> <span class=\"kw\">NOT NULL<\/span>,\n  <span class=\"str\">price<\/span> <span class=\"type\">DECIMAL(10,2)<\/span> <span class=\"kw\">NOT NULL<\/span>,\n  <span class=\"str\">id_category<\/span> <span class=\"type\">INT UNSIGNED<\/span>,\n  <span class=\"str\">product_img<\/span> <span class=\"type\">VARCHAR(255)<\/span>,\n  <span class=\"str\">description<\/span> <span class=\"type\">TEXT<\/span>,\n  <span class=\"kw\">FOREIGN KEY<\/span> (<span class=\"str\">id_category<\/span>)\n    <span class=\"kw\">REFERENCES<\/span> <span class=\"fn\">category<\/span>(<span class=\"str\">id<\/span>)\n);<\/div>\n      <\/div>\n      <div class=\"col-lg-6\">\n        <h4>Endpoint Generati Automaticamente<\/h4>\n        <div class=\"da-code-block\"><span class=\"kw\">GET<\/span>    \/product              <span class=\"cm\"># Elenca tutti<\/span>\n<span class=\"kw\">GET<\/span>    \/product\/<span class=\"str\">42<\/span>           <span class=\"cm\"># Leggi uno<\/span>\n<span class=\"kw\">GET<\/span>    \/product\/<span class=\"str\">full<\/span>         <span class=\"cm\"># Con nomi risolti dalle relazioni<\/span>\n<span class=\"kw\">POST<\/span>   \/product              <span class=\"cm\"># Crea<\/span>\n<span class=\"kw\">PUT<\/span>    \/product\/<span class=\"str\">42<\/span>           <span class=\"cm\"># Aggiorna<\/span>\n<span class=\"kw\">DELETE<\/span> \/product\/<span class=\"str\">42<\/span>           <span class=\"cm\"># Elimina<\/span>\n<span class=\"kw\">GET<\/span>    \/product\/<span class=\"str\">ob\/price-DESC<\/span> <span class=\"cm\"># Ordina<\/span>\n<span class=\"kw\">GET<\/span>    \/product\/<span class=\"str\">p\/1,10<\/span>      <span class=\"cm\"># Pagina<\/span>\n<span class=\"kw\">GET<\/span>    \/product\/<span class=\"str\">name~shirt<\/span>   <span class=\"cm\"># Filtra<\/span><\/div>\n        \n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- Section 3: Funzionalità' Principali -->\n<section class=\"da-section\">\n  <div class=\"container\">\n    <h2 class=\"text-center mb-4\">Funzionalità' Principali<\/h2>\n    <div class=\"row g-4\">\n      <div class=\"col-lg-3 col-sm-6\">\n        <div class=\"da-feature-card\">\n          <div class=\"feature-icon\"><i class=\"bi bi-lightning-charge\"><\/i><\/div>\n          <h4>CRUD Senza Codice<\/h4>\n          <p>Endpoint REST automatici generati dallo schema del database. Nessun codice boilerplate necessario.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"col-lg-3 col-sm-6\">\n        <div class=\"da-feature-card\">\n          <div class=\"feature-icon\"><i class=\"bi bi-hdd-stack\"><\/i><\/div>\n          <h4>Multi-Database<\/h4>\n          <p>Supporto per MySQL, PostgreSQL, Oracle e SQL Server con un ORM dinamico che legge la struttura a runtime.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"col-lg-3 col-sm-6\">\n        <div class=\"da-feature-card\">\n          <div class=\"feature-icon\"><i class=\"bi bi-speedometer2\"><\/i><\/div>\n          <h4>Cache Intelligente<\/h4>\n          <p>Cache su file o Redis con invalidazione automatica alla modifica dei dati. Connessione DB lazy per evitare overhead.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"col-lg-3 col-sm-6\">\n        <div class=\"da-feature-card\">\n          <div class=\"feature-icon\"><i class=\"bi bi-shield-lock\"><\/i><\/div>\n          <h4>Auth + ACL<\/h4>\n          <p>Autenticazione JWT con controllo accessi basato sui ruoli e permessi granulari per modulo e ruolo.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"col-lg-3 col-sm-6\">\n        <div class=\"da-feature-card\">\n          <div class=\"feature-icon\"><i class=\"bi bi-window-stack\"><\/i><\/div>\n          <h4>Multi-Frontend<\/h4>\n          <p>CMS con Bootstrap 5, oppure usalo come backend API per Vue, React, Angular e Ajax.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"col-lg-3 col-sm-6\">\n        <div class=\"da-feature-card\">\n          <div class=\"feature-icon\"><i class=\"bi bi-diagram-3\"><\/i><\/div>\n          <h4>Relazioni Automatiche<\/h4>\n          <p>Gestione automatica delle relazioni tra tabelle, anche di tipo many-to-many (crosstable). Le foreign key vengono risolte con \/full.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"col-lg-3 col-sm-6\">\n        <div class=\"da-feature-card\">\n          <div class=\"feature-icon\"><i class=\"bi bi-code-slash\"><\/i><\/div>\n          <h4>Template Engine<\/h4>\n          <p>Sintassi simile a Twig con binding {{variable}}, modificatori e page frame modulari.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"col-lg-3 col-sm-6\">\n        <div class=\"da-feature-card\">\n          <div class=\"feature-icon\"><i class=\"bi bi-translate\"><\/i><\/div>\n          <h4>Multi-Lingua<\/h4>\n          <p>Traduzione integrata con funzione _T() e modalita' auto-learning che rileva automaticamente nuove stringhe.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- Section: CTA Consulenza -->\n<section class=\"da-cta-banner\">\n  <div class=\"container\">\n    <h2>Cerchi una Soluzione Web Completa?<\/h2>\n    <p>Dall'e-commerce allo streaming, dai siti istituzionali ai pannelli di amministrazione &mdash; realizziamo tutto, direttamente, senza intermediari.<\/p>\n    <a href=\"\/consulting\" class=\"btn btn-light btn-lg\">Scopri i Nostri Servizi<\/a>\n    <p class=\"da-cta-sub\">Contatto diretto con lo sviluppatore. 10+ anni di esperienza.<\/p>\n  <\/div>\n<\/section>\n\n<!-- Section 4: Installazione -->\n<section class=\"da-section da-section-alt\">\n  <div class=\"container text-center\">\n    <h2>Installazione<\/h2>\n    <p class=\"lead mb-4\">Inizia in pochi secondi con Composer:<\/p>\n    <div class=\"da-install-box\">\n      <span class=\"prompt\">$ <\/span>composer require dressapi\/core\n    <\/div>\n    <p class=\"text-muted mt-3\">Per il CMS: <code>composer require dressapi\/cms<\/code> &mdash; Solo API: <code>composer require dressapi\/api<\/code><\/p>\n    <p class=\"text-muted\">Requisiti: PHP 8.2+, Apache o Nginx, MySQL o MariaDB.<\/p>\n    <div class=\"mt-4\">\n      <a href=\"https:\/\/git.dressapi.com\/explore\/projects\/\" class=\"btn btn-outline-primary btn-lg me-2\" target=\"_blank\" rel=\"noopener\">\n        <i class=\"bi bi-git\"><\/i> Vedi su GitLab\n      <\/a>\n      <a href=\"https:\/\/git.dressapi.com\/explore\/projects\/tutorials\" class=\"btn btn-outline-secondary btn-lg\" target=\"_blank\" rel=\"noopener\">\n        <i class=\"bi bi-book\"><\/i> Tutorial\n      <\/a>\n    <\/div>\n  <\/div>\n<\/section>","description":"DressAPI e un framework PHP open source che genera automaticamente una REST API completa dal tuo schema database. Zero codice necessario.","meta_keywords":"dressapi,rest api,php framework,open source,crud,database,automatic api,orm","visible":"yes","status":"public","creation_date":"2025-01-01","id__user":1,"priority":0,"groupname":"HOMEPAGE"}],"module":"pages","permissions":{"can_read":true},"main_item_title":"title","related_tables":[{"name":"Newsonpage","module":"newsonpage","FK":"id_cmspage","permissions":[]}],"page_info":{"table":"","key":"id","url":"\/pages","url_list":"\/pages","filters":{"id":["=","1"]},"pagination":{"total_items":23,"page":1,"total_pages":2,"step":1,"items_per_page":20,"url_prev":"\/pages","url_next":"\/pages\/p\/2","url_tmpl":"\/pages\/p\/[[p]]","url_tmpl_with_order":"\/pages\/p\/[[p]]\/ob\/[[ob]]"},"order":{"field":"id","type":"DESC","url_tmpl":"\/pages\/p\/[[p]]"},"module":{"title":"Pages","description":"List of pages","name":"pages"},"current":{"title":"Pages","description":"List of pages","name":"pages","url":"\/"}},"components":{"alert":{"alert1":[{"type":"warning","message":"OK COMPONENT!"},{"type":"danger","message":"ERROR COMPONENT!"}]}},"messages":[]}