How kshitijkaria/sparcblog-ai works
SparcBlog AI gathers and relevance-scores RSS articles, turns selected coverage into brand-voiced blog drafts, and supports editorial review, publication, source management, and dashboard statistics. The Angular dashboard calls Spring Boot APIs; backend services use MongoDB and optional external AI/WordPress integrations. Edges follow the sampled service/controller calls and README-documented features; some frontend screens, statistics, scheduling, and publication wiring are represented at their exact tree paths but not independently inspected.
Main entry points: app.routes.ts Dashboard routes · NewsFetchService.java RSS fetch and scoring · DraftService.java Draft lifecycle · RawArticleRepository.java Article repository
Components 30
Editorial dashboard
- Angular app
frontend/src/app/app.component.ts - Dashboard routes
frontend/src/app/app.routes.ts - News feed
frontend/src/app/components/news-feed/news-feed.component.ts - Source manager
frontend/src/app/components/source-manager/source-manager.component.ts - Draft screens
frontend/src/app/components/draft-list/draft-list.component.ts - Dashboard stats
frontend/src/app/components/dashboard/dashboard.component.ts - Published blog
frontend/src/app/components/blog-list/blog-list.component.ts - Draft API client
frontend/src/app/services/draft.service.ts - News API client
frontend/src/app/services/news.service.ts - Source API client
frontend/src/app/services/source.service.ts
News intake
- RSS sources
- RSS fetch and scoring
backend/src/main/java/com/sparcblog/service/NewsFetchService.java - Source endpoints
backend/src/main/java/com/sparcblog/controller/SourceController.java - Article endpoints
backend/src/main/java/com/sparcblog/controller/NewsController.java - Scheduled fetch
backend/src/main/java/com/sparcblog/scheduler/NewsFetchScheduler.java
Draft workflow
- Draft endpoints
backend/src/main/java/com/sparcblog/controller/DraftController.java - Draft lifecycle
backend/src/main/java/com/sparcblog/service/DraftService.java - AI draft generation
backend/src/main/java/com/sparcblog/service/ClaudeContentService.java - Auto-publish workflow
backend/src/main/java/com/sparcblog/service/AutoPublishService.java - WordPress publisher
backend/src/main/java/com/sparcblog/service/WordPressPublishService.java
Backend and data
- Stored articles
backend/src/main/java/com/sparcblog/model/RawArticle.java - Article repository
backend/src/main/java/com/sparcblog/repository/RawArticleRepository.java - Source repository
backend/src/main/java/com/sparcblog/repository/NewsSourceRepository.java - Draft records
backend/src/main/java/com/sparcblog/model/BlogDraft.java - Draft repository
backend/src/main/java/com/sparcblog/repository/BlogDraftRepository.java - Statistics service
backend/src/main/java/com/sparcblog/service/StatsService.java - Statistics endpoint
backend/src/main/java/com/sparcblog/controller/StatsController.java
Other components
- Editor
- Generative AI API
- WordPress
Connections 34
- Editor → Angular app: uses
- Angular app → Dashboard routes: routes via
- Dashboard routes → News feed: routes to
frontend/src/app/app.routes.ts - Dashboard routes → Source manager: routes to
frontend/src/app/app.routes.ts - Dashboard routes → Draft screens: routes to
frontend/src/app/app.routes.ts - Dashboard routes → Dashboard stats: routes to
frontend/src/app/app.routes.ts - Dashboard routes → Published blog: routes to
frontend/src/app/app.routes.ts - News feed → News API client: calls
frontend/src/app/components/news-feed/news-feed.component.ts - Source manager → Source API client: calls
frontend/src/app/components/source-manager/source-manager.component.ts - Draft screens → Draft API client: calls
frontend/src/app/components/draft-list/draft-list.component.ts - News API client → Article endpoints: HTTP requests
- Source API client → Source endpoints: HTTP requests
- Draft API client → Draft endpoints: HTTP requests
- RSS sources → RSS fetch and scoring: provides feeds
README.md - RSS fetch and scoring → Source repository: loads active sources
backend/src/main/java/com/sparcblog/service/NewsFetchService.java - RSS fetch and scoring → Article repository: checks and saves
backend/src/main/java/com/sparcblog/service/NewsFetchService.java - Source endpoints → Source repository: manages sources
backend/src/main/java/com/sparcblog/controller/SourceController.java - Article endpoints → Article repository: reads articles
backend/src/main/java/com/sparcblog/controller/NewsController.java - Article endpoints → RSS fetch and scoring: triggers fetch
backend/src/main/java/com/sparcblog/controller/NewsController.java - Draft endpoints → Draft lifecycle: delegates
backend/src/main/java/com/sparcblog/controller/DraftController.java - Draft lifecycle → Article repository: selects and marks used
backend/src/main/java/com/sparcblog/service/DraftService.java - Draft lifecycle → AI draft generation: requests draft
backend/src/main/java/com/sparcblog/service/DraftService.java - AI draft generation → Generative AI API: generates content
backend/src/main/java/com/sparcblog/service/ClaudeContentService.java - Draft lifecycle → Draft repository: saves and updates
backend/src/main/java/com/sparcblog/service/DraftService.java - Statistics endpoint → Statistics service: delegates
- Statistics service → Draft repository: counts drafts
backend/src/main/java/com/sparcblog/service/StatsService.java - Statistics service → Article repository: counts articles
backend/src/main/java/com/sparcblog/service/StatsService.java - Statistics service → Source repository: counts sources
backend/src/main/java/com/sparcblog/service/StatsService.java - Scheduled fetch → RSS fetch and scoring: runs daily
README.md - Auto-publish workflow → RSS fetch and scoring: fetches news
backend/src/main/java/com/sparcblog/service/AutoPublishService.java - Auto-publish workflow → Article repository: checks availability
backend/src/main/java/com/sparcblog/service/AutoPublishService.java - Auto-publish workflow → Draft lifecycle: generates and publishes status
backend/src/main/java/com/sparcblog/service/AutoPublishService.java - Auto-publish workflow → WordPress publisher: publishes optionally
backend/src/main/java/com/sparcblog/service/AutoPublishService.java - WordPress publisher → WordPress: publishes post