Compensa?
보충제·선크림·보습제·기저귀·화장지·세제·사료를 용량당 가격으로 비교
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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. |