TAC & TSC
Clienti, contratti, attrezzature e richieste di assistenza in una sola piattaforma
Cosa fa
Piattaforma web per gestire i clienti, i contratti, le attrezzature installate e le richieste di assistenza (ticket).
Come guadagna
Il progetto è presentato in vetrina su SideProjectors; come guadagna non è indicato pubblicamente.
Rendilo tuo
- Per installatori di caldaie, condizionatori o allarmi: scadenze delle manutenzioni e storico interventi.
- Il cliente apre la richiesta di assistenza da WhatsApp.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Assistenza Pronta": per aziende che installano e mantengono impianti (caldaie, condizionatori, ascensori, sistemi informatici): clienti, contratti di assistenza, impianti installati e richieste di intervento con i tempi garantiti. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con le funzioni e il prezzo
2. Clienti con contratti e impianti installati (marca, modello, matricola, data di installazione)
3. Richieste di intervento (ticket) con priorità e scadenza
4. Area clienti: apri una richiesta, segui lo stato, scarica i rapporti
5. Scadenze: contratti da rinnovare e manutenzioni periodiche
Stile: tecnico e affidabile: sfondo bianco, blu #1E40AF, arancione #EA580C per le urgenze, carattere "Inter", elenco richieste con badge colorati di priorità. Nessuna immagine generica di stock.
Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.
2. Database, account e sicurezza
Collega il progetto a Supabase e attiva la registrazione con email e password.
Crea queste tabelle:
- "contratti": cliente, livello (base, plus, premium), tempo di intervento garantito in ore, inizio e fine
- "impianti": cliente, tipo, marca, modello, matricola, installato il, ultima manutenzione
- "richieste": impianto, descrizione, priorità, stato, aperta il, scadenza, tecnico assegnato, rapporto finale
Regole di sicurezza obbligatorie:
- i clienti vedono solo i loro impianti e richieste
- i tecnici vedono le richieste dell'azienda; solo i responsabili gestiscono contratti
- la scadenza della richiesta la calcola il database dal contratto
Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.
3. Richieste con tempi garantiti
Il cliente apre una richiesta dall'area clienti scegliendo l'impianto, descrivendo il problema e allegando foto. La priorità (bassa, normale, urgente) e il contratto determinano la scadenza: il database la calcola da solo (codice nei Dettagli tecnici).
Il responsabile vede le richieste ordinate per scadenza, con quelle vicine al limite in arancione e quelle scadute in rosso, e le assegna a un tecnico. Il tecnico, dal telefono, cambia stato (presa in carico, in corso, risolta) e compila il rapporto con ore, materiali e firma del cliente.
Il cliente riceve email a ogni cambio di stato e il rapporto in PDF alla chiusura.
4. Contratti e manutenzioni
Pagina scadenze: contratti in scadenza nei prossimi 60 giorni con il pulsante per inviare la proposta di rinnovo, e manutenzioni periodiche da programmare (es. ogni 12 mesi dall'ultima).
Statistiche: richieste per cliente e per tipo di impianto, percentuale risolta entro il tempo garantito, ore per contratto (per capire quali contratti rendono).
5. Pagamenti con Stripe
Aggiungi un abbonamento a 39 € al mese. Gratis l'utente ha: 50 impianti e 2 tecnici. Con il piano Pro sblocca: impianti e tecnici illimitati, area clienti, rapporti firmati e statistiche dei tempi.
A pagamento riuscito il webhook porta l'utente al piano Pro; se l'abbonamento viene disdetto o non rinnovato lo riporta al piano gratuito.
Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.
6. Controlli specifici di questo progetto
Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Tempi: apri una richiesta urgente per un cliente con contratto premium (4 ore) e controlla che la scadenza calcolata sia giusta.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Scadenza calcolata dal contratto
Un trigger calcola la scadenza di ogni richiesta dal contratto del cliente e dalla priorità; una vista mostra quelle a rischio.
create table contratti (
id uuid primary key default gen_random_uuid(),
azienda_id uuid not null,
cliente_id uuid not null,
livello text not null check (livello in ('base', 'plus', 'premium')),
ore_intervento int not null, -- es. base 48, plus 24, premium 4
inizio date not null,
fine date not null
);
create table richieste (
id bigint generated always as identity primary key,
azienda_id uuid not null,
cliente_id uuid not null,
impianto_id uuid not null,
descrizione text not null,
priorita text not null default 'normale' check (priorita in ('bassa', 'normale', 'urgente')),
stato text not null default 'aperta' check (stato in ('aperta', 'in_carico', 'in_corso', 'risolta')),
aperta_il timestamptz not null default now(),
scadenza timestamptz,
risolta_il timestamptz
);
create function calcola_scadenza() returns trigger language plpgsql as $
declare ore int;
begin
select c.ore_intervento into ore from contratti c
where c.cliente_id = new.cliente_id and current_date between c.inizio and c.fine
order by c.ore_intervento limit 1;
ore := coalesce(ore, 72); -- senza contratto: 72 ore
if new.priorita = 'bassa' then ore := ore * 2; end if;
if new.priorita = 'urgente' then ore := greatest(ore / 2, 2); end if;
new.scadenza := new.aperta_il + make_interval(hours => ore);
return new;
end $;
create trigger scadenza_richiesta before insert on richieste
for each row execute function calcola_scadenza();
-- Richieste a rischio: aperte con meno del 25% del tempo rimasto
select id, descrizione, priorita, scadenza,
case when scadenza < now() then 'scaduta' else 'a rischio' end as situazione
from richieste
where stato <> 'risolta'
and now() > scadenza - (scadenza - aperta_il) * 0.25
order by scadenza;
Pezzi comuni a tutti i progetti
Glossario
- Storage
- Lo spazio di Supabase dove si salvano i file, come foto e audio, con le sue regole di accesso.
- SLA
- Il tempo di intervento garantito dal contratto: per esempio "entro 4 ore lavorative".
- Ticket
- Una richiesta di assistenza con un numero, uno stato e una storia, per non perderla di vista.