Runtime Flow
This page explains the main runtime paths in Revornix, from user requests to background processing, public surfaces, and notification delivery. It is intended as a practical system overview of how the product works at runtime.
Overview
The current Revornix runtime is mainly composed of:
gateway: the unified public entrypoint and split-region routing layerweb: the main user-facing product frontendapi: the synchronous business API and orchestration entrycelery-worker: the async workflow and heavy-job execution layerhot-news: the separate trending aggregation service- PostgreSQL / Redis / Milvus / Neo4j / MinIO: the underlying data and file infrastructure
In practice, gateway owns the public entrypoint and path-level routing, web handles interaction and presentation, api handles state changes and access control, celery-worker handles long-running processing, and hot-news handles trend aggregation.
Runtime sketch
1. User-facing request path
Most product pages follow the same main request path:
- The browser opens
webthrough the unified public entrypoint webcalls the unified publicapientrypoint based on the page action- If a gateway is enabled, it routes the request to the domestic or overseas API by path
- The target API reads from or writes to PostgreSQL, Redis, Milvus, Neo4j, and the file backend
- The API returns the immediate response
webrefreshes local state and renders the result
This path covers most synchronous interactions, including authentication, settings, document lists, section detail pages, the dashboard, Revornix AI settings, and notification management.
2. Document processing path
Document capabilities usually follow a two-part model: synchronous creation plus asynchronous enrichment.
- The user submits a link, file, audio source, or quick note in
web apiperforms permission checks, default-resource checks, document creation, and original file storageapicreates a document processing task and hands heavy work tocelery-workercelery-workerruns website parsing, file parsing, transcription, Markdown conversion, summarization, vectorization, graph generation, and related workflows based on the document type- Results are written back to the database and file system
webpolls or refetches API state and shows the updated status
Once completed, a document can gradually support:
- Markdown reading
- AI Q&A
- Vector retrieval
- Graph generation
- Podcast generation
- Inclusion in sections or the daily section
3. Section processing path
Sections also split into synchronous configuration and asynchronous generation.
- A user creates or updates section configuration
apisaves section metadata, labels, collaboration state, trigger mode, and schedule settings- When an event trigger or scheduled trigger fires,
apior the scheduler starts section processing celery-workeraggregates section documents, generates Markdown, adds illustrations, generates podcasts, builds section graphs, and creates PPT output when needed- After results are written back,
webrenders the body, media area, graph, comments, and subscription state on the section detail page
The daily section is a system-maintained section type, but it still follows the same underlying section-processing path with automatic defaults applied at creation time.
4. Revornix AI path
Revornix AI depends on models, engines, and the knowledge layer working together.
- The user submits a question or opens a document or section context in the frontend
webcalls the AI routes inapiapiapplies access control and request orchestration based on the active default models, default engines, plan entitlements, and available context- When the request involves document or section retrieval,
apicoordinates vector indexes, graph context, file content, and MCP capabilities - The result returns to
weband is rendered as a conversation, citations, Markdown, or other structured output
This path covers:
- Revornix AI chat
- Document AI Q&A
- Section AI Q&A
- Answers expanded through retrieval and graph context
5. Notification and subscription path
Notifications are not a standalone content workflow. They sit on top of events and scheduled tasks.
- The user creates notification sources, targets, and tasks in settings
apistores the rules and registers scheduled jobs when needed- When an event occurs or a scheduled time arrives, the notification task fires
apiorcelery-workerassembles the content and delivers it to email, Feishu, DingTalk, Telegram, or Apple devices
Notification tasks are commonly paired with:
- Daily section summaries
- Section updates
- Section subscriptions
- Section comments
6. Community and public-page path
The public community surfaces share the same core data model as the private workspace, but they run through dedicated public entry points.
- A user or search engine opens
/community,/section/[publish_uuid],/user/[id], or/document/[id] webpublic SEO pages request public-facing dataapireturns only the section, document, and user data that is allowed to be public- The page renders public content, structured metadata, and navigation relationships
This path allows public sections, public documents, and public creator pages to be accessed directly from outside the private workspace while keeping private data isolated.
7. Hot-search path
The hot-search capability runs through a separate service rather than the main API.
webcalls thehot-newsservice throughNEXT_PUBLIC_HOT_NEWS_API_PREFIXhot-newsaggregates ranking data from upstream sources- A normalized result is returned to the dashboard and hot-search pages
That means hot-news lives in the same monorepo but still runs as an independent process.
8. Local runtime order
The most common local development startup order is:
- Start PostgreSQL, Redis, Milvus, Neo4j, MinIO, and related infrastructure through
docker-compose-local.yaml - Run initialization scripts under
api - Start
api - Start
celery-worker - Start
hot-news - Start
web - Start
gatewaywhen you want a unified public entrypoint - Start
docsseparately when you want to preview the documentation site
The current local runtime model is “infrastructure via Compose, application services started separately,” not “all application services launched directly from one Compose file.”