25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 

50 satır
2.1 KiB

  1. // Feature flags compilati nel bundle. Modifica e ricostruisci (npm run build) per applicare.
  2. // Sotto-percorso pubblico del portale. '' = servito sulla radice.
  3. // Es. '/cards' → tutto risponde sotto https://host/cards/ (dietro reverse proxy).
  4. // Build-time: deve combaciare con basePath in next.config.ts (che lo importa da qui).
  5. export const BASE_PATH = '/cards';
  6. export const EXTERNAL_LINK_ENABLED = true;
  7. // Mostra il bottone "Save as Factory Preset (dev)" nell'admin.
  8. // È una funzione developer: tienila a false in produzione, true solo sulla macchina
  9. // dove serve preparare/aggiornare il preset di fabbrica.
  10. // Il bottone "Factory Reset" e lo stato del preset restano comunque sempre visibili
  11. // nell'admin (operazione ammessa per chiunque abbia accesso a /cards/admin).
  12. // L'endpoint POST /api/admin/factory-preset resta sempre attivo: un developer
  13. // può creare il preset anche via curl, indipendentemente da questo flag.
  14. export const FACTORY_PRESET_SAVE_ENABLED = false;
  15. // Font di default se il portale non ne ha impostato uno.
  16. // Lascia stringa vuota per usare il font di sistema (Arial).
  17. // Per usare un font, scrivi il nome esatto del file presente in data/fonts/ (es. "Geist-Variable.woff2").
  18. export const DEFAULT_FONT = '';
  19. // Limiti caratteri per tutti i campi testuali compilabili dall'admin.
  20. // Validati lato server (app/api/cards/route.ts, app/api/portals/route.ts) e
  21. // usati lato client come maxLength + contatore (app/admin/page.tsx).
  22. export const TEXT_LIMITS = {
  23. card: {
  24. title: 200,
  25. shortDescription: 500,
  26. fullContent: 20_000,
  27. actionUrl: 2000,
  28. },
  29. portal: {
  30. title: 200,
  31. welcomeText: 1000,
  32. },
  33. } as const;
  34. // Dimensioni massime upload per famiglia di file (in byte).
  35. // Usati lato server in app/api/upload/route.ts; sforare → 413.
  36. // Nota: i video grandi vengono comunque transcodificati (può durare minuti).
  37. const MB = 1024 * 1024;
  38. export const UPLOAD_LIMITS = {
  39. image: 25 * MB, // 25 MB
  40. pdf: 20 * MB, // 20 MB (pdfjs lato browser non regge bene molto di più)
  41. video: 1024 * MB, // 1 GB
  42. font: 5 * MB, // 5 MB (i font web sono tipicamente 50-500 KB; cap di sicurezza)
  43. } as const;