← Tutte le idee Giochi e hobby

GuitarVault

L'app per chi colleziona chitarre: inventario, scambi e premi

Cosa fa

Una web app per collezionisti di chitarre: catalogo della propria collezione, scambi tra collezionisti, giochi e premi giornalieri.

Come guadagna

Il progetto è presentato in vetrina su SideProjectors; come guadagna non è indicato pubblicamente.

Rendilo tuo

  • La stessa idea per altre collezioni: orologi, vinili, figurine, Lego.
  • Valore stimato della collezione nel tempo.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Bacheca Chitarre": una web app per collezionisti di chitarre: catalogo della propria collezione con foto, matricole e valore, bacheca di scambi tra collezionisti e una piccola sfida giornaliera per tornare ogni giorno. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Pagina iniziale con collezioni in evidenza e il prezzo
2. Registrazione e accesso
3. La mia collezione: schede con marca, modello, anno, matricola, foto, valore stimato
4. Bacheca scambi e vendite tra collezionisti
5. Sfida del giorno: indovina la chitarra dalla foto di un dettaglio

Stile: vintage e caldo: sfondo legno chiaro #F5EBDD, marrone #5C3A21, oro #C59D5F, carattere "Playfair Display" per i titoli e "Inter" per i testi, foto delle chitarre in verticale. 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:
- "chitarre": marca, modello, anno, matricola (privata), colore, condizione, prezzo d'acquisto (privato), valore stimato, foto, pubblica o privata
- "annunci": chitarra, scambio o vendita, prezzo, città
- "sfide": domanda del giorno, foto del dettaglio, risposta
- "risposte_sfida": risposta dell'utente, giusta o no, giorno

Regole di sicurezza obbligatorie:
- matricole e prezzi d'acquisto li vede solo il proprietario
- le collezioni sono private, a meno che l'utente non le renda pubbliche
- si risponde alla sfida del giorno una sola volta

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. Catalogo della collezione

Ogni chitarra ha una scheda: marca, modello, anno, matricola, colore, condizione, modifiche, storia, foto (fino a 10), prezzo d'acquisto e valore stimato aggiornabile. Valore totale della collezione e grafico dell'andamento nel tempo.

La matricola e il prezzo d'acquisto restano privati anche se la collezione è pubblica (sono in una tabella separata, leggibile solo dal proprietario): utile in caso di furto, ma da non esporre.

Esportazione della collezione in PDF per l'assicurazione, con foto e matricole.

4. Scambi e sfida giornaliera

Bacheca scambi e vendite con filtri per marca, epoca e città, e messaggi interni senza mostrare i contatti.

Sfida del giorno: la foto di un dettaglio (paletta, ponte, intarsio) e quattro risposte. Si risponde una volta al giorno (codice nei Dettagli tecnici), si guadagnano punti e una serie di giorni consecutivi. Classifica settimanale.

5. Pagamenti con Stripe

Aggiungi un pagamento singolo di 9,99 € una volta sola. Il pagamento sblocca chitarre illimitate (gratis fino a 5), il PDF per l'assicurazione e gli annunci nella bacheca.

A pagamento riuscito il webhook imposta "piano" a "pro" nella tabella "profili", sulla riga dell'utente indicata in client_reference_id.

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. Privacy: con un secondo account apri una collezione pubblica e verifica che matricole e prezzi d'acquisto non arrivino mai al browser.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Dati privati separati e sfida una volta al giorno

Le informazioni sensibili stanno in una tabella leggibile solo dal proprietario; la chiave primaria (utente, giorno) impedisce di rispondere due volte alla sfida.

create table chitarre (
  id uuid primary key default gen_random_uuid(),
  utente_id uuid not null references auth.users(id) on delete cascade,
  marca text not null,
  modello text not null,
  anno int,
  condizione text,
  valore_stimato int,
  pubblica boolean not null default false
);

create table chitarre_private (
  chitarra_id uuid primary key references chitarre(id) on delete cascade,
  utente_id uuid not null references auth.users(id) on delete cascade,
  matricola text,
  prezzo_acquisto int
);

alter table chitarre enable row level security;
create policy "pubbliche o mie" on chitarre for select using (pubblica or auth.uid() = utente_id);
create policy "gestisco le mie" on chitarre for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);
alter table chitarre_private enable row level security;
create policy "le mie righe" on chitarre_private
  for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);

create table risposte_sfida (
  utente_id uuid not null references auth.users(id) on delete cascade,
  giorno date not null default current_date,
  giusta boolean not null,
  primary key (utente_id, giorno)       -- una sola risposta al giorno
);
alter table risposte_sfida enable row level security;
create policy "le mie risposte" on risposte_sfida for select using (auth.uid() = utente_id);

-- Giorni consecutivi con risposta giusta fino a oggi
select count(*) as serie from (
  select giorno, giorno - (row_number() over (order by giorno))::int as gruppo
  from risposte_sfida where utente_id = auth.uid() and giusta
) g
where gruppo = (select giorno - (row_number() over (order by giorno))::int
                from risposte_sfida where utente_id = auth.uid() and giusta
                order by giorno desc limit 1);

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.
Matricola
Il numero di serie unico di uno strumento: serve a riconoscerlo, per esempio dopo un furto.