Dental Scope
L'anatomia dei denti in 3D, interattiva
Cosa fa
Un modello 3D interattivo dei denti e della bocca, utile a studenti di odontoiatria e a dentisti per spiegare le cure ai pazienti.
Come guadagna
Presentato su Hacker News dal suo creatore, che non dichiara incassi. Idee nostre per guadagnare con un progetto simile: abbonamento per studi dentistici che lo usano con i pazienti, licenze per università.
Rendilo tuo
- Lo stesso per altre parti del corpo, per fisioterapisti o osteopati che spiegano ai pazienti.
- Versione semplice per i bambini, per spiegare come lavarsi i denti.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Bocca 3D": un modello 3D interattivo di denti e bocca per studenti di odontoiatria e per i dentisti, che lo usano alla poltrona per spiegare le cure ai pazienti. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con il modello da ruotare e i prezzi
2. Visualizzatore: arcate, singoli denti, sezioni (smalto, dentina, polpa, radici)
3. Modalità paziente: mostra una cura con animazione semplice (otturazione, devitalizzazione, impianto)
4. Quiz per studenti: riconosci il dente e la sua numerazione
5. Area dello studio: logo e note per i pazienti
Stile: medico e pulito: sfondo bianco, azzurro #0EA5E9, smalto bianco avorio, carattere "Inter", modello 3D al centro con i comandi grandi e chiari. Nessuna immagine generica di stock.
Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.
2. Database, account e sicurezza
Collega il progetto a Supabase e attiva la registrazione con email e password.
Crea queste tabelle:
- "denti": numero FDI, nome, arcata, tipo, numero di radici, descrizione
- "risultati_quiz": punteggio, errori per dente, data, collegati all'utente
Regole di sicurezza obbligatorie:
- le schede dei denti sono pubbliche
- ogni utente vede solo i suoi risultati
- nessun dato dei pazienti viene salvato
Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.
3. Toccare un dente e riconoscerlo
Il modello 3D (file glTF di arcate e denti, creato o acquistato con licenza commerciale) si carica con Three.js. Toccando un dente si evidenzia e compare la scheda con il numero FDI (es. 36 = primo molare inferiore sinistro), nome, radici e descrizione (codice nei Dettagli tecnici).
Comandi: ruota, zoom, apri/chiudi la bocca, nascondi gengive, sezione trasversale per vedere smalto, dentina e polpa.
Modalità paziente: grandi pulsanti con le cure più comuni e animazioni semplici, per spiegare in 30 secondi cosa si farà. Nessun dato del paziente viene inserito o salvato.
4. Quiz per studenti
Quiz: il dente si illumina e lo studente deve indicare numero FDI e nome; oppure si chiede un numero e lo studente lo tocca. Statistiche sugli errori più frequenti per ripassare.
Per gli studi: logo dello studio sull'interfaccia e la possibilità di mandare al paziente un link alla spiegazione della sua cura.
5. Pagamenti con Stripe
Aggiungi un abbonamento a 9 € al mese per studenti, 29 € al mese per studi. Gratis l'utente ha: visualizzatore delle arcate senza sezioni e senza modalità paziente. Con il piano Pro sblocca: sezioni, modalità paziente con le animazioni, quiz completi e personalizzazione dello studio.
A pagamento riuscito il webhook porta l'utente al piano Pro; se l'abbonamento viene disdetto o non rinnovato lo riporta al piano gratuito.
Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.
6. Controlli specifici di questo progetto
Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Correttezza: fai controllare numerazione FDI e nomi di tutti i 32 denti permanenti da un odontoiatra o da un docente prima del lancio.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Toccare un dente nel modello 3D
Un raggio parte dal punto toccato sullo schermo e trova il dente colpito; il nome dell'oggetto nel modello è il suo numero FDI.
import * as THREE from "three";
const NOMI: Record<number, string> = {
1: "Incisivo centrale", 2: "Incisivo laterale", 3: "Canino", 4: "Primo premolare",
5: "Secondo premolare", 6: "Primo molare", 7: "Secondo molare", 8: "Terzo molare (del giudizio)",
};
const QUADRANTI: Record<number, string> = {
1: "superiore destro", 2: "superiore sinistro", 3: "inferiore sinistro", 4: "inferiore destro",
};
// Numero FDI: prima cifra il quadrante, seconda la posizione (es. 36)
export const nomeDente = (fdi: number) =>
NOMI[fdi % 10] + " " + QUADRANTI[Math.floor(fdi / 10)];
export function attivaSelezione(
canvas: HTMLCanvasElement, camera: THREE.Camera, denti: THREE.Object3D[],
onDente: (fdi: number, oggetto: THREE.Mesh) => void,
) {
const raggio = new THREE.Raycaster();
const punto = new THREE.Vector2();
canvas.addEventListener("pointerdown", (e) => {
const r = canvas.getBoundingClientRect();
punto.set(((e.clientX - r.left) / r.width) * 2 - 1, -((e.clientY - r.top) / r.height) * 2 + 1);
raggio.setFromCamera(punto, camera);
const colpito = raggio.intersectObjects(denti, true)[0];
if (!colpito) return;
const mesh = colpito.object as THREE.Mesh;
const fdi = Number(mesh.name.replace(/\D/g, "")); // nel modello i denti si chiamano "dente_36"
if (fdi) onDente(fdi, mesh);
});
}
Pezzi comuni a tutti i progetti
Glossario
- Numerazione FDI
- Il sistema internazionale per numerare i denti: la prima cifra indica il quadrante della bocca, la seconda la posizione.
- glTF
- Il formato più usato per i modelli 3D sul web, leggero e veloce da caricare.