Monorepo di partenza per una media company moderna composta da:
apps/web: frontend pubblico in Next.js 16 (App Router, Tailwind, alias@/*)apps/cms: backend editoriale Strapi 5 in TypeScript, pronto per Postgresdocker-compose.yml: servizio Postgres 16 per sviluppo locale
L'obiettivo è offrire un CMS piacevole da usare, facile da gestire e completo di backend editoriale e frontend pubblico già pronti per contenuti pubblici e premium.
- Next.js 16 + Tailwind CSS per il canale pubblico e l'area utente
- Strapi 5 (TypeScript) come headless CMS
- PostgreSQL 16 come database primario (containerizzato)
- Stripe/Auth0/Supabase da integrare successivamente per pagamenti e autenticazione
- Node.js 20+
- npm 10+
- Docker Desktop (o compatibile) per eseguire Postgres
-
Clona il repository
git clone <repository-url> cd capibara
-
Avvia Postgres
docker compose up -d postgres
-
Configura Strapi
cd apps/cms cp env.example .env # compila le chiavi (app, jwt, salts) npm run develop
Le variabili nel file di esempio puntano al Postgres del compose (
localhost:5432, database/utente/passwordstrapi). -
Configura i permessi pubblici in Strapi
Dopo aver avviato Strapi e creato l'utente admin, vai su:
http://localhost:1337/admin- Settings → Users & Permissions → Roles → Public
- Per ogni content-type (Show, Video Episode, Podcast Episode, Newsletter Issue, Tag, Partner):
- Abilita find (per liste)
- Abilita findOne (per dettagli)
- Salva
Questo permetterà al frontend di leggere i contenuti pubblici senza autenticazione.
-
Avvia il frontend
cd apps/web npm run devIl frontend ora si connette automaticamente a Strapi e mostra i contenuti pubblici.
- Content model già pronto in Strapi:
show: hub per brand/video/podcast/newslettervideo-episode,podcast-episode,newsletter-issuetagepartnerper tassonomie e sponsorizzazioni (tutti con Draft & Publish abilitato)
- Configurare l'autenticazione (Auth0/Supabase) e i ruoli Strapi per distinguere visitatori e abbonati
- Integrare Stripe Billing e webhook che aggiornano lo stato utente nel CMS
- Centralizzare le chiamate alle API nel frontend creando moduli
lib/apiper rispettare la preferenza di codice ordinato - Agganciare componenti UI al Design System (palette dark, card modulari, stati locked)
Questo setup fornisce la base infrastrutturale per sviluppare velocemente sia l'area pubblica sia quella riservata agli abbonati.
Per ulteriori informazioni su deployment e configurazione:
- 📖 Guida Deployment - Opzioni di deployment per frontend e backend
- 🚀 Deploy su Vercel - Guida passo-passo per il frontend
- 🔧 Deploy su Render - Guida passo-passo per il backend
- ☁️ Setup Cloudinary - Configurazione storage immagini persistente
Questo progetto è rilasciato sotto licenza MIT. Vedi il file LICENSE per i dettagli.