← Tutte le idee Sport e benessere

Seed Oil Scout

La mappa dei ristoranti che cucinano senza oli di semi

Cosa fa

App con la mappa dei ristoranti che dichiarano di cucinare senza oli di semi (usano olio d'oliva, burro, strutto). Le informazioni arrivano dalle segnalazioni degli utenti e dai locali stessi.

Come guadagna

Abbonamento annuale (circa 2,92 $ al mese). È indicata come l'app che incassa di più nella sua categoria, ma le fonti pubbliche non riportano un incasso verificato.

Rendilo tuo

  • Per l'Italia: "solo olio extravergine d'oliva", un vanto per tanti ristoranti.
  • Allargala ad altre esigenze: senza glutine certificato, frittura in olio d'oliva, cucina a km zero.
  • Pagina gratuita per i ristoranti, che la usano come pubblicità.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Solo Extravergine": la mappa dei ristoranti che cucinano solo con olio extravergine d'oliva (e di quelli senza glutine certificato o con frittura in olio d'oliva), con segnalazioni degli utenti e schede dei locali. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Pagina iniziale con la mappa e la ricerca per città
2. Mappa con i ristoranti vicini e filtri
3. Scheda del ristorante: cosa dichiara, segnalazioni, conferme recenti
4. Segnala un ristorante
5. Area ristoratori: rivendica la scheda e aggiorna le informazioni

Stile: mediterraneo: sfondo crema #FBF7EE, verde oliva #556B2F, oro #C9A227, carattere "Lora" per i titoli e "Inter" per il resto, mappa grande. 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:
- "ristoranti": nome, indirizzo, posizione, oli usati, frittura, senza glutine, verificato, collegati al titolare se rivendicati
- "segnalazioni": utente, ristorante, cosa ha visto o chiesto, data
- "conferme": utente conferma o smentisce le informazioni del ristorante

Regole di sicurezza obbligatorie:
- ristoranti e segnalazioni approvate sono pubblici
- ogni utente gestisce solo le sue segnalazioni
- solo il titolare verificato e la redazione modificano i dati ufficiali del ristorante

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. Mappa e segnalazioni verificate

La mappa (Leaflet con OpenStreetMap) mostra i ristoranti vicini alla posizione dell'utente con un'icona per ciò che dichiarano: solo olio extravergine, frittura in olio d'oliva, senza glutine certificato. La ricerca "vicino a me" usa le distanze calcolate dal database (codice nei Dettagli tecnici).

Ogni informazione ha la sua provenienza e la data: "dichiarato dal ristorante", "segnalato da 5 utenti", "confermato 2 settimane fa". Gli utenti possono confermare o smentire; troppe smentite nascondono l'informazione finché la redazione non controlla.

Nessuna promessa sulla salute: si parla di preferenze e di come si cucina, non di benefici medici.

4. Area ristoratori

I ristoratori rivendicano la scheda (verifica con telefono del locale o documento) e aggiornano gli oli usati, il menu e le foto. La scheda verificata ha un badge.

Per gli utenti: preferiti, avviso quando apre un ristorante nuovo vicino, e contributo alla mappa con un riconoscimento ("Esploratore: 10 locali segnalati").

5. Pagamenti con Stripe

Aggiungi un abbonamento a 2,99 € al mese o 19,99 € all'anno. Gratis l'utente ha: mappa della propria città e 3 schede complete al giorno. Con il piano Pro sblocca: tutte le città, filtri avanzati, preferiti e avvisi.

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. Correttezza: verifica che ogni informazione mostri la sua fonte e la data, e che nessun testo prometta benefici per la salute.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Ristoranti vicini con PostGIS

I ristoranti con la loro posizione e la ricerca di quelli entro 3 km, con il numero di conferme recenti.

create extension if not exists postgis;

create table ristoranti (
  id uuid primary key default gen_random_uuid(),
  nome text not null,
  indirizzo text not null,
  posizione geography(Point, 4326) not null,
  solo_extravergine boolean,
  frittura_olio_oliva boolean,
  senza_glutine boolean,
  titolare_id uuid references auth.users(id),
  verificato boolean not null default false
);
create index on ristoranti using gist (posizione);

create table conferme (
  ristorante_id uuid not null references ristoranti(id) on delete cascade,
  utente_id uuid not null references auth.users(id) on delete cascade,
  conferma boolean not null,              -- true = confermo, false = non è vero
  creata_il timestamptz not null default now(),
  primary key (ristorante_id, utente_id)
);

alter table ristoranti enable row level security;
create policy "ristoranti pubblici" on ristoranti for select using (true);
alter table conferme enable row level security;
create policy "conferme pubbliche" on conferme for select using (true);
create policy "confermo io" on conferme for insert to authenticated with check (auth.uid() = utente_id);

-- Entro 3 km dalla posizione dell'utente, con le conferme degli ultimi 90 giorni
select r.nome, r.indirizzo, round(st_distance(r.posizione, st_makepoint(9.19, 45.46)::geography)) as metri,
       count(c.*) filter (where c.conferma and c.creata_il > now() - interval '90 days') as conferme,
       count(c.*) filter (where not c.conferma and c.creata_il > now() - interval '90 days') as smentite
from ristoranti r left join conferme c on c.ristorante_id = r.id
where st_dwithin(r.posizione, st_makepoint(9.19, 45.46)::geography, 3000)
group by r.id
order by metri;

Pezzi comuni a tutti i progetti

Glossario

PostGIS
L'estensione di Postgres che sa lavorare con mappe e distanze.
Segnalazioni degli utenti (crowdsourcing)
Informazioni raccolte dalle persone che usano l'app, confermate o smentite da altri.