Skip to main content

πŸ“‹ 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​

ComponentTechnologyVersion
FrameworkNext.js16.0.6
UI LibraryMaterial-UI7.3.6
DatabaseMongoDB Atlas-
DriverMongoDB Native7.0.0
AuthenticationJWT-
EmailNodemailer-

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​

  1. Static Generation: ISR for published episodes
  2. Edge Caching: CDN caching for public pages
  3. Pagination: For large episode lists
  4. 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​

  1. Create MongoDB Atlas cluster
  2. Get connection string
  3. Create indexes (see Deployment guide)
  4. 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​

  1. No Pagination: All episodes loaded at once
  2. No Role-Based Permissions: All users have same access
  3. No Email Notifications: Manual review queue checking
  4. 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