How johnitopaisah/portfolio-mcs works
Portfolio MCS combines a public portfolio and private CMS with an API-backed career-management product. The main career workflow discovers and scores jobs, lets the admin review and track applications, and supports email-response tracking and tailored CV documents. The README documents additional portfolio, analytics, and monitoring capabilities. Some implementation excerpts are partial, so the graph includes only supported links and uses documented capabilities where their source was not sampled.
Main entry points: client.js PostgreSQL · index.js REST API · dashboard Admin CMS · pipeline.js Job discovery
Components 29
User Interfaces
- Public portfolio
user-ui/src/app - Admin CMS
admin-ui/src/app/dashboard - Reference form
user-ui/src/app/referee-form/RefereeFormClient.tsx
API and Portfolio Content
- REST API
api/src/index.js - Portfolio routes
api/src/routes - Authentication
api/src/routes/auth.js - Blog ingestion
api/src/services/blogIngestService.js
Career Intelligence
- Job discovery
scraper/src/pipeline.js - Career-site sources
scraper/src/discovery - ATS parsers
scraper/src/parsers - Job filtering and scoring
api/src/services/jobIngestion/aiFilteringService.js - Job API
api/src/routes/jobs.js - Job administration
api/src/routes/admin/jobs.js
Application Workflow
- Application CRM
api/src/routes/applications.js - Email tracking worker
api/src/workers/emailWorker.js - Mailbox connectors
api/src/services/emailTracking - Email classification
api/src/services/emailTracking/emailClassificationService.js - CV and letter generation
api/src/services/cvGeneration - PDF rendering
api/src/services/cvGeneration/pdfService.js
Integrations and Observability
- PostgreSQL
api/src/db/client.js - Prometheus metrics
api/src/metrics.js - Monitoring stack
monitoring
Other components
- Portfolio visitor
- Administrator
- Referee
- Medium RSS
- Email providers
- Claude Haiku
- Chromium
Connections 37
- Portfolio visitor → Public portfolio: browses
- Administrator → Admin CMS: manages content
- Referee → Reference form: submits reference
- Public portfolio → REST API: requests content
- Admin CMS → REST API: calls API
- Reference form → REST API: submits reference
- REST API → Portfolio routes: dispatches
- REST API → Authentication: dispatches
- Portfolio routes → PostgreSQL: reads and writes
- Authentication → PostgreSQL: reads and writes
- Medium RSS → Blog ingestion: provides feed
- Blog ingestion → PostgreSQL: upserts posts
- REST API → Blog ingestion: admin sync
- Job discovery → Career-site sources: discovers listings
- Job discovery → ATS parsers: fetches board jobs
- Career-site sources → Job discovery: returns candidates
- ATS parsers → Job discovery: returns listings
- Job discovery → PostgreSQL: stores discovered jobs
- Job filtering and scoring → Claude Haiku: scores jobs
- Job filtering and scoring → PostgreSQL: records scores
- Job API → PostgreSQL: reads listings
- Job administration → PostgreSQL: manages jobs and targets
- Admin CMS → Job API: browses jobs
- Admin CMS → Job administration: configures targets
- Application CRM → PostgreSQL: manages applications
- Admin CMS → Application CRM: tracks applications
- Email tracking worker → Mailbox connectors: fetches messages
- Mailbox connectors → Email providers: reads inboxes
- Email tracking worker → Email classification: classifies messages
- Email tracking worker → PostgreSQL: matches and updates
- Application CRM → CV and letter generation: generates documents
- CV and letter generation → Claude Haiku: tailors content
- CV and letter generation → PDF rendering: renders document
- PDF rendering → Chromium: prints PDF
- PDF rendering → PostgreSQL: loads CV data
- REST API → Prometheus metrics: exposes metrics
- Monitoring stack → REST API: scrapes metrics