Skip to content

HopelessMike/CinemaConstellation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

20 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒŒ Cinema Constellations

Cinema Constellations Next.js Three.js TypeScript License

Un Universo Cinematografico Interattivo in 3D

Esplora migliaia di film come stelle in una galassia tridimensionale, dove ogni film รจ connesso attraverso generi, temi e similitudini cinematografiche.

Demo Live โ€ข Report Bug โ€ข Richiedi Feature


โœจ Caratteristiche Principali

๐ŸŽฌ Visualizzazione 3D Immersiva

  • 5000+ film rappresentati come stelle interattive nello spazio
  • Clustering intelligente basato su generi e similitudini cinematografiche
  • Navigazione fluida con controlli orbit intuitivi
  • Effetti visivi spettacolari con animazioni e transizioni fluide

๐Ÿค– Intelligenza Artificiale

  • Analisi AI delle similitudini tra film con LLM
  • Caching intelligente per ottimizzare le performance
  • Suggerimenti personalizzati basati sulle connessioni cinematografiche

โšก Performance Ottimizzate

  • Level of Detail (LOD) dinamico che si adatta alle prestazioni
  • Frustum Culling per renderizzare solo elementi visibili
  • Lazy Loading progressivo dei dati
  • 60 FPS target con adattamento automatico della qualitร 

๐Ÿ“ฑ Multipiattaforma

  • Responsive Design per desktop, tablet e mobile
  • Touch Controls ottimizzati per dispositivi mobili
  • Fullscreen Mode per esperienza immersiva
  • Cursore spaziale personalizzato su desktop

๐Ÿš€ Quick Start

Prerequisiti

  • Node.js 18.0 o superiore
  • npm o yarn
  • Account Vercel (opzionale per deployment)
  • API Key OpenAI (opzionale per analisi AI)

Installazione

  1. Clona il repository
git clone https://github.com/yourusername/cinema-constellations.git
cd cinema-constellations
  1. Installa le dipendenze
npm install
# o
yarn install
  1. Configura le variabili d'ambiente
cp .env.example .env.local

Modifica .env.local:

# OpenAI API (opzionale)
OPENAI_API_KEY=sk-...

# Supabase (opzionale per caching)
NEXT_PUBLIC_SUPABASE_URL=https://...
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
  1. Aggiungi i dati dei film

Inserisci il file movie-data.json nella cartella public/:

[
  {
    "id": 19995,
    "title": "Avatar",
    "overview": "Descrizione...",
    "genres": ["Azione", "Avventura"],
    "poster_path": "https://...",
    "x": 4.45,
    "y": 7.19,
    "z": 4.63,
    "cluster_id": 43,
    "neighbor_ids": [285, 206647],
    "release_year": 2009,
    "duration": 162,
    "rating": 7.592,
    "director": "James Cameron"
  }
]
  1. Avvia il server di sviluppo
npm run dev
# o
yarn dev

Apri http://localhost:3000 nel browser.


๐Ÿ“ Struttura del Progetto

cinema-constellations/
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ api/
โ”‚   โ”‚   โ”œโ”€โ”€ movies/          # API per caricamento film
โ”‚   โ”‚   โ””โ”€โ”€ llm-analysis/    # API analisi AI
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ StarField.tsx    # Campo stellare 3D principale
โ”‚   โ”‚   โ”œโ”€โ”€ Star.tsx         # Componente stella/film
โ”‚   โ”‚   โ”œโ”€โ”€ ClusterSphere.tsx # Visualizzazione cluster
โ”‚   โ”‚   โ”œโ”€โ”€ SpaceCursor.tsx  # Cursore spaziale custom
โ”‚   โ”‚   โ”œโ”€โ”€ LoadingScreen.tsx # Schermata caricamento
โ”‚   โ”‚   โ””โ”€โ”€ MovieDetailsDialog.tsx # Dettagli film
โ”‚   โ”œโ”€โ”€ page.tsx             # Pagina principale
โ”‚   โ”œโ”€โ”€ layout.tsx           # Layout app
โ”‚   โ””โ”€โ”€ globals.css          # Stili globali
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ movieStore.ts        # State management
โ”‚   โ”œโ”€โ”€ types.ts             # TypeScript types
โ”‚   โ”œโ”€โ”€ utils.ts             # Utility functions
โ”‚   โ””โ”€โ”€ db.ts                # Database helpers
โ”œโ”€โ”€ public/
โ”‚   โ”œโ”€โ”€ movie-data.json      # Dataset film
โ”‚   โ””โ”€โ”€ Cinema-Avatar.png    # Logo app
โ””โ”€โ”€ package.json

๐ŸŽฎ Controlli

Desktop

  • ๐Ÿ–ฑ๏ธ Drag sinistro: Orbita attorno all'universo
  • ๐Ÿ“œ Scroll: Zoom in/out
  • ๐Ÿ–ฑ๏ธ Drag destro: Pan della camera
  • ๐ŸŽฏ Click su stella: Apri dettagli film
  • ๐Ÿ” Hover su stella: Mostra titolo

Mobile

  • ๐Ÿ‘† Un dito: Ruota camera
  • ๐Ÿค Pizzica: Zoom in/out
  • ๐Ÿ‘†๐Ÿ‘† Due dita drag: Pan camera
  • ๐Ÿ“ฑ Tap su stella: Apri dettagli

๐Ÿ”ง Configurazione Avanzata

Database Supabase

Per abilitare il caching delle analisi AI:

  1. Crea database su Vercel
vercel postgres create cinema-cache
  1. Inizializza tabelle
npm run db:init

Integrazione OpenAI

  1. Ottieni API key da platform.openai.com
  2. Aggiungi in .env.local:
OPENAI_API_KEY=sk-your-key

Personalizzazione

Colori per Genere

Modifica lib/movieStore.ts:

const colorMap = {
  'Azione': '#ff6b6b',
  'Commedia': '#ffe66d',
  // Aggiungi altri...
}

Performance Tuning

In components/StarField.tsx:

const getMaxStarsToRender = () => {
  switch (levelOfDetail) {
    case 'low': return 300
    case 'medium': return 600
    default: return 1000
  }
}

๐Ÿ“Š Scripts Disponibili

npm run dev          # Avvia server sviluppo
npm run build        # Build produzione
npm run start        # Avvia produzione
npm run lint         # Linting codice
npm run type-check   # Verifica TypeScript
npm run db:init      # Inizializza database

๐Ÿš€ Deployment

Vercel (Consigliato)

  1. Installa Vercel CLI
npm i -g vercel
  1. Deploy
vercel

Docker

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]

๐Ÿค Contributing

Contribuzioni sono benvenute! Per contribuire:

  1. Fork il progetto
  2. Crea un branch (git checkout -b feature/AmazingFeature)
  3. Commit modifiche (git commit -m 'Add AmazingFeature')
  4. Push al branch (git push origin feature/AmazingFeature)
  5. Apri Pull Request

Linee Guida

  • Segui lo stile di codice esistente
  • Aggiungi test per nuove features
  • Aggiorna documentazione se necessario
  • Assicurati che il build passi

๐Ÿ“ˆ Performance

Metriche Target

  • FPS: 60 (desktop), 30+ (mobile)
  • Time to Interactive: < 3s
  • Lighthouse Score: 90+
  • Bundle Size: < 500KB gzipped

Ottimizzazioni Implementate

  • โœ… Dynamic Level of Detail (LOD)
  • โœ… Frustum Culling
  • โœ… Lazy Loading
  • โœ… Texture Atlasing
  • โœ… Instance Rendering
  • โœ… Worker Threads per calcoli pesanti

๐Ÿ› Troubleshooting

Problema: Performance lenta

  • Riduci numero stelle visibili in StarField.tsx
  • Disabilita effetti particelle nelle impostazioni
  • Usa Chrome/Edge per migliori performance WebGL

Problema: Film non caricano

  • Verifica che movie-data.json sia in public/
  • Controlla formato JSON sia valido
  • Verifica console per errori

Problema: Analisi AI non funziona

  • Verifica API key OpenAI in .env.local
  • Controlla limiti rate API
  • Sistema ha fallback automatici

๐Ÿ“ Licenza

Distribuito sotto licenza MIT. Vedi LICENSE per maggiori informazioni.


๐Ÿ‘ฅ Team


Your Name

๐Ÿ’ป ๐ŸŽจ

๐Ÿ™ Acknowledgments


โฌ† Torna su

Made with โค๏ธ and โ˜• in Italy ๐Ÿ‡ฎ๐Ÿ‡น

About

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors