How mongodb/sample-app-nodejs-mflix works
MFlix is a full-stack movie browsing and analytics application. A user opens the Next.js movie experience, browses paginated movies or submits filters/search terms, and receives movie results from the Express API backed by MongoDB. The same API supports CRUD editing, MongoDB Search, optional Voyage AI-backed vector search, and aggregation reports. The graph separates client presentation, HTTP routing, movie operations, and persistence/integrations. Unsampled controller and route sections support documented capabilities, but only wiring evidenced by the tree, README, and excerpts is shown.
Components 15
Client Experience
- Movies Experience
client/app/movies/page.tsx - Search Controls
client/app/components/SearchMovieModal/SearchMovieModal.tsx - Analytics Experience
client/app/aggregations/page.tsx - API Client
client/app/lib/api.ts
API Routing
- Express Application
server/src/app.ts - Movie Routes
server/src/routes/movies.ts
Movie Operations
- Movie CRUD
server/src/controllers/movieController.ts - Movie Search
server/src/controllers/movieController.ts - Movie Analytics
server/src/controllers/movieController.ts - Query Validation
server/src/utils/mongoQuery.ts - Error Handling
server/src/utils/errorHandler.ts
Data Integrations
- Database Config
server/src/config/database.ts - MongoDB Dataset
- Voyage AI
Other components
- User Browser
Connections 21
- User Browser → Movies Experience: opens app
- User Browser → Analytics Experience: opens reports
- Movies Experience → Search Controls: opens search
- Search Controls → Movies Experience: submits terms
- Movies Experience → API Client: fetches movies
- Analytics Experience → API Client: fetches reports
- API Client → Express Application: HTTP requests
- Express Application → Movie Routes: mounts routes
- Movie Routes → Movie CRUD: dispatches CRUD
- Movie Routes → Movie Search: dispatches search
- Movie Routes → Movie Analytics: dispatches analytics
- Movie Routes → Error Handling: wraps errors
- Movie CRUD → Query Validation: sanitizes updates
- Movie CRUD → Database Config: gets collection
- Movie Search → Database Config: gets collection
- Movie Analytics → Database Config: gets collection
- Movie CRUD → MongoDB Dataset: reads writes
- Movie Search → MongoDB Dataset: searches movies
- Movie Analytics → MongoDB Dataset: aggregates movies
- Database Config → MongoDB Dataset: connects database
- Movie Search → Voyage AI: creates embeddings