Compensa?
Compare suplementos, protetor solar, hidratante, fraldas, papel higiênico, lava-roupas e ração pelo preço por quantidade.
Translation pending
Tell me who you're buying for: I'll suggest 4 concrete gift ideas within your budget, with links to find them online.
CommerceTypeScript · PLpgSQLGitHub @pinna054OnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗"Pensierino" è un nome provvisorio: si cambia in un solo punto,
src/config/sito.ts.
Sito che sceglie il regalo al posto tuo. Descrivi il destinatario (relazione, età, occasione, budget, gusti, cosa non gli piace) e un motore AI propone 4 idee regalo concrete, con i link per cercarle su Amazon e Google Shopping nel paese di consegna.
/it, /en), lingua dedotta dal browser.Scopo, fasi, struttura del database e decisioni tecniche sono in PROGETTO.md.
Tutte le chiavi vanno nelle variabili d'ambiente (mai nel codice). L'elenco completo, con
spiegazioni, è nel file .env.example.
ANTHROPIC_API_KEY)sk-ant-). Viene mostrata una sola volta.Costo indicativo: con claude-sonnet-5-5 una generazione costa circa 2–4 centesimi di dollaro
(il costo esatto stimato di ognuna viene salvato nel database, colonna costo_stimato_usd).
DATABASE_URL)6543)
e copia la stringa, che ha questa forma:
postgresql://postgres.abcdefghijkl:[YOUR-PASSWORD]@aws-0-eu-central-1.pooler.supabase.com:6543/postgres
[YOUR-PASSWORD] con la password del database: questa è la tua DATABASE_URL.Usa proprio il Transaction pooler: la connessione "diretta" non funziona da Vercel. Se hai dimenticato la password: Project Settings → Database → Reset database password.
Se partecipi al Programma di Affiliazione Amazon, ogni marketplace ha il suo tag (es. mionegozio-21):
impostalo nella variabile corrispondente (AMAZON_TAG_IT, AMAZON_TAG_UK, AMAZON_TAG_DE,
AMAZON_TAG_FR, AMAZON_TAG_ES, AMAZON_TAG_US). Quando un tag è presente, i link Amazon di quel
paese lo includono e sotto le idee compare l'avviso di affiliazione richiesto da Amazon.
Senza tag i link funzionano normalmente.
Verifica nelle regole del programma di ogni marketplace il testo esatto dell'avviso richiesto (i testi si cambiano in
messages/it.jsonemessages/en.json, chiaveidee.affiliazione).
supabase/fase1.sql, copia tutto il contenuto e incollalo.generazioni, idee, limiti_richieste
e la vista riepilogo_giorni.Il file si può rieseguire senza rischi: crea solo ciò che manca e non cancella dati.
Le tabelle hanno la Row Level Security attiva e nessuna regola: l'API pubblica di Supabase
non può leggerle; il sito vi accede solo dal server con la DATABASE_URL.
# 1. Scarica il progetto e installa le dipendenze
git clone <indirizzo-del-repository>
cd sito-regali
npm install
# 2. Crea il file con le chiavi e compilalo
cp .env.example .env.local
# apri .env.local e inserisci almeno ANTHROPIC_API_KEY e DATABASE_URL
# 3. Avvia
npm run dev
Apri http://localhost:3000: verrai portato su /it o /en in base alla lingua del browser.
Provare senza chiavi: in .env.local scrivi MOTORE_FINTO=1 e lascia vuota DATABASE_URL.
Il sito funziona con idee finte (c'è un avviso ben visibile) e senza salvare nulla.
Non usare mai MOTORE_FINTO=1 sul sito pubblicato.
Altri comandi utili:
| comando | a cosa serve |
|---|---|
npm test | test automatici della logica (controlli su budget e filtri, link, ecc.) |
npm run lint | controllo dello stile del codice |
npm run build | prepara la versione da pubblicare (la stessa che fa Vercel) |
npm start | avvia la versione preparata con build |
.env.example:
ANTHROPIC_API_KEY (obbligatoria)DATABASE_URL (obbligatoria: senza database il sito pubblicato non genera idee)SEGRETO_HASH_IP: una stringa lunga e casuale (consigliata)ANTHROPIC_MODEL, ANTHROPIC_EFFORT, MOTORE_PROMPT, AMAZON_TAG_…, LIMITE_…Da quel momento ogni modifica salvata su GitHub (branch principale) viene pubblicata da sola. Se cambi una variabile d'ambiente: Settings → Environment Variables, poi Deployments → Redeploy perché la modifica abbia effetto.
Una generazione dura di solito 10–30 secondi. La funzione
/api/generapuò durare fino a 300 secondi, il massimo del piano gratuito con Fluid Compute (attivo di default sui progetti nuovi).
| voglio… | dove |
|---|---|
| cambiare il nome del sito | src/config/sito.ts |
| completare la pagina privacy (titolare, email) | src/config/sito.ts; i testi in messages/*.json → privacy |
| cambiare un testo del sito | messages/it.json, messages/en.json |
| aggiungere una lingua (es. francese) | copia messages/en.json in messages/fr.json e traduci i testi. Nient'altro: il sito avrà /fr alla pubblicazione successiva. Le frasi non tradotte restano in inglese. |
| aggiungere un paese | aggiungi una voce in src/config/paesi.ts (valuta, dominio Amazon, Google) |
| cambiare colori o caratteri | src/app/globals.css (sezione @theme) |
| provare un nuovo prompt | crea prompts/motore-v2.md e imposta MOTORE_PROMPT=motore-v2 |
| cambiare modello o effort | variabili ANTHROPIC_MODEL, ANTHROPIC_EFFORT |
| cambiare i limiti di richieste | variabili LIMITE_ORA, LIMITE_GIORNO, LIMITE_GLOBALE_GIORNO |
Note:
{sito}, {valuta}, {numero}) vanno lasciate
così; evita l'apostrofo dritto subito prima di una graffa (usa ’).amico/a, natale)
sono in src/config/opzioni.ts e non vanno tradotti: si traducono solo le etichette.src/motore/schema.ts, altrimenti le risposte verranno scartate.prompt_versione).Tabelle su Supabase (dettagli in PROGETTO.md):
generazioni: ogni richiesta al motore (dati del modulo in forma anonima, risposta,
versione del prompt, modello, token, costo stimato, durata, eventuali errori e tentativi).idee: ogni idea mostrata, con 👍/👎 (voto) e click (click_amazon, click_google).riepilogo_giorni: numeri e costi per giorno, pronti da consultare.Qualche interrogazione utile (SQL Editor):
-- Gradimento per versione del prompt
select g.prompt_versione,
count(*) filter (where i.voto = 1) as pollici_su,
count(*) filter (where i.voto = -1) as pollici_giu,
sum(i.click_amazon + i.click_google) as click
from idee i join generazioni g on g.id = i.generazione_id
group by 1 order by 1;
-- Spesa API degli ultimi 7 giorni
select giorno, generazioni, costo_usd from riepilogo_giorni
where giorno > current_date - 7 order by giorno desc;
L'area del team (/valutazione), con l'importazione del CSV dei 100 scenari, arriva con la
fase 2: questa sezione verrà completata allora. Formato previsto (separatore ;):
id;relazione;eta_destinatario;occasione;budget_euro;profilo_utente;difficolta
più le colonne facoltative set, lingua e paese.
| sintomo | causa probabile |
|---|---|
| "Il servizio non è ancora configurato" | manca ANTHROPIC_API_KEY o, su Vercel, DATABASE_URL. Controlla le variabili e rifai il deploy. Nei log di Vercel (Logs) c'è il dettaglio. |
| "Hai chiesto molte idee in poco tempo" | è scattato il limite per IP (default 10 all'ora, 40 al giorno). |
| errori di connessione al database | la DATABASE_URL deve essere quella del Transaction pooler (porta 6543) con la password giusta. |
| le idee non arrivano mai | controlla credito e chiave su platform.claude.com e i log di Vercel. |
| "Modalità demo" sul sito pubblicato | è rimasta impostata MOTORE_FINTO=1: toglila. |