ClarifyMed uses MongoDB Atlas for data persistence. Each developer should use their own MongoDB Atlas account for development.
- Create account at MongoDB Atlas
- Create a free cluster
- Get your connection string
- Set up database access user
- Configure network access (IP whitelist)
Create .env.local in project root:
MONGODB_URI=mongodb+srv://<username>:<password>@<cluster>.mongodb.net/clarifymed?retryWrites=true&w=majority
MONGODB_DB=clarifymed
Run environment verification:
npm run verify-envinterface User {
_id: ObjectId
email: string
name: string
auth0Id: string
createdAt: Date
updatedAt: Date
}interface MedicalTerm {
_id: ObjectId
term: string
definition: string
technicalDefinition?: string
category?: string[]
synonyms?: string[]
metadata: {
complexity: 'basic' | 'intermediate' | 'advanced'
language: string
verified: boolean
}
usage: {
searchCount: number
lastAccessed: Date
}
}interface MedicalQuery {
_id: ObjectId
userId: ObjectId
originalText: string
clarifiedText: string
status: 'pending' | 'completed' | 'failed'
metadata: {
model: 'gemini-2.0-flash'
geminiConfig: {
temperature: number
topP: number
topK: number
maxOutputTokens: number
}
}
}POST /api/users- Create userGET /api/users- Get usersGET /api/users?email=- Get user by email
POST /api/medical-terms- Create termGET /api/medical-terms- List termsGET /api/medical-terms?term=- Search terms
POST /api/medical-queries- Create queryGET /api/medical-queries- List queriesGET /api/medical-queries?userId=- Get user's queries
npm run test:dbnpm run verify-envnpm run seed- Never commit
.env.localor credentials - Use your own MongoDB Atlas account
- Keep database name as
clarifymed - Run tests before committing changes
users.createIndex({ email: 1 }, { unique: true })
users.createIndex({ auth0Id: 1 }, { unique: true })medicalTerms.createIndex({ term: 1 }, { unique: true })
medicalTerms.createIndex({ term: 'text', synonyms: 'text' })
medicalTerms.createIndex({ category: 1 })
medicalTerms.createIndex({ 'usage.searchCount': -1 })medicalQueries.createIndex({ userId: 1 })
medicalQueries.createIndex({ status: 1 })
medicalQueries.createIndex({ createdAt: -1 })