new-term-radar
신규 AI 용어를 매일 추적, X·Hugging Face·GitHub 등에서 모델·제품·레포 이름을 빠르게 수집
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Il sito completo di Competia in Next.js (App Router, TypeScript): pagine pubbliche, accesso, workspace /app e /analytics. Segue l'albero delle pagine approvato il 9 ottobre 2026 (fase F1) e il design system ispirato a Notion.
La landing in ../landing/ resta separata: ci lavora il thread Supabase + Resend. Quando si unisce, la home di questo sito la sostituisce.
next build (48 percorsi generati) e provate in un browser (chiaro e scuro, desktop e mobile).lib/demo-data.ts. Nessuna scrittura: i bottoni che salverebbero (nuovo segnale, verifica, inviti, impostazioni) mostrano un avviso che il database non è ancora collegato./app non è protetta. Il banner giallo in cima al workspace lo dice.POST /api/access-request della landing (copiato in app/api/access-request/route.ts), con le stesse variabili SUPABASE_URL, SUPABASE_PUBLISHABLE_KEY, RESEND_API_KEY, RESEND_FROM./analytics legge Umami lato server ed è chiusa da HTTP Basic auth. Senza password impostata risponde 503.app/(sito)/contatti/page.tsx (ora [email protected])./b/[token], impostazioni Notifiche e Fatturazione.Il repository GitHub ricciandrea2004-wq/ricciiandrea è collegato al progetto Vercel competia-work: ogni push su main pubblica il sito in produzione su www.competia.work; gli altri rami creano un'anteprima.
npm install
npm run dev
Verifica: npm run typecheck e npm run build.
| Variabile | Serve a |
|---|---|
SUPABASE_URL, SUPABASE_PUBLISHABLE_KEY | salvare le richieste di accesso |
RESEND_API_KEY, RESEND_FROM | email di conferma della richiesta e tutte le email di lib/email/ |
EMAIL_SENDING | off (predefinito: nessun invio), interno (solo agli indirizzi del team), on (a tutti) |
EMAIL_INTERNAL_TO | indirizzi del team, separati da virgola (predefinito [email protected]) |
CRON_SECRET | chiude le rotte /api/cron/*; Vercel Cron lo manda da solo |
EMAIL_EVENTS_SECRET | chiude POST /api/email/evento |
SEND_EMAIL_HOOK_SECRET | firma dell'hook "Send Email" di Supabase Auth (v1,whsec_…) |
EMAIL_SOGLIA_DA_VERIFICARE_GIORNI | giorni prima dell'avviso sui segnali fermi (predefinito 3) |
ANALYTICS_USER, ANALYTICS_PASSWORD | aprire /analytics |
UMAMI_API_URL, UMAMI_WEBSITE_ID | dati di Umami |
UMAMI_API_KEY (Umami Cloud) oppure UMAMI_API_TOKEN (self-hosted) | autenticazione verso Umami |
COMPETIA_API_TOKEN, CRON_SECRET | API /api/v1 e controllo giornaliero delle fonti |
COMPETIA_STORE, SUPABASE_SERVICE_ROLE_KEY, COMPETIA_ORGANIZATION_ID | dati dell'API su Supabase invece dei dati di esempio |
/api/v1 legge le pagine dei competitor (rispettando robots.txt), salva una copia del testo e crea un segnale quando qualcosa cambia. Vercel Cron la avvia una volta al giorno. Endpoint, esempi e cosa manca per il database vero: docs/api.md. Prova: npm run test:scraper.
app/
layout.tsx, tokens.css, globals.css radice, token del design system, stili
(sito)/ pagine pubbliche con header e footer
(accesso)/ accedi, controlla l'email, invito
app/ workspace con sidebar (segnali, fonti, competitor, briefing, impostazioni)
analytics/ dashboard interna Umami
auth/callback/ ritorno dal link di accesso (per ora solo redirect)
api/access-request/ endpoint del modulo di accesso
api/v1/ API: competitor, fonti, segnali, controllo
api/cron/scrape/ controllo giornaliero (Vercel Cron)
api/email/ invii a evento (evento) e hook di Supabase Auth (auth-hook)
api/cron/ riepilogo settimanale, segnali fermi, controllo del sito (orari in vercel.json)
not-found.tsx, error.tsx, global-error.tsx, robots.ts, sitemap.ts
components/ componenti condivisi; workspace/ per la shell del workspace
components/motion/ animazioni (motion e Lottie)
lib/
domain.ts tipi ed etichette in italiano
demo-data.ts dati di esempio del workspace
nav.ts voci di navigazione
umami.ts lettura delle statistiche
scraper/ lettura delle pagine: robots.txt, testo, confronto, segnali
store/ dati dell'API: in memoria (demo) o Supabase
supabase/migrations/ schema SQL (da applicare con l'OK di Andrea)
docs/api.md documentazione dell'API
email/ template e invio delle email (vedi "Email")
middleware.ts password su /analytics
public/lottie/ animazioni Lottie (generate da scripts/lottie/build.mjs)
public/email/ GIF e PNG delle email (generate da scripts/email/build-assets.mjs)
app/tokens.css è una copia di ../design-system/tokens.css: se cambia uno, va aggiornato l'altro.
Due librerie, usate solo nelle pagine che ne hanno bisogno (le altre non le scaricano):
components/motion/): il segnale d'esempio in home e in /prodotto/segnali (il valore "prima" si barra, il "dopo" conta fino al nuovo prezzo, lo stato passa da "Da verificare" a "Verificato"), lo stesso prima/dopo nel dettaglio di un segnale, i numeri della Panoramica, il toast e il bottone "Copia link" del workspace.components/motion/LottieAnimation.tsx): disegni che si animano una volta quando entrano in vista. Il motore Lottie si scarica solo quando il disegno sta per comparire.File in public/lottie/ | Origine | Dove |
|---|---|---|
fonte, verifica, briefing | disegnati in codice | tre passi in home e in /prodotto |
richiesta | disegnato in codice | /richiedi-accesso/grazie |
email, bussola, nessun-risultato, avviso | useAnimations (MIT) | controlla l'email, 404, filtri senza risultati, errore |
logo | disegnato in codice, lettere di Inter 700 vettorializzate | header (all'apertura della pagina) e footer (quando entra in vista) |
Animazioni che si ripetono (poche, lente, ferme quando la pagina non è visibile o con il movimento ridotto):
components/motion/StatusCycle.tsx);StatusTag live); non nello storico né nell'attività.I JSON si rigenerano con node scripts/lottie/build.mjs. I colori non sono fissati nei file: ogni livello ha una classe (c-ink, c-accent…) che app/globals.css collega ai token, così i disegni seguono il tema chiaro e scuro. Le fonti e la licenza dei file presi da useAnimations sono in scripts/lottie/useanimations/README.md.
Con prefers-reduced-motion nessun movimento: i disegni compaiono già finiti e i valori sono subito quelli finali.
Il logo animato (components/motion/AnimatedLogo.tsx) dura 1,2 secondi e parte una volta: compare il simbolo "c.", si scrivono le lettere, poi i due punti blu cadono al loro posto. Il logo statico (components/Logo.tsx) resta sotto e tiene lo spazio: è quello che si vede senza JavaScript, con il movimento ridotto e dopo una navigazione interna. Le lettere del wordmark sono i contorni di Inter 700, presi una volta con scripts/lottie/outline-wordmark.mjs e salvati in scripts/lottie/wordmark.json.
Il simbolo usa i token --logo-tile, --logo-glyph e --logo-dot: scuro nel tema chiaro, chiaro nel tema scuro. public/favicon.svg fa lo stesso con prefers-color-scheme, così resta leggibile anche nelle schede scure; deve restare un SVG pulito, senza metadati. favicon.ico, apple-touch-icon.png e app/opengraph-image.png si rigenerano con scripts/brand/render.mjs.
Tutte le email stanno in lib/email/ e usano lo stesso motore grafico del sito: lib/email/tokens.ts è generato da app/tokens.css (npm run email:tokens, oppure node scripts/email/sync-tokens.mjs --check per verificare), con Inter e la catena di font di Notion, i neutri caldi, l'accento blu e i colori dei tag con lo stesso significato del workspace. Ogni email ha la versione HTML e quella in solo testo.
| Template | Quando parte | Chi lo chiama |
|---|---|---|
richiesta-ricevuta | qualcuno chiede l'accesso | POST /api/email/evento; la rotta /api/access-request manda ancora la sua conferma in testo (è di un altro thread, si collega quando la si tocca) |
accesso-approvato | si apre un posto o un membro invita un collega | POST /api/email/evento, oppure l'hook di Supabase per gli inviti (invite) |
link-accesso | accesso con link via email, con il codice a 6 cifre | hook "Send Email" di Supabase Auth → /api/email/auth-hook |
benvenuto | primo accesso | POST /api/email/evento (da un webhook di Supabase o da /auth/callback quando l'accesso sarà collegato) |
riepilogo-settimanale | ogni lunedì alle 7:00 UTC | Vercel Cron → /api/cron/riepilogo-settimanale |
segnali-da-verificare | un segnale resta "Da verificare" oltre la soglia (una volta per segnale) | Vercel Cron ogni mattina → /api/cron/segnali-da-verificare |
sito-non-risponde | una pagina pubblica non risponde 200 | Vercel Cron ogni mattina → /api/cron/controllo-sito, solo al team |
Interruttore: niente parte finché EMAIL_SENDING non è interno o on. Con off le email vengono preparate e scritte nei log, ma non inviate. Il riepilogo e l'avviso sui segnali fermi leggono i dati da lib/email/data.ts, che oggi restituisce zero destinatari perché il workspace usa ancora dati di esempio: quando arriva lo schema del database si sostituiscono le due funzioni con le query.
I cron sono una volta al giorno al massimo perché il piano Hobby di Vercel non ne permette di più frequenti. Il controllo del sito gira su Vercel stesso: vede pagine e deploy rotti, non un'interruzione completa di Vercel.
Animazioni: le email non eseguono JavaScript e quasi nessuna animazione CSS, quindi il movimento arriva con GIF generate dagli stessi file Lottie del sito e con gli stessi token (NODE_PATH=$(npm root -g) node scripts/email/build-assets.mjs, serve Playwright e ffmpeg). Il logo si disegna una volta come nell'header, ogni email ha il suo disegno (richiesta, verifica, email, fonte, briefing, avviso) e il tag "Da verificare" ha il punto che respira come nel workspace. Outlook su Windows riceve il PNG fermo (mostrerebbe solo il primo fotogramma), così come chi ha attivo il movimento ridotto; Apple Mail e iOS Mail ricevono la versione scura con il tema scuro.
Anteprime: npm run email:anteprime (con NODE_PATH=$(npm root -g) se Playwright è installato globalmente) scrive in scripts/email/anteprime/ l'HTML, il testo e gli screenshot chiaro e scuro di ogni template, con i dati di lib/email/esempi.ts.
Per accendere:
EMAIL_SENDING=interno su Vercel: arrivano solo a [email protected] (serve che la casella esista).https://www.competia.work/api/email/auth-hook; il segreto generato va in SEND_EMAIL_HOOK_SECRET.EMAIL_EVENTS_SECRET, lo stesso nel webhook che chiama /api/email/evento.EMAIL_SENDING=on.⌘K / Ctrl K: cerca segnali, fonti, competitor e pagine.⌘\ / Ctrl \: chiude e riapre la barra laterale./app.lib/demo-data.ts.