TutorLoom
The learning platform for companies, colleges and training institutes. Free and open source, with an Enterprise edition.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Ambiente di studio per chi prepara esami universitari. Parti dai tuoi appunti (testo, .md, PDF)
e/o da materiale cercato online dall'AI; ottieni un modulo di studio con argomenti, flashcard,
quiz e un piano a ritroso dalla data d'esame, costruito con metodi di studio che hanno evidenza
scientifica.
npm install
export ANTHROPIC_API_KEY=sk-ant-... # facoltativa: senza, l'app parte in "modalità base"
npm start # http://127.0.0.1:3000
npm run demo # AI simulata + esame demo: per provare tutto senza chiave
npm test
Le stesse prove (più la build della pagina Claude e della versione web) girano su GitHub Actions a ogni pull request e a ogni push su main (.github/workflows/test.yml).
Serve Node ≥ 20 (≥ 22.13 per eseguire i test, che leggono PDF con pdf.js). Nessun build step: il frontend è JavaScript ES modules servito così com'è; pdf.js (pdfjs-dist) viene servito da node_modules solo quando si apre un PDF.
Lo stesso Studify si può pubblicare come pagina Claude (artifact): niente Node, niente chiave API. Usa l'account Claude di chi apre la pagina e salva i dati nel suo spazio privato.
npm run build:artifact # crea dist/studify.html (un solo file, ~2,7 MB: include pdf.js e KaTeX)
Si pubblica con le capacità sample (Claude), db + user (archivio privato per utente) e downloads (backup).
Differenze rispetto alla versione con server:
Server (npm start) | Pagina Claude | |
|---|---|---|
| Generazione modulo | una richiesta, PDF compresi (anche scansioni) | a passi (schema → carte e domande per argomento); max ~200k caratteri; di un PDF si usa il testo (le scansioni no) |
| Ricerca web: corsi dell'ateneo, piano di studi, materiali | sì | no (Claude non può navigare): il piano si incolla (letto da Claude) o si scrive; al posto dei materiali web una «traccia dal programma» marcata non verificata |
| Esami passati | analisi e correzione anche con le prove in PDF (le pagine della prova vanno a Claude); i PDF con più prove si dividono dal testo | prove come testo (anche da PDF); stessa analisi, simulazione e correzione |
| Dati | IndexedDB nel browser | db privato per utente (non visibile agli altri nemmeno se condividi la pagina); aperta su due dispositivi o in due schede, un salvataggio non cancella quello dell'altro (vedi sotto, «Dati») |
| Costo | la tua chiave API | uso del tuo account Claude |
npm run build:harness crea dist/harness.html: la pagina con un window.claude finto, per provarla in un browser normale.
I moduli public/js/api.js e public/js/backend.js vengono sostituiti da artifact/api.js e artifact/backend.js in fase di build.
Per aprire Studify ad altri studenti, con registrazione e accesso:
npm run build:web # crea dist-web/: index.html (landing), app.html (servita su /app), js/, termini.html, privacy.html, 404.html,
# icone, og.png, robots.txt, sitemap.xml, site.webmanifest
node scripts/make-assets.mjs # rigenera web/assets/ (anteprima social e icone): serve Playwright, solo se cambia il marchio
Landing (web/landing.html, web/landing.css): pagina statica su / (circa 45 KB compressa, senza il codice dell'app),
con un'unica azione principale «Inizia gratis» → /app?entra=registrati. Chi ha già una sessione nel browser vede «Apri Studify».
Pagine del sito: oltre alla home, /funzionalita (web/funzionalita.html: una sezione per ogni parte dell'app, con l'anteprima
accanto e i link per saltare alla sezione) e /prezzi (web/prezzi.html: i piani, la tabella di confronto, cosa succede quando
il credito finisce, le domande sul pagamento; esiste solo con BILLING=on). Il menu in alto e il piè di pagina sono gli stessi
ovunque e li genera la build (scripts/build-artifact.mjs), con la voce della pagina segnata; sul telefono le voci stanno in
«Menu». Gli script comuni (pulsanti per chi ha già l'account, invito fisso sul telefono, entrate allo scorrimento, «Come funziona»)
sono in web/site.js, inserito in ogni pagina. vercel.json serve /funzionalita e /prezzi senza .html; la sitemap le elenca.
La scheda in cima è un piano vero: scegli fra quanti giorni c'è l'esame (5–60) e quante ore al giorno, e vedi le fasi,
i prossimi giorni con le date di oggi e la sessione di oggi. Li calcola buildPlan, lo stesso dell'app, con gli argomenti
dell'esame demo (web/landing-plan.js, provato in test/landing.test.js; la build lo incorpora nella pagina, circa 3 KB compressi).
Con JavaScript una riga invita a provarla («sposta la data dell'esame e cambia le ore»); senza, restano i valori d'esempio, senza comandi.
Le domande in fondo rispondono anche a «Cosa mi serve per iniziare?» e «L'intelligenza artificiale può sbagliare?». Scorrendo, le sezioni entrano con una breve dissolvenza; chi ha chiesto
meno movimento le vede subito, e ciò che è già in vista all'apertura non si nasconde mai.
All'apertura la scheda del piano si compone (i giorni contano fino al valore, la barra delle fasi si riempie, entrano i giorni
e le attività di oggi; se muovi il cursore durante il conteggio vale il tuo valore).
«Come funziona» ha quattro passi (carica i materiali, argomenti flashcard e quiz, il piano, le simulazioni d'esame): su computer
i passi a sinistra e a destra l'app ridisegnata in piccolo con i suoi colori e componenti; i passi avanzano da soli mentre la
sezione è in vista (barra sotto il passo attivo), si fermano col mouse o il fuoco sopra e per sempre al primo clic. Sul telefono
e senza JavaScript ogni passo ha la sua anteprima sotto. «Cosa ottieni» è una griglia di schede: flashcard con ripasso distribuito,
quiz con la fonte, dispensa da stampare, piano nel calendario, interrogazioni. Solo CSS più poche righe di JavaScript, senza
librerie; con «movimento ridotto» o senza JavaScript la pagina resta ferma.
Sul telefono (sotto 680px), quando i pulsanti in cima escono dallo schermo, compare lo stesso invito fisso in basso; sparisce
davanti all'invito finale e al piè di pagina, per non coprirli.
Se un link delle email (conferma, recupero password) arriva alla radice invece che su , la landing lo inoltra all'app.
La fascia d'apertura indaco scuro (, classe in ) è condivisa con la schermata d'accesso,
così il passaggio dalla landing alla registrazione resta nello stesso stile; il marchio (quadrato con il triangolo) è lo stesso
in app, landing, pagine legali e icone.
Lancio
og.png (1200×630).
L'indirizzo pubblico viene da STUDIFY_SITE_URL oppure da VERCEL_PROJECT_PRODUCTION_URL. /app ha noindex.favicon.svg, favicon.ico, favicon-32.png, apple-touch-icon.png, icon-192.png, icon-512.png, site.webmanifest.robots.txt (esclude /app e /api/) e sitemap.xml con le tre pagine pubbliche.web/404.html, noindex): Vercel la serve per ogni indirizzo che non esiste, con i link all'app e alla home.aria-invalid, collegati al messaggio d'errore) e il cursore va sul primo;
durante l'invio il modulo è bloccato e il pulsante dice che cosa sta succedendo («Accesso in corso…», «Creazione dell'account…»).
Dopo la registrazione il messaggio «Ti abbiamo mandato un'email…» fa da pagina di ringraziamento, e alla conferma l'app saluta
con «Email confermata: benvenuto in Studify!»./_vercel/insights/script.js risponde 404, serve un nuovo deploy di produzione.
Le istruzioni della dashboard (npm i @vercel/analytics, componente <Analytics/>) sono per Next.js e qui non servono.
Con STUDIFY_ANALYTICS=off si spegne; con STUDIFY_ANALYTICS=/percorso/script.js si usa il percorso indicato dalla
dashboard, se diverso.È la stessa app della pagina Claude, con al posto di window.claude un sostituto (web/claude.js):
| Come funziona | |
|---|---|
| Accesso | Supabase Auth: registrazione con conferma dell'email, accesso, password dimenticata, cambio password, uscita, eliminazione dell'account (web/auth.js, web/gate.js). Con più schede aperte la sessione è una sola: rinnova una scheda alla volta (Web Locks), le altre prendono il token nuovo invece di riusare quello vecchio, che Supabase rifiuterebbe facendo uscire tutte; l'uscita da una scheda vale anche per le altre. La schermata è divisa in due: a sinistra il pannello indaco con la presentazione, a destra il modulo; sul telefono il pannello si riduce a intestazione. In cima al modulo «← Torna al sito», e il logo porta al sito (serve anche dall'app installata, che non ha il tasto «indietro»); «Esci» riporta al sito, non alla schermata d'accesso. |
| Consenso | Alla registrazione sono obbligatorie tre caselle: Termini, Informativa privacy (compreso l'invio dei materiali a Claude negli USA), maggiore età. Versione e data finiscono nei metadati dell'account e nella tabella consents. Quando l'informativa cambia (PRIVACY_VERSION), chi si era iscritto prima vede una volta, dopo l'accesso, una finestra con il cambiamento in breve (PRIVACY_CHANGES) e il link al testo; «Ho capito» salva privacy_seen nei metadati (presa visione, il consenso iniziale resta com'è). |
| Dati | Tabella docs su Supabase (progetto studify, Francoforte), con row level security: ognuno legge e scrive solo le proprie righe. Stesso formato a blocchi della pagina Claude (artifact/backend.js, testato in test/sync.test.js): i blocchi cambiati si scrivono con un nome nuovo e l'indice passa ai nuovi in una sola scrittura, che riesce solo se online c'è ancora la revisione letta per ultima (sul sito una sola richiesta a Supabase, condizionata). Così due dispositivi online insieme non si cancellano il lavoro: se un altro ha salvato prima, si rilegge, si unisce e si riprova; tornando su una scheda rimasta aperta si riprende subito il lavoro fatto altrove. Un'interruzione a metà lascia l'ultimo stato intero. I file (PDF, foto) restano nel browser (IndexedDB) e si cancellano all'uscita. Aprendo un esame su un altro dispositivo, i PDF che non ci sono hanno l'avviso «Il PDF è su un altro dispositivo» e il pulsante «Carica di nuovo»; le funzioni che li leggono (simulazione, esercizi, libri) dicono la stessa cosa invece di un errore generico. |
| Installabile e offline | site.webmanifest più un service worker (web/sw.js, versione e file riempiti dalla build): si installa come app dal browser e si apre anche senza connessione. La pagina passa prima dalla rete (gli aggiornamenti arrivano subito), i moduli dalla cache; Supabase e non passano mai dalla cache. Una resta in IndexedDB (, testato): senza rete si studia con quella, anche con la sessione scaduta, e le modifiche restano segnate «da inviare» finché l'archivio online non risponde. Claude offline dice che manca la connessione. Ogni modifica va subito anche nella copia locale (segnata «da inviare»): chi chiude la pagina prima del salvataggio online, che parte dopo un secondo e mezzo, la ritrova al prossimo accesso. Limiti: serve almeno un accesso con la rete in quel browser; se nel frattempo modifichi lo stesso account da un altro dispositivo, alla riapertura (o al ritorno della rete) le due versioni si uniscono esame per esame (, testato, lo stesso dell'unione online): vale quella cambiata; se lo stesso esame è cambiato da tutte e due le parti si uniscono i campi (i progressi, cioè flashcard, quiz, argomenti studiati, attività e minuti del giorno, voce per voce; il piano si rifà). Solo se cambia lo stesso altro campo (nome, data, materiali, modulo) si tiene l'online e la versione di questo dispositivo diventa una copia «(da questo dispositivo)», con un avviso. L'unione si fa sempre con l'ultima modifica di qui, anche fatta mentre si unisce, e aggiorna gli esami in memoria senza sostituirli: una generazione con Claude ancora in corso scrive nello stato che si salva ( in ). I file condivisi tra le due copie non si cancellano finché uno dei due esami li usa. All'uscita la copia si cancella con i file. |
Variabili d'ambiente su Vercel
| Variabile | Default | Note |
|---|---|---|
ANTHROPIC_API_KEY | – | Obbligatoria per le funzioni AI (tipo Sensitive). Senza, l'app funziona ma Claude risulta non configurato. |
SUPABASE_SERVICE_ROLE_KEY | – | Obbligatoria anche lei (tipo Sensitive, da Supabase: Project Settings → API Keys → secret): con questa la funzione registra il consumo di Claude, che gli utenti non possono scrivere da sé. Senza, Claude risulta non configurato. Mai nel codice né incollata in chat. |
ANTHROPIC_MODEL | claude-sonnet-5-5 | Costa la metà di claude-opus-5-5 (2/10 $ per milione di token contro 4/20), quindi il credito del mese dura circa il doppio. Per tornare a Opus imposta claude-opus-5-5. La parte fissa dei prompt ripetuti (regole e contesto dell'esame per ogni argomento, materiali per ogni capitolo della dispensa, esercizi svolti) va in cache (cachePrefix): dalla seconda richiesta costa un decimo. |
ANTHROPIC_MAX_TOKENS | 32000 | Tetto di una singola risposta. |
USER_MONTHLY_LIMIT_USD / TOTAL_MONTHLY_LIMIT_USD | 3 / 30 | Credito al mese per utente (piano Gratis: con gli abbonamenti accesi il predefinito scende a 1, quanto basta per un modulo intero) / per tutto il servizio (vale solo per chi non paga). |
BILLING | (vuota) | on accende gli abbonamenti: prezzi nella landing, sezione «Abbonamento» nell'account, parti sugli abbonamenti in termini e privacy. Spenta, tutto resta gratis come prima. |
STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRICE_{BASE,PRO}_{MONTH,YEAR} | — | Solo con BILLING=on: chiavi di Stripe e i 4 prezzi (il webhook scrive gli abbonamenti con SUPABASE_SERVICE_ROLE_KEY). Tutte segrete, solo su Vercel. BASE_MONTHLY_LIMIT_USD / PRO_MONTHLY_LIMIT_USD (3 / 5: ogni piano resta in attivo anche se il credito si usa tutto) cambiano il credito dei piani. Guida passo passo: docs/abbonamenti.md. |
SUPABASE_URL / |
Supabase (schema in supabase/schema.sql): tabelle docs, ai_usage, consents con RLS, più ai_requests (richieste in corso, solo chiave di servizio); funzioni record_ai_usage_for,
begin_ai_request e finish_ai_request (solo chiave di servizio), ai_spend_this_month (all'utente la sua spesa; il totale del mese solo alla chiave di servizio), delete_my_account. In Authentication → URL Configuration vanno impostati Site URL e
Redirect URLs con l'indirizzo Vercel, altrimenti i link delle email (conferma, recupero password) portano a localhost.
Come Redirect URL conviene https://<dominio>/**, che comprende /app; se è autorizzata solo la radice, la landing inoltra comunque il link.
Il server email predefinito di Supabase invia pochissime email l'ora: per un uso reale serve un SMTP proprio
(Authentication → Emails → SMTP Settings). I modelli delle email in italiano, con oggetto e istruzioni, sono in
supabase/email/ (da incollare in Authentication → Emails → Templates). Per la prima prova con uno studente vero c'è
una scaletta in docs/prova-con-uno-studente.md.
vercel.json imposta build, cartella dist-web, regione della funzione (Francoforte, fra1, accanto al database), la rotta /app,
durata massima (300 s), intestazioni di sicurezza (CSP, niente iframe) e cache lunga per /js/.
Prove: test/web.test.js (funzione, accesso, sample, db, controlli di registrazione).
UNIBS, POLIMI, UNIBO…);.ics con una sessione
per ogni giorno di studio, all'ora scelta (predefinita 18:00, salvata nell'esame) e con le attività nella descrizione, più il giorno
dell'appello. Si apre con Google Calendar, Calendario di Apple o Outlook, che mandano l'avviso anche ad app chiusa: è il modo
di avere promemoria senza un server di notifiche. Il file è una fotografia del piano: se il piano cambia va riscaricato
(gli eventi hanno un UID fisso per giorno, quindi i calendari che lo supportano li aggiornano invece di duplicarli).
Logica in public/js/calendar.js (testata); le ore sono «fluttuanti», senza fuso.
L'app ricorda che cosa c'era nel file scaricato: se poi il piano cambia (giorni saltati, «Anticipa», nuova data,
ora diversa) la scheda dice «Il piano è cambiato» e propone «Riscarica il calendario». Il nuovo file ha un
SEQUENCE più alto (i calendari che lo rispettano aggiornano gli eventi) e annulla i giorni che non ci sono più;
le app che non lo rispettano possono mostrare doppioni, e la scheda lo dice.| Sessione | Cosa fa |
|---|---|
| Flashcard | Richiamo attivo con ripasso dilazionato (SM-2 semplificato) che non programma nulla oltre il giorno prima dell'esame. Le carte nuove sono introdotte solo per argomenti già studiati. |
| Quiz | Errori recenti per primi, argomenti alternati (interleaving). Risposte aperte: spunti i punti della rubrica o chiedi la correzione all'AI. |
| Simulazione | Con le prove degli anni passati: una prova vera a tempo, senza appunti, corretta da Claude o da te. Senza: quiz a tempo con correzione differita. |
| Spiega a parole tue | Per scritto aperto/orale: spieghi senza appunti e confronti con i punti chiave. «Simulazione orale» sceglie 3 argomenti pesati per importanza. |
| Progressi | Stima di preparazione per argomento (flashcard solide + quiz), con i punti dove conviene lavorare. |
La scheda Ricevimento di ogni esame raccoglie i dubbi che solo il docente può sciogliere, presi da ciò che l'app ha già trovato: com'è fatto l'esame (se il tipo di prova non viene da una fonte), due fonti che non concordano, una soluzione ufficiale che Claude trova sospetta, i capitoli del libro che i materiali non coprono («sono nel programma?»), le domande dei quiz Moodle senza risposta; spenti di partenza, gli argomenti che sono solo sulle slide e quello dove sbagli di più (con il consiglio di portare un esercizio). Si aggiungono domande proprie, si copia l'elenco (per la mail di prenotazione o il telefono) e dopo si scrivono le risposte: diventano il materiale «Ricevimento del …», che l'AI usa come indicazioni del docente di prima mano (sciolgono i dubbi segnati, e ciò che dicono sull'esame finisce tra le sue frasi). Un file con «ricevimento» nel nome è riconosciuto allo stesso modo.
Nel modulo, il riquadro «Studiate in gruppo?»:
Dal piano di studi (pagina «Ateneo e corso di studio») la pagina Libretto fa la checklist degli insegnamenti per anno: superati con voto e data, da superare con l'esame in preparazione nell'app (data e preparazione) o il pulsante «Prepara», che crea l'esame con CFU e tipo di prova dal piano. In cima: esami e CFU superati sul totale, media ponderata sui CFU (la lode vale 30, le idoneità non contano) e base di laurea stimata (media × 110 / 30), con l'avvertenza che ogni ateneo la calcola a modo suo. Il libretto si incolla da Esse3 (Carriera → Libretto, copia della tabella): si leggono le righe con voto e data, abbinate al piano per nome; quelle che nel piano non ci sono vengono aggiunte. Delle opzioni a scelta contano solo quelle superate o segnate «lo scelgo». Quando la data di un esame dell'app è passata, il libretto chiede com'è andata. In home una riga riassume a che punto sei. Il libretto ufficiale resta quello dell'ateneo: qui si copia, non si sostituisce.
La scelta dei metodi dipende da tipo di prova, giorni rimasti e livello di partenza (public/js/methods.js),
non da «sono visivo/uditivo»: gli studi non mostrano benefici nell'adattare il metodo allo stile dichiarato.
Si privilegiano le tecniche ad alta utilità (richiamo attivo, ripasso distribuito, prove pratiche) rispetto a
rilettura ed evidenziazione (Dunlosky et al. 2013; Roediger & Karpicke 2006). Per i principianti il piano parte da
una prima lettura guidata e da esempi svolti (expertise reversal); con pochi giorni passa in «modalità emergenza»
(solo richiamo attivo e prove sugli argomenti più probabili).
| Variabile | Default | Note |
|---|---|---|
ANTHROPIC_API_KEY | – | Senza chiave l'app funziona in modalità base. |
STUDIFY_MODEL | claude-opus-5-5 | Puoi usare un modello più economico (es. claude-sonnet-5-5). |
PORT / HOST | 3000 / 127.0.0.1 | Con host non-loopback le protezioni same-origin sono disattivate: non esporre il server senza autenticazione, spendi i tuoi crediti API. |
STUDIFY_MOCK | – | 1 = AI simulata (anche npm run demo). |
La generazione di un modulo usa un'unica richiesta (con ragionamento adattivo e output strutturato) e può costare qualche dollaro per materiali molto lunghi: parti da pochi appunti per farti un'idea.
server/ index.js (HTTP, job asincroni, sicurezza) · ai.js (Anthropic SDK) · schema.js (zod)
shared/ prompts.js, normalize.js: usati sia dal server sia dalla pagina Claude (nessuna dipendenza)
artifact/ versione pagina Claude: generate.js (sample), backend.js (db), api.js, entry.js, template, fake-claude (prove)
web/ versione web: entry, auth (Supabase Auth), claude (sample/db/user), gate (accesso e account), backend, template, pagine legali
api/ funzioni Vercel: /api/claude (_lib.js: controlli, costi, streaming), /api/billing e /api/stripe-webhook
(_billing.js: piani, pagamento, portale, webhook); testate
supabase/ schema.sql (tabelle, RLS, funzioni)
scripts/ build-artifact.mjs (esbuild: pagina Claude, harness, --web)
public/js/ logica pura (testata): dates, methods, srs, planner, progress, local-builder, tabular (CSV/xlsx), importers, timetable,
lessons (lezioni e prove), past-exams (prove, frequenze, voto), exam-questions (elenchi di domande d'esame),
worked (metodi del docente ed esercizi guidati), exercises (esercitazioni con le soluzioni), books (libri consigliati),
dispense (indice delle dispense del docente, slide o dispense), transcripts (sottotitoli e trascrizioni con i tempi),
moodle (revisione dei quiz del docente)
stato/UI: store (IndexedDB), domain, api, ui, views/*
public/demo/ modulo demo (Microeconomia)
test/ node --test: logica pura + client AI con SDK simulato
demo/ demo guidata (pagina a parte, React + Tailwind): non fa parte dell'app, vedi demo/README.md
Import da Notion/Drive, OCR di foto degli appunti, calendario con più esami in competizione per il tempo, calibrazione della fiducia (quanto sei sicuro prima di vedere la risposta), file (PDF, foto) sincronizzati anche nella versione web (Supabase Storage).
/app--hero.on-heroweb/web.css#13733a; nel tema
scuro i toast usano --brand-ink)./app/js/*/api/claudeweb/offline.jspublic/js/merge.jsapplyMergedpublic/js/merge.js| Claude | Funzione Vercel api/claude.js: verifica il token Supabase, controlla il credito del mese, prenota il costo stimato della richiesta (begin_ai_request: controllo e prenotazione in un passo solo, contando anche le richieste ancora in corso; al più 4 insieme per utente), chiama Claude con la chiave del gestore in streaming, poi toglie la prenotazione e registra token e costo veri (finish_ai_request, in ai_usage). Così tante richieste partite insieme non superano il credito: si può sforare al più di quelle già in corso. Una prenotazione rimasta aperta (funzione interrotta) smette di contare dopo 10 minuti. Prove in test/reserve.test.js. Risponde con righe JSON (NDJSON). |
| Limiti di spesa | Per utente (USER_MONTHLY_LIMIT_USD, predefinito 3 $) e complessivo (TOTAL_MONTHLY_LIMIT_USD, predefinito 30 $) al mese. Accanto ai pulsanti che usano Claude (genera e aggiungi al modulo, dispensa, esami passati) c'è la riga «Credito di Claude del mese: 40% usato»; dall'80% in su le richieste lunghe chiedono conferma, oltre il 100% si fermano prima di partire con un messaggio chiaro (public/js/credit.js, public/js/views/credit.js). |
| Pagine legali | web/termini.html, web/privacy.html: bozze con segnaposto ([INDIRIZZO], [DA VERIFICARE]; titolare Angelo Bregu, [email protected]) da far rivedere a un legale prima dell'apertura al pubblico. |
SUPABASE_KEYprogetto studify |
Solo se cambi progetto (anche STUDIFY_SUPABASE_URL/_KEY al build). La chiave è quella pubblica: i dati li protegge la RLS. |
.icsRRULEEXDATE.xlsx.csv.tsv.pdf.xls.pdf, .docx, .pptx, .txt, .md),
oppure «Cerca online con l'AI» (ricerca web con fonti e link, che puoi leggere ed eliminare prima di usarla).
$…$ nel testo, $$…$$ a sé); i prompt lo chiedono esplicitamente, con i comandi supportati. Un «\frac» scritto con un solo
backslash in una stringa JSON diventa un carattere di controllo (form feed) senza dare errore, come \beta, \theta, \nabla, \rho:
repairLatex lo ripara in tutto il testo generato. In ingresso: i PDF con il server arrivano a Claude come PDF (formule
comprese); nella pagina Claude il testo estratto le spezza su più righe, quindi «Leggi formule e figure con Claude» manda
le pagine scelte come immagini e Claude le trascrive in LaTeX (3 pagine per richiesta, al massimo 30 per volta; l'app segnala le
pagine che sembrano avere formule rovinate). Le equazioni di Word e PowerPoint (OMML) sono convertite in LaTeX: frazioni,
apici/pedici, radici, sommatorie e integrali, parentesi, funzioni e limiti, accenti, matrici, sistemi. L'«Anteprima del testo»
di ogni materiale mostra le formule disegnate, per controllarle prima di generare il modulo.examHints): le frasi come «questo all'esame lo chiedo sempre», «il boxplot non lo
chiedo», con fonte e argomento, nel riquadro «Cosa ha detto il docente sull'esame» del modulo e nella pagina dell'argomento.
Devono essere copiate dai materiali: l'app controlla che compaiano nel testo mandato all'AI e scarta quelle inventate o
parafrasate (da un PDF non si può verificare: restano, segnate come non verificate). In modalità base si trovano con le regole.