Tornar al Dashboard

Documentació del Projecte

Portfolio AdminKit - Sistema de Gestió de Contingut amb Administració

Descripció General

Aquest és un projecte web dual que combina un portfolio fotogràfic públic amb un panell d'administració complet per gestionar tot el contingut de manera dinàmica. El sistema està dissenyat per fotògrafs, artistes o creadors que necessiten mostrar el seu treball amb una presentació professional i gestionar-lo de manera eficient.

Concepte clau: Separació total entre la part pública (portfolio) i la part privada (administració), cadascuna amb el seu propi disseny i funcionalitats.

Arquitectura del Sistema

1. Frontend Portfolio (Àrea Pública)

  • Template: ProMan - Disseny modern i responsiu
  • Fitxer principal: index.php - Galeria amb filtres dinàmics
  • Detall: detall_post.php - Vista completa de cada projecte
  • Colors corporatius: Porpra (#6244C5) i Daurat (#FFC448)
  • Funcionalitat: Galeria filtrable per categories i etiquetes

2. Backend Admin (Àrea Privada)

  • Template: AdminKit v3.4.0 - Dashboard Bootstrap 5
  • Ubicació: /admin/
  • Funcionalitat: CRUD complet per tots els continguts
  • Seguretat: Sistema de login amb rols (administrador/lector)
  • Pàgines: Gestió de posts, categories, etiquetes, llibres, usuaris i tasques

3. Base de Dades

Nom: posts_adk
Motor: MySQL 8.4.4
Charset: utf8mb4_general_ci
Connexió: PDO (PHP Data Objects)

Stack Tecnològic

Backend

PHP 7.4+ MySQL 8.4.4 Apache 2.4 PDO Sessions PHP

Frontend Portfolio

Bootstrap 5 jQuery 3.4.1 Isotope (filtres) Fancybox 5.0 WOW.js (animacions) Typed.js Owl Carousel

Frontend Admin

Bootstrap 5 DataTables 1.13.7 SweetAlert2 Trix Editor 2.0.8 Feather Icons Highcharts

Estructura de Directoris

/posts_adk/ ├── index.php ← Portfolio públic (pàgina principal) ├── detall_post.php ← Detall de cada post/projecte ├── config.php ← Configuració BD i sessions ├── documentacio.php ← Aquesta pàgina │ ├── /admin/ ← Panell d'administració │ ├── index.php ← Dashboard principal │ ├── login.php ← Pàgina d'inici de sessió │ ├── posts.php ← Gestió de posts (CORRUPTE - NO USAR) │ ├── categories.php ← CRUD de categories │ ├── etiquetas.php ← CRUD d'etiquetes │ ├── books.php ← CRUD de llibres/PDFs │ ├── users.php ← Gestió d'usuaris │ ├── tasks.php ← Gestió de tasques │ ├── perfil_usuari.php ← Perfil personal │ ├── header.php ← Include HTML head + verificació sessió │ ├── sidebar.php ← Menú lateral + navbar superior │ ├── footer.php ← Scripts JS + tancament HTML │ ├── /css/app.css ← Estils AdminKit │ ├── /js/app.js ← Scripts AdminKit (Bootstrap 5) │ └── /img/ ← Imatges del dashboard │ ├── /img/ ← Imatges del portfolio │ └── /people/ ← Galeries per fotògraf │ ├── /css/ ← Estils del portfolio │ ├── bootstrap.min.css │ └── style.css │ ├── /js/ ← Scripts del portfolio │ └── main.js │ ├── /lib/ ← Llibreries frontend (self-hosted) │ ├── /isotope/ │ ├── /wow/ │ ├── /typed/ │ └── ... │ └── /scss/ ← Fonts SCSS de Bootstrap └── bootstrap.scss

Esquema de Base de Dades

Taula Descripció Camps Principals
posts Articles/projectes del portfolio title, excerpt, content, img, category_id, url, ins, face, youtube
categories Categories de posts name, svg
etiquetas Etiquetes/tags per filtrar name, svg
post_etiquetas Relació many-to-many posts-etiquetes post_id, etiqueta_id
books Llibres/PDFs descarregables title, img, pdf_url
post_books Relació many-to-many posts-llibres post_id, book_id
usuaris Comptes d'usuari del sistema nom_usuari, email, password_hash, rol, estat, imatge_perfil, biografia
tasques_projecte Gestió de tasques titol, descripcio, estat, prioritat, categoria, data_venciment
Important: Les relacions many-to-many permeten que un post tingui múltiples etiquetes i múltiples llibres associats.

Funcionalitats Principals

Portfolio Públic

  • Galeria filtrable amb Isotope (per categories i etiquetes)
  • Lightbox amb Fancybox per visualitzar imatges en gran
  • Animacions d'scroll amb WOW.js
  • Vista detallada de cada projecte amb xarxes socials
  • Disseny responsive (móvil, tablet, desktop)
  • Filtres generats dinàmicament des de la base de dades

Sistema d'Autenticació

  • Login segur amb sessions PHP
  • Contrasenyes hashejades amb password_hash()
  • Dos rols: administrador (accés total) i lector (només lectura)
  • Protecció de pàgines amb verificació de sessió
  • Logout segur amb destrucció de sessions

CRUD Complet (Admin)

  • Posts: Crear, editar, eliminar projectes amb editor WYSIWYG (Trix)
  • Categories: Gestió amb icones SVG personalitzables
  • Etiquetes: Tags amb icones SVG per filtrar el portfolio
  • Llibres/PDFs: Pujada i gestió de documents descarregables
  • Usuaris: Gestió completa amb upload d'avatars
  • Tasques: Sistema de gestió de projectes amb estats i prioritats

Perfil d'Usuari

  • Edició de dades personals (nom, email, biografia)
  • Canvi d'avatar amb previsualització en temps real
  • Canvi de contrasenya amb validació de l'actual
  • Vista d'informació del compte (rol, estat, data de registre)

Mesures de Seguretat

  • Prepared Statements: Totes les queries usen PDO amb placeholders (protecció SQL injection)
  • htmlspecialchars(): Escapament de tot l'output HTML (protecció XSS)
  • Password Hashing: Contrasenyes hashejades amb PASSWORD_DEFAULT
  • Sessions segures: Verificació de sessió en cada pàgina protegida
  • Validació d'uploads: Control de tipus de fitxer, mida i extensions permeses
  • Rols d'usuari: Control d'accés basat en permisos

Desplegament i Migració

Entorn Actual (Desenvolupament)

Sistema: Windows 10/11
Servidor: Apache 2.4 (C:\Apache24\htdocs\posts_adk)
Base de dades: MySQL 8.4.4
URL local: http://localhost/posts_adk/

Migració a VPS Ubuntu (https://estudijoanpuig.com/)

Codi preparat: S'han utilitzat rutes relatives (dirname(__DIR__)) en lloc de rutes absolutes de Windows, per tant el codi funcionarà directament a Ubuntu sense modificacions.

Passos per desplegar:

  1. Pujar tots els fitxers al servidor VPS via FTP/SFTP
  2. Exportar la base de dades: ESTRUCTURA_posts_adk.sql
  3. Importar la BD al MySQL del servidor
  4. Actualitzar credencials a config.php (host, user, password, database)
  5. Configurar permisos de carpetes: chmod 755 per directoris, chmod 644 per fitxers
  6. Permetre escriptura a /img/: chmod 775 img/
  7. Configurar virtual host d'Apache o Nginx
  8. Activar HTTPS amb Let's Encrypt (Certbot)

Problemes Coneguts i Limitacions

  • admin/posts.php CORRUPTE: El fitxer té contingut duplicat al final. Utilitzar categories.php com a plantilla per crear CRUD nous.
  • Modals Bootstrap: Actualment no funcionen correctament (problema amb la inicialització de Bootstrap 5).
  • CSS Admin pre-compilat: No hi ha fitxers SCSS font per personalitzar els estils d'AdminKit.
  • Formulari de contacte: Inactiu (es suggereix usar solució de htmlcodex.com).

Millores Futures Suggerides

  • Implementar paginació als llistats del portfolio
  • Afegir cerca de posts per text
  • Sistema de comentaris amb moderació
  • Estadístiques de visites amb Google Analytics
  • Galeria d'imatges múltiples per post (no només una imatge destacada)
  • Exportació de dades en CSV/Excel
  • Notificacions per email en esdeveniments importants
  • API REST per integració amb apps mòbils
  • Sistema de backup automàtic de la BD
  • Caché de galeria per millorar rendiment

Crèdits i Recursos

Template Portfolio: ProMan (HTMLCodex)
Template Admin: AdminKit v3.4.0
Framework CSS: Bootstrap 5.0
Icones: Font Awesome 5.15.4, Feather Icons
Llibreries JS: jQuery, Isotope, Fancybox, WOW.js, Typed.js, DataTables, SweetAlert2

Desenvolupat amb | Portfolio AdminKit © 2025

Preparat per desplegar a: https://estudijoanpuig.com/