vccs
Composable charting components for Vue 3, ported from Recharts
Dati locali, sensori e simulazioni per confrontare interventi di adattamento.
Translation pending
DataTypeScript · CSSGitHub @marcobiondi-progOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
digital twin
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Web app (PWA installabile) per la mitigazione del calore in ambito urbano e vitivinicolo: casi studio, Decision Lab, dashboard, camera AR con riconoscimento AI e pannello di controllo.
Stack: TanStack Start (React 19, SSR), Tailwind CSS 4, Supabase (database, login, file), Nitro per il deploy.
supabase/migrations/20261019000000_init.sql e premi Run.npx supabase login, npx supabase link --project-ref <project-ref>, npx supabase db push.http://localhost:8080).http://localhost:8080/** e https://<tuo-dominio>/**.https://<project-ref>.supabase.co/auth/v1/callback e incolla Client ID e Secret.L'app usa sempre il progetto Supabase indicato in src/integrations/supabase/config.ts
(indirizzo e chiave pubblica sb_publishable_…, dati pubblici per natura). Per un altro progetto
cambia quei due valori. Le chiavi segrete restano fuori dal codice:
cp .env.example .env
Compila .env (e le Environment Variables della piattaforma di hosting) con la chiave segreta
SUPABASE_SERVICE_ROLE_KEY (Project Settings → API Keys) e le chiavi dei servizi esterni.
Senza OPENAI_API_KEY, GOOGLE_MAPS_API_KEY o PARALLEL_API_KEY l'app funziona lo stesso:
le relative funzioni mostrano "non configurato". Lo stato di ogni servizio si vede nel pannello admin.
I video promozionale e tutorial sono in public/videos/ (nomi in public/videos/LEGGIMI.txt).
Su tablet e desktop il tutorial parte da solo solo al primo accesso; su smartphone si apre a schermo intero in orizzontale.
npm install
npm run dev
Apri http://localhost:8080.
Registrati nell'app, poi nel SQL Editor di Supabase esegui (con la tua email):
insert into public.user_roles (user_id, role)
select id, 'admin' from auth.users where email = '[email protected]';
Ricarica la pagina: nel menu account compare Pannello di controllo (/admin).
Da lì puoi nominare altri amministratori senza tornare in SQL.
| Sezione | Funzioni |
|---|---|
| Panoramica | Numero utenti, admin, pareri in attesa, dashboard salvate; servizi configurati |
| Utenti | Ricerca, rendi/rimuovi admin, sospendi/riattiva, elimina (con i suoi file) |
| Pareri | Richieste di parere agli enti: filtra, approva/respingi/riapri, elimina |
| Fonti casi | Stato della ricerca delle pubblicazioni; pulsante Aggiorna ora |
| Servizio AI | Riattiva il riconoscimento AR se è in pausa per credito o chiave non valida |
| Registro | Ogni azione degli amministratori, con autore e data |
Tutte le azioni passano da funzioni server che verificano il ruolo admin con la chiave segreta: il browser non ha mai accesso diretto ai dati degli altri utenti.
npm run build
npm start # server Node su http://localhost:3000 (PORT per cambiarla)
npm run build produce .output/ (server + file statici). Nitro riconosce da solo Vercel, Netlify e
Cloudflare; per forzare una piattaforma: NITRO_PRESET=cloudflare-module npm run build.
Su Vercel imposta anche PWA_OUT_DIR=.vercel/output/static, così il service worker finisce nella cartella giusta.
Ricorda di impostare le stesse variabili di .env sulla piattaforma di hosting.
La ricerca giornaliera delle fonti dei casi studio è un endpoint protetto:
curl -X POST https://<tuo-dominio>/api/public/jobs/case-sources -H "Authorization: Bearer $CRON_SECRET"
Pianificalo con il cron della tua piattaforma oppure da Supabase (Integrations → Cron, estensioni pg_cron e pg_net):
select cron.schedule('case-sources-daily', '0 6 * * *', $$
select net.http_post(
url := 'https://<tuo-dominio>/api/public/jobs/case-sources',
headers := jsonb_build_object('Authorization', 'Bearer <CRON_SECRET>')
);
$$);
| Comando | Cosa fa |
|---|---|
npm run dev | Server di sviluppo su porta 8080 |
npm run build / npm start | Build di produzione e avvio |
npm test | Test unitari (Vitest) |
npm run lint | ESLint |