π Project Summary
Technical overview and architecture documentation for MongoDB Minute.
Architecture Overviewβ
MongoDB Minute is built with Next.js 16 using the App Router pattern, providing server-side rendering with client-side interactivity where needed.
Technology Stackβ
| Component | Technology | Version |
|---|---|---|
| Framework | Next.js | 16.0.6 |
| UI Library | Material-UI | 7.3.6 |
| Database | MongoDB Atlas | - |
| Driver | MongoDB Native | 7.0.0 |
| Authentication | JWT | - |
| Nodemailer | - |
Application Structureβ
mikes-mongodb-minute/
βββ app/ # Next.js App Router
β βββ admin/ # Admin interface (protected)
β β βββ page.js # Dashboard
β β βββ settings/page.js # User settings
β β βββ episodes/ # Episode management
β βββ episodes/ # Public interface
β β βββ [slug]/page.js # Episode detail
β βββ api/ # REST API
β β βββ episodes/ # Episode endpoints
β β βββ user/ # User settings
β β βββ auth/ # Authentication
β βββ page.js # Home page
βββ components/ # React components
β βββ EpisodeCard.js # Episode preview
β βββ EpisodeForm.js # Episode form
β βββ WorkflowStatus.js # Workflow panel
β βββ AIGenerateDialog.js # AI generation
βββ lib/ # Utilities
β βββ mongodb.js # Database connection
β βββ episodes.js # Data operations
β βββ auth.js # Authentication
β βββ email.js # Email service
βββ models/ # Mongoose schemas
βββ Episode.js # Episode model
Database Schemaβ
Episodes Collectionβ
{
_id: ObjectId,
episodeNumber: Number,
title: String (required),
slug: String (unique, indexed),
category: String (required),
difficulty: String (required),
status: String (default: "draft"),
// 60-second script
hook: String,
problem: String,
tip: String,
quickWin: String,
cta: String,
visualSuggestion: String,
videoUrl: String,
socialLinks: {
youtube: String,
tiktok: String,
linkedin: String,
instagram: String,
x: String
},
// Workflow tracking
workflow: {
currentStage: String, // draft | tech-review | approved
draftedBy: { email, name, timestamp },
submittedForReview: { email, name, timestamp },
reviewedBy: { email, name, timestamp, notes, decision },
approvedBy: { email, name, timestamp, notes },
history: [{
action: String,
stage: String,
user: { email, name },
timestamp: Date,
notes: String
}]
},
createdAt: Date,
updatedAt: Date
}
Users Collectionβ
{
_id: ObjectId,
email: String (unique, MongoDB.com only),
settings: {
openaiApiKey: String (encrypted),
socialHandles: {
youtube: String,
tiktok: String,
linkedin: String,
instagram: String,
x: String
}
},
createdAt: Date,
updatedAt: Date
}
Key Componentsβ
EpisodeCardβ
Reusable episode preview card with:
- Episode metadata display
- Workflow status badges
- Social media links
- Responsive design
EpisodeFormβ
Comprehensive form for creating/editing episodes:
- All metadata fields
- 60-second script structure
- Social media links
- Validation and auto-save
WorkflowStatusβ
Complete workflow management interface:
- Visual progress stepper
- Stage-specific actions
- Workflow history timeline
- QR code generation
API Designβ
RESTful Endpointsβ
- GET
/api/episodes- List episodes - GET
/api/episodes/[id]- Get episode - POST
/api/episodes- Create episode - PUT
/api/episodes/[id]- Update episode - DELETE
/api/episodes/[id]- Delete episode
Workflow Endpointsβ
- POST
/api/episodes/[id]/workflow/submit-review - POST
/api/episodes/[id]/workflow/review - POST
/api/episodes/[id]/workflow/approve
Utility Endpointsβ
- GET
/api/episodes/[id]/qrcode - GET
/api/user/settings - PUT
/api/user/settings
Design Patternsβ
Server vs Client Componentsβ
Server Components (default):
- Home page
- Episode detail pages
- Static content
Client Components ("use client"):
- Admin dashboard
- Forms and interactive UI
- Workflow management
- Navigation
Data Layerβ
Centralized database operations in lib/episodes.js:
listEpisodes()getEpisodeById()getEpisodeBySlug()createEpisode()updateEpisode()deleteEpisode()initializeWorkflow()submitForReview()reviewEpisode()approveEpisode()
Authenticationβ
JWT-based magic link authentication:
- Passwordless login
- MongoDB.com email restriction
- 15-minute magic link expiration
- 7-day session tokens
- HTTP-only cookies
Performance Considerationsβ
Current Implementationβ
- Server-side rendering with
force-dynamic - Single query per page load
- No caching (intentional for admin workflow)
- Connection pooling for MongoDB
Optimization Opportunitiesβ
- Static Generation: ISR for published episodes
- Edge Caching: CDN caching for public pages
- Pagination: For large episode lists
- Indexes: MongoDB query optimization
Security Featuresβ
- Email domain validation (MongoDB.com only)
- JWT token expiration
- HTTP-only cookies
- Secure flag in production
- Middleware route protection
- Encrypted API key storage
Development Workflowβ
Local Developmentβ
npm install
npm run dev
Server runs on http://localhost:3001 (or next available port)
Environment Setupβ
Create .env.local:
MONGODB_URI=your-connection-string
MONGODB_DB=mongodb_minute
JWT_SECRET=your-secret-key
# ... other variables
Database Setupβ
- Create MongoDB Atlas cluster
- Get connection string
- Create indexes (see Deployment guide)
- Test connection
Testingβ
Manual Testing Checklistβ
- Authentication flow
- Episode CRUD operations
- Workflow system
- Review queue
- QR code generation
- User settings
- Public site browsing
- Search and filtering
Known Limitationsβ
Phase 1 Limitationsβ
- No Pagination: All episodes loaded at once
- No Role-Based Permissions: All users have same access
- No Email Notifications: Manual review queue checking
- No Analytics: View tracking not implemented
Future Enhancementsβ
- Analytics and metrics
- Role-based permissions
- Email notifications
- Slack integration
- Batch operations
- Advanced search
Version Historyβ
v1.1 (December 2025)β
- β Workflow & approval system
- β Review queue
- β QR code generation
- β User settings
- β Enhanced navigation
- β Social media integration
v1.0 (Initial Release)β
- β Basic CRUD operations
- β Authentication system
- β Public-facing site
- β Admin interface
Resourcesβ
Supportβ
For questions or issues:
- Review this documentation
- Check API reference
- Review deployment guide
- Contact development team
Last Updated: December 4, 2025
Version: 1.1
Status: Production Ready