Installation & Setup
Configura CodeCourier per lo sviluppo locale. Copre requisiti di sistema, variabili d'ambiente, configurazione di Convex, Clerk, E2B e Trigger.dev.
Questa guida copre tutto ciò di cui hai bisogno per far girare CodeCourier in locale per lo sviluppo. CodeCourier è un’applicazione Next.js supportata da Convex, Clerk, E2B e Trigger.dev. Ogni servizio richiede la propria configurazione, ma una volta impostato, l’esperienza di sviluppo locale è pienamente funzionante con hot reloading e dati in tempo reale.
Requisiti di sistema
- Node.js - Versione 20.9.0 o successiva (richiesta dall’SDK Clerk)
- Package manager - Bun (consigliato, usato negli script del progetto) oppure npm/yarn/pnpm
- Git - Per clonare il repository e gestire i branch
- Sistema operativo - macOS, Linux o Windows (con WSL consigliato per la migliore esperienza)
Bun è opzionale
bun-nextjs-convex-clerk), funzionano anche tutti i comandi npm standard. Le istruzioni qui sotto mostrano entrambe le opzioni.Clona e installa
Clona il repository
git clone https://github.com/your-org/codecourier.git
cd codecourierInstalla le dipendenze
bun installQuesto installa tutte le dipendenze di produzione e di sviluppo, inclusi Next.js, Convex, Clerk, l’SDK E2B, l’SDK Trigger.dev, Tailwind CSS, Radix UI, shadcn/ui, Framer Motion e gli strumenti di test (Vitest, Playwright).
Variabili d’ambiente
Crea un file .env.local nella root del progetto. Il repository include un file .env.example con tutte le variabili supportate. Copialo come punto di partenza:
cp .env.example .env.localLe seguenti variabili sono richieste per lo sviluppo locale:
Convex
# Your Convex deployment URL (shown after running npx convex dev)
NEXT_PUBLIC_CONVEX_URL=https://your-deployment.convex.cloud
# Convex site URL (used by Trigger.dev for HTTP callbacks)
CONVEX_SITE_URL=https://your-deployment.convex.siteAutenticazione Clerk
# Clerk publishable key (client-side, starts with pk_test_ or pk_live_)
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxx
# Clerk secret key (server-side, starts with sk_test_ or sk_live_)
CLERK_SECRET_KEY=sk_test_xxx
# Clerk JWT issuer domain (found in Clerk dashboard > JWT Templates)
CLERK_JWT_ISSUER_DOMAIN=https://your-clerk-domain.clerk.accounts.dev
# Clerk webhook signing secret (for Convex HTTP webhook handler)
CLERK_WEBHOOK_SECRET=whsec_xxxTrigger.dev
# Shared secret for authenticating callbacks between Trigger.dev and Convex
TRIGGER_CALLBACK_SECRET=your-random-secret-stringGenera un callback secret robusto
TRIGGER_CALLBACK_SECRET serve a verificare che le richieste HTTP in ingresso verso Convex provengano davvero dai tuoi job Trigger.dev. Usa una stringa crittograficamente casuale (almeno 32 caratteri). Puoi generarne una con openssl rand -hex 32.Variabili opzionali
# PostHog analytics (optional)
# NEXT_PUBLIC_POSTHOG_KEY=phc_xxx
# NEXT_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com
# Meta/Facebook Pixel (optional)
# NEXT_PUBLIC_META_PIXEL_ID=123456789
# Google Ads conversion tracking (optional)
# NEXT_PUBLIC_GOOGLE_ADS_ID=AW-123456789Configurazione dei servizi
Imposta Convex
Convex è il database e il runtime backend di CodeCourier. Avvia il server di sviluppo Convex, che sincronizza il tuo schema e le tue function locali con un deployment di sviluppo:
npx convex devAl primo avvio, la CLI Convex ti chiede di accedere e creare un nuovo progetto. Dopo la configurazione, stampa il tuo URL di deployment - copialo nel tuo .env.local come NEXT_PUBLIC_CONVEX_URL.
Il server di sviluppo Convex osserva le modifiche ai file nella directory convex/ e invia automaticamente gli aggiornamenti di schema e function. Tieni questo terminale in esecuzione durante lo sviluppo.
Variabili d'ambiente Convex
CLERK_WEBHOOK_SECRET e TRIGGER_CALLBACK_SECRET.Configura l'autenticazione Clerk
Crea un’applicazione Clerk su dashboard.clerk.com:
- Crea una nuova applicazione e abilita i metodi di accesso desiderati (Google, GitHub, e-mail, ecc.)
- Copia la Publishable Key e la Secret Key dalla pagina API Keys nel tuo
.env.local - Configura un JWT Templateper Convex. Nel dashboard Clerk, vai in JWT Templates, crea un nuovo template chiamato “convex” e configura i campi issuer e audience come documentato nella guida di integrazione Convex + Clerk
- Copia il JWT issuer domain in
CLERK_JWT_ISSUER_DOMAIN - Configura un endpoint Webhook che punta al tuo Convex site URL (ad es.,
https://your-deployment.convex.site/clerk-webhook). Abilita gli eventi utente (user.created, user.updated, user.deleted). Copia il signing secret inCLERK_WEBHOOK_SECRET
Imposta l'accesso alle sandbox E2B
E2B fornisce le sandbox cloud in cui gli agenti IA vengono eseguiti. La configurazione avviene a livello di progetto nell’interfaccia CodeCourier (Project Settings > API Keys), non come variabile d’ambiente locale. Tuttavia, per verificare la tua configurazione E2B durante lo sviluppo:
- Crea un account su
e2b.deve ottieni la tua chiave API dal dashboard - Dopo aver avviato CodeCourier, vai in Project Settings e aggiungi la tua chiave API E2B nella sezione API Keys
L’SDK E2B (package e2b) è già incluso nelle dipendenze del progetto. I sandbox template (che definiscono l’ambiente di base e gli strumenti preinstallati) sono configurati per workflow e gestiti tramite l’interfaccia CodeCourier.
Connetti Trigger.dev
Trigger.dev si occupa dell’esecuzione dei job in background per il provisioning delle sandbox, i run di workflow e le sessioni di issue. Per lo sviluppo locale:
- Registrati su
trigger.deve crea un nuovo progetto - Installa la CLI Trigger.dev globalmente oppure usa npx:
npx trigger.dev@latest devQuesto avvia il server di sviluppo Trigger.dev, che si connette al cloud Trigger.dev per ricevere ed elaborare i job in locale. Il progetto include un file trigger.config.ts che definisce tutte le task registrate.
Trigger.dev è opzionale per lo sviluppo UI
Avvia il server di sviluppo
Con Convex dev in esecuzione in un terminale, avvia il server di sviluppo Next.js in un altro:
bun devL’applicazione si avvia su http://localhost:3000. Dovresti vedere la pagina di accesso Clerk. Dopo l’autenticazione, verrai indirizzato a creare il tuo primo progetto o a unirti a uno esistente.
Verifica l’installazione
Segui questa checklist per confermare che tutto funzioni:
- Autenticazione: Puoi accedere e disconnetterti tramite Clerk. Il tuo utente appare nel dashboard Convex sotto la tabella
users. - Creazione del progetto: Puoi creare un nuovo progetto. Controlla che le tabelle
projects,projectMemberseprojectSettingssi popolino in Convex. - Aggiornamenti in tempo reale: Apri due schede del browser sullo stesso progetto. Crea un workflow in una scheda e conferma che appaia istantaneamente nell’altra.
- Memorizzazione delle chiavi API: Aggiungi una chiave API E2B nelle impostazioni del progetto e verifica che appaia con solo gli ultimi quattro caratteri visibili.
Eseguire i test
CodeCourier include sia test unitari (Vitest) sia test end-to-end (Playwright):
# Unit tests
npm run test
# Unit tests with watch mode
npm run test:watch
# Unit tests with coverage report
npm run test:coverage
# End-to-end tests (requires the dev server running)
npm run test:e2e
# E2E tests with interactive UI
npm run test:e2e:uiRisoluzione dei problemi
Convex dev non si avvia
Assicurati di aver effettuato l’accesso alla CLI Convex ( npx convex login) e che il tuo file convex.json punti a un progetto valido. Se vedi errori di validazione dello schema, controlla che tutti i file nella directory convex/ compilino senza errori TypeScript.
Loop di reindirizzamento dell’autenticazione Clerk
Verifica che NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYcorrisponda all’ambiente della tua applicazione Clerk (test vs produzione). Assicurati che il JWT template in Clerk sia chiamato “convex” e che l’issuer domain in CLERK_JWT_ISSUER_DOMAIN corrisponda esattamente.
La creazione della sandbox fallisce
Controlla che la tua chiave API E2B sia configurata correttamente nelle impostazioni del progetto (non in .env.local - le chiavi E2B sono memorizzate per progetto in Convex). Verifica che il server di sviluppo Trigger.dev sia in esecuzione e connesso. Controlla il dashboard Trigger.dev per i log di esecuzione dei job.
Errori di type checking
Esegui il type checker per trovare i problemi:
npm run typecheckIl progetto usa TypeScript 5.9+ in modalità strict. Convex genera automaticamente i tipi in convex/_generated/ - se mancano, assicurati che npx convex dev sia stato eseguito almeno una volta.