Archifruits.ai
Da una foto a un render architettonico professionale
Incasso mensile: 4800 USD (fonte indicata nella scheda)
Cosa fa
Gli architetti caricano foto di interni o esterni, scelgono uno stile e ricevono render professionali da mostrare ai clienti.
Come guadagna
Ha entrate ricorrenti ogni mese, verificate su TrustMRR. Prezzi e piani esatti sono indicati sul sito del progetto.
Rendilo tuo
- Per geometri e imprese edili italiane che presentano lavori ai clienti.
- Render di facciate per i lavori di ristrutturazione e cappotto termico.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Render Rapido": permette ad architetti, geometri e imprese di trasformare la foto di una stanza o di una facciata in un render con un nuovo stile, da mostrare ai clienti prima dei lavori. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con confronti prima/dopo e prezzi
2. Registrazione e accesso
3. Progetti: un progetto per ogni cliente o cantiere
4. Pagina del progetto: foto, stili, render e confronti
5. Presentazione da condividere con il cliente
Stile: da studio di architettura: sfondo bianco, grigio cemento #3F3F46, accento ottone #A16207, carattere "Manrope", griglia ordinata e immagini a tutta larghezza. 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:
- "progetti": nome, cliente, note, collegati all'utente
- "render": foto di partenza, tipo (interno, esterno), stile, materiali indicati, risultato nello Storage, preferito
Regole di sicurezza obbligatorie:
- ogni utente vede solo i suoi progetti e render
- le foto stanno in uno spazio privato, una cartella per utente
- i crediti non si modificano dal browser
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. Dalla foto al render
Nella pagina del progetto si carica una foto (ridotta nel browser a 2.048 pixel, codice nei Dettagli tecnici), si sceglie se è un interno o un esterno, uno stile (contemporaneo, minimal, industriale, classico, rustico, scandinavo, mediterraneo) e si possono indicare materiali precisi ("pavimento in rovere, cucina verde salvia, top in marmo").
Il pulsante "Crea render" (un credito) invia la foto a un'API di modifica immagini con istruzioni precise: mantenere muri, aperture, prospettiva e proporzioni, cambiare solo finiture e arredi. Si ottengono 2 varianti, confrontabili con la foto originale con un cursore.
Su ogni render compare la scritta "Visualizzazione indicativa".
4. Presentazione al cliente
Il professionista segna i render preferiti e crea una presentazione con un link da mandare al cliente: copertina con il nome del progetto, confronti prima/dopo, note sui materiali. Il cliente può lasciare un commento su ogni render ("mi piace", "cambierei il colore").
Esportazione in PDF con il logo dello studio, per allegarla al preventivo.
5. Pagamenti con Stripe
Aggiungi pacchetti di crediti: 20 render a 19 €, 100 render a 69 €. Ogni nuovo utente riceve 3 crediti gratis. Ogni render (2 varianti) costa un credito. Mostra sempre in alto quanti crediti restano e, quando finiscono, un riquadro per comprarne altri.
A pagamento riuscito il webhook aggiunge i crediti del pacchetto con la funzione aggiungi_crediti.
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. Fedeltà: prova con 5 foto diverse e controlla che finestre, porte e muri restino al loro posto nei render.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Ridurre la foto prima di caricarla
Le foto del telefono pesano anche 10 MB: questa funzione le rimpicciolisce nel browser prima del caricamento. Più veloce per l'utente e meno spazio occupato.
export async function riduciFoto(file: File, latoMassimo = 2048): Promise<Blob> {
const immagine = await createImageBitmap(file);
const scala = Math.min(1, latoMassimo / Math.max(immagine.width, immagine.height));
const larghezza = Math.round(immagine.width * scala);
const altezza = Math.round(immagine.height * scala);
const tela = new OffscreenCanvas(larghezza, altezza);
tela.getContext("2d")!.drawImage(immagine, 0, 0, larghezza, altezza);
immagine.close();
return tela.convertToBlob({ type: "image/jpeg", quality: 0.9 });
}Tabelle e Storage privato
Progetti, render e lo spazio dei file con una cartella per ogni utente.
create table progetti (
id uuid primary key default gen_random_uuid(),
utente_id uuid not null references auth.users(id) on delete cascade,
nome text not null,
cliente text,
link_cliente uuid unique default gen_random_uuid()
);
create table render (
id uuid primary key default gen_random_uuid(),
progetto_id uuid not null references progetti(id) on delete cascade,
utente_id uuid not null references auth.users(id) on delete cascade,
tipo text not null check (tipo in ('interno', 'esterno')),
stile text not null,
materiali text not null default '',
foto_path text not null,
risultati_path text[] not null default '{}',
preferito boolean not null default false
);
alter table progetti enable row level security;
create policy "le mie righe" on progetti
for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);
alter table render enable row level security;
create policy "le mie righe" on render
for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);
insert into storage.buckets (id, name, public) values ('render', 'render', false);
create policy "la mia cartella" on storage.objects for all to authenticated
using (bucket_id = 'render' and (storage.foldername(name))[1] = auth.uid()::text)
with check (bucket_id = 'render' and (storage.foldername(name))[1] = auth.uid()::text);
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.
- Render
- Un'immagine realistica di come sarà un ambiente dopo i lavori.