How dev0711/echo works
Echo is a Markdown content-authoring and cross-platform publishing product. A creator edits and saves a post, previews platform-specific renderings, then publishes immediately or schedules delivery; the backend tracks per-platform status so retries can skip completed destinations. The graph also preserves AI assistance, media upload, analytics, and authentication. Several frontend-to-backend and adapter dispatch details are not shown in the excerpts, so those links are dashed rather than presented as inspected calls.
Main entry points: PostService.java Post service · page.tsx Dashboard · Editor.tsx Content editor · controller REST controllers
Components 21
Authoring and previews
- Dashboard
frontend/src/app/dashboard/page.tsx - Content editor
frontend/src/components/Editor.tsx - Block editor
frontend/src/components/BlockEditor.tsx - AI assistant
frontend/src/components/AiAssistantPanel.tsx - Preview panel
frontend/src/components/PreviewPanel.tsx - Platform renderer
frontend/src/components/PreviewRenderer.tsx - Content serializers
frontend/src/lib/serializers.ts - Analytics dashboard
frontend/src/components/AnalyticsDashboard.tsx
API and identity
- REST controllers
backend/src/main/java/com/echo/controller - OAuth and JWT
backend/src/main/java/com/echo/security/OAuthSuccessHandler.java - Login and callback
frontend/src/app/login/page.tsx
Publishing workflow
- Post service
backend/src/main/java/com/echo/service/PostService.java - Scheduled publisher
backend/src/main/java/com/echo/scheduler/PostSchedulerWorker.java - Platform formatters
backend/src/main/java/com/echo/platform - Platform publishers
backend/src/main/java/com/echo/platform
Persistence and integrations
- Gemini service
backend/src/main/java/com/echo/service/GeminiService.java - Media signing
backend/src/main/java/com/echo/controller/MediaController.java - MongoDB repositories
backend/src/main/java/com/echo/repository
Other components
- Creator
- Cloudinary
- Publishing platforms
Connections 24
- Creator → Dashboard: authors in
- Dashboard → Content editor: edits with
- Content editor → Block editor: uses blocks
- Content editor → AI assistant: requests assistance
- Content editor → Preview panel: previews post
- Preview panel → Platform renderer: renders platforms
- Platform renderer → Content serializers: serializes blocks
frontend/src/components/PreviewRenderer.tsx - Creator → Login and callback: signs in
- Login and callback → OAuth and JWT: completes OAuth
- OAuth and JWT → MongoDB repositories: reads and saves users
backend/src/main/java/com/echo/security/OAuthSuccessHandler.java - OAuth and JWT → OAuth and JWT: generates JWT
backend/src/main/java/com/echo/security/OAuthSuccessHandler.java - Dashboard → REST controllers: calls API
- REST controllers → Post service: delegates post work
- Post service → MongoDB repositories: reads and writes posts
backend/src/main/java/com/echo/service/PostService.java - Post service → MongoDB repositories: saves versions
backend/src/main/java/com/echo/service/PostService.java - Post service → Platform formatters: selects formatter
backend/src/main/java/com/echo/service/PostService.java - Post service → Platform publishers: dispatches publishing
backend/src/main/java/com/echo/service/PostService.java - Platform publishers → Publishing platforms: publishes to
- Scheduled publisher → MongoDB repositories: queries scheduled posts
backend/src/main/java/com/echo/scheduler/PostSchedulerWorker.java - Scheduled publisher → Post service: invokes scheduled publish
backend/src/main/java/com/echo/scheduler/PostSchedulerWorker.java - Dashboard → Analytics dashboard: views analytics
- REST controllers → Gemini service: requests AI assistance
- REST controllers → Media signing: requests upload signature
- Media signing → Cloudinary: signs uploads for