How mustafa-fathur/prd-maker-with-llm works
PRD Maker takes project details from an authenticated user, sends them through the Express API to the Flask LLM service, and persists the generated structured PRD for review and editing. Users can also manage PRDs and personnel, archive or delete documents, and request a styled PDF. The README documents Cloud SQL and Cloud Storage deployment integrations, but sampled source does not establish their wiring; the graph therefore shows only the evidenced model persistence and PDF generation. The LLM service calls OpenAI, as shown in its source.
Main entry points: api.js API client · prdController.js PRD controller · App.jsx App routes · server.js Express server
Components 22
User Interface
- App routes
Cloud_Computing/frontend/src/App.jsx - Auth screens
Cloud_Computing/frontend/src/components/Guest/Login.jsx - PRD forms
Cloud_Computing/frontend/src/components/Users/PRDForm.jsx - PRD views
Cloud_Computing/frontend/src/components/Users/PRDList.jsx - Personnel UI
Cloud_Computing/frontend/src/components/Users/Personil.jsx - Auth state
Cloud_Computing/frontend/src/hooks/useAuth.js - API client
Cloud_Computing/frontend/src/utils/api.js
Express API
- Express server
Cloud_Computing/backend/server.js - Auth routes
Cloud_Computing/backend/routes/authRoutes.js - Auth controller
Cloud_Computing/backend/controllers/authController.js - Auth middleware
Cloud_Computing/backend/middleware/authMiddleware.js - PRD routes
Cloud_Computing/backend/routes/prdRoutes.js - PRD controller
Cloud_Computing/backend/controllers/prdController.js - Personnel routes
Cloud_Computing/backend/routes/personilRoutes.js - Personnel controller
Cloud_Computing/backend/controllers/personilController.js
PRD Data
- PRD models
Cloud_Computing/backend/models/index.js - Relational store
PRD Generation
- Flask endpoint
Machine_Learning/app/main.py - PRD generator
Machine_Learning/app/llm.py
Document Output
- PDF renderer
Cloud_Computing/backend/config/puppeteer.js
Other components
- User
- OpenAI API
Connections 31
- User → App routes: uses
- App routes → Auth screens: routes
- App routes → PRD forms: routes
- App routes → PRD views: routes
- App routes → Personnel UI: routes
- Auth screens → API client: requests
- PRD forms → API client: submits
- PRD views → API client: requests
- Personnel UI → API client: requests
- Auth state → API client: checks token
- API client → Express server: HTTP requests
- Express server → Auth routes: dispatches
- Express server → PRD routes: dispatches
- Express server → Personnel routes: dispatches
- Auth routes → Auth controller: dispatches
- Auth routes → Auth middleware: guards logout
- Auth controller → PRD models: reads/writes users
- PRD routes → Auth middleware: guards requests
- PRD routes → PRD controller: dispatches
- PRD controller → PRD models: reads/writes PRDs
- PRD controller → Flask endpoint: posts inputs
- Flask endpoint → PRD generator: generates PRD
- PRD generator → OpenAI API: requests completion
- OpenAI API → PRD generator: returns JSON
- Flask endpoint → PRD controller: returns PRD
- Personnel routes → Auth middleware: guards requests
- Personnel routes → Personnel controller: dispatches
- Personnel controller → PRD models: reads/writes personnel
- PRD models → Relational store: persists records
- PRD controller → PDF renderer: renders document
- PRD controller → API client: returns PDF URL