How mustafaabdullahai-dev/postcraft-linkedin works
PostCraft is a multi-user LinkedIn content drafting, review, scheduling, and publishing platform. Users sign in with LinkedIn or as guests, submit a topic, and review an AI-generated post and image before approving, scheduling, or publishing it. The README also documents voice profiles, editing aids, filtering, export, and audit logging. The graph captures the documented workflow and major capabilities; source excerpts are partial, so uncertain route-to-service wiring is omitted. Provider and persistence details are represented at the documented subsystem level.
Main entry points: content_nodes.py Generation nodes · main.py FastAPI app · App.tsx Dashboard · posts.py Post routes
Components 26
Web client
- Dashboard
frontend/src/App.tsx - Sign-in UI
frontend/src/components/LoginScreen.tsx - Session client
frontend/src/services/auth.ts - REST client
frontend/src/services/api.ts
API and identity
- FastAPI app
backend/app/main.py - Auth routes
backend/app/api/routes/auth.py - Post routes
backend/app/api/routes/posts.py - Voice routes
backend/app/api/routes/voice.py - LinkedIn routes
backend/app/api/routes/linkedin.py
Content generation
- Agent workflow
backend/app/agents/graph.py - Generation nodes
backend/app/agents/nodes/content_nodes.py - Prompt templates
backend/app/prompts/content.py - Text provider
backend/app/services/llm.py - Quality validator
backend/app/services/validator.py - Image generation
backend/app/services/image_generation.py
Post lifecycle
- Post store
backend/app/models/post.py - Voice profiles
backend/app/models/voice.py - Scheduler
backend/app/services/scheduler.py
Persistence and integrations
- LinkedIn publisher
backend/app/services/linkedin.py - Audit logging
backend/app/services/google_sheets.py - Engagement analytics
backend/app/services/analytics.py
Other components
- Author
- Text model providers
- Image model providers
- Google Sheets
Connections 29
- Author → Dashboard: uses
- Dashboard → Sign-in UI: shows
- Sign-in UI → Session client: starts session
- Dashboard → Session client: checks session
- Dashboard → REST client: requests data
- Session client → FastAPI app: calls auth API
- REST client → FastAPI app: calls API
- FastAPI app → Auth routes: dispatches
- FastAPI app → Post routes: dispatches
- FastAPI app → Voice routes: dispatches
- FastAPI app → LinkedIn routes: dispatches
- Post routes → Agent workflow: runs generation
- Agent workflow → Generation nodes: dispatches stages
- Generation nodes → Prompt templates: uses prompts
- Generation nodes → Text provider: requests text
- Text provider → Text model providers: invokes
- Generation nodes → Quality validator: validates draft
- Generation nodes → Image generation: requests image
- Image generation → Image model providers: invokes
- Post routes → Post store: reads and writes
- Voice routes → Voice profiles: reads and writes
- Post routes → LinkedIn publisher: publishes approved
- Scheduler → Post store: loads scheduled posts
- Scheduler → LinkedIn publisher: publishes due posts
- LinkedIn publisher → LinkedIn: publishes as user
- LinkedIn routes → Engagement analytics: requests analytics
- Engagement analytics → LinkedIn publisher: uses LinkedIn client
- Generation nodes → Audit logging: records audit
- Audit logging → Google Sheets: writes rows