BLOOM (Building Learning Objects with Online Modeling) is a web application for dental educators to generate 3D models from 2D dental images. These models can be used for teaching on VR-Haptics Dental Simulators, VR Headsets, or in classroom settings.
- Upload dental images to generate 3D models
- Interactive 3D model viewer with rotation and zoom controls
- Download generated 3D models for use in VR simulators
- Research participation for dental educators
- Responsive design for desktop and mobile devices
- Frontend: Next.js, React, TypeScript
- UI Components: shadcn/ui, Tailwind CSS
- 3D Rendering: React Three Fiber, Three.js
- Form Handling: React Hook Form, Zod
- State Management: React Context API
- Email Handling: Nodemailer
- Storage: AWS S3
- Testing: Jest, React Testing Library, Cypress
- CI/CD: GitHub Actions, Vercel
- Node.js 18.x or later
- npm or yarn
-
Clone the repository:
git clone https://github.com/yourusername/bloom-dental-3d.git cd bloom-dental-3d -
Install dependencies:
npm install # or yarn install -
Create a
.env.localfile in the root directory with the following variables:SMTP_HOST=your-smtp-host SMTP_PORT=587 SMTP_SECURE=false SMTP_USER=your-smtp-username SMTP_PASS=your-smtp-password SMTP_FROM=noreply@bloomdental3d.com MODEL_GENERATION_API_URL=https://api.example.com/generate-model MODEL_GENERATION_API_KEY=your-api-key STORAGE_BUCKET=bloom-dental-3d-models STORAGE_REGION=us-east-1 STORAGE_ACCESS_KEY=your-access-key STORAGE_SECRET_KEY=your-secret-key -
Start the development server:
npm run dev # or yarn dev -
Open http://localhost:3000 in your browser.
Run unit tests with Jest:
npm test
# or
yarn testRun tests in watch mode:
npm run test:watch
# or
yarn test:watchGenerate test coverage report:
npm run test:coverage
# or
yarn test:coverageRun end-to-end tests with Cypress:
npm run cypress:open
# or
yarn cypress:openRun end-to-end tests in headless mode:
npm run cypress:run
# or
yarn cypress:runRun end-to-end tests with the development server:
npm run e2e
# or
yarn e2eThe application is configured for deployment on Vercel. To deploy:
- Push your changes to the main branch.
- The GitHub Actions workflow will automatically deploy to Vercel.
To manually deploy to Vercel:
-
Install the Vercel CLI:
npm install -g vercel # or yarn global add vercel -
Login to Vercel:
vercel login
-
Deploy the application:
vercel
-
Deploy to production:
vercel --prod
Set the following environment variables in your Vercel project:
SMTP_HOSTSMTP_PORTSMTP_SECURESMTP_USERSMTP_PASSSMTP_FROMMODEL_GENERATION_API_URLMODEL_GENERATION_API_KEYSTORAGE_BUCKETSTORAGE_REGIONSTORAGE_ACCESS_KEYSTORAGE_SECRET_KEY
bloom/
├── public/ # Static assets
├── src/
│ ├── app/ # Next.js app router pages
│ │ ├── api/ # API routes
│ │ ├── about/ # About page
│ │ └── participate/ # Participate page
│ ├── components/ # React components
│ │ ├── layout/ # Layout components (Navbar, Footer)
│ │ ├── ui/ # UI components from shadcn/ui
│ │ ├── 3d-viewer/ # 3D viewer components
│ │ └── image-input/ # Image input components
│ ├── context/ # React context providers
│ ├── hooks/ # Custom React hooks
│ └── lib/ # Utility functions
├── cypress/ # End-to-end tests
├── .github/ # GitHub Actions workflows
└── ... # Configuration files
- Dr. John Oyebisi - Principal Investigator
- Dr. Greg Slabaugh - Co-Investigator
- Dr. Chris Phillips - Co-Investigator
This project is part of ongoing research at Queen Mary University of London.
For more information, please contact Dr. John Oyebisi at j.a.oyebisi@qmul.ac.uk