Skip to Content
DocumentationQuick Start

Quick Start

If you want to try the product directly first, go to https://app.revornix.com . Users in mainland China should prefer the local mirror https://app.revornix.cn  for a more reliable connection. This page is mainly for local/self-hosted deployment.

If your main business services run in mainland China but you still need Google / GitHub login, also read Gateway Deployment so the public entrypoint and overseas auth API are planned together.

Manual Deployment Method

The Python side uses uv : api and worker are two members of a single uv workspace, sharing one uv.lock and one .venv at the repo root. There is no need for a separate environment per service — both dependency sets come out of the same resolution, so they cannot conflict. uv also downloads the matching Python itself, so none needs to be preinstalled.

Clone the repository to your local machine

git clone git@github.com:Qingyon-AI/Revornix.git cd Revornix

Install and start the foundational services

If you do not already have Postgres, Redis, Neo4j, MinIO, and Milvus running, use docker-compose-local.yaml together with .env.local.example to bootstrap the local infrastructure layer.

Note: If some of these dependencies are already running on your machine, disable the corresponding services in docker-compose-local.yaml to avoid port conflicts and accidental data mixups.

Copy the example file and adjust it together with the environment guide. In the simplest local setup, the most important custom value is usually OAUTH_SECRET_KEY.

cp .env.local.example .env.local

Start the local infrastructure services.

docker compose -f ./docker-compose-local.yaml --env-file .env.local up -d

Configure environment variables for each microservice

cp ./web/.env.example ./web/.env cp ./api/.env.example ./api/.env cp ./worker/.env.example ./worker/.env cp ./gateway/.env.example ./gateway/.env

hot-news does not currently ship a committed .env.example, so if you want custom configuration there, create hot-news/.env manually according to the variables described in the environment guide.

Update each service’s env file as needed. For details, see the Revornix Environment Variables section.

If you deploy manually, OAUTH_SECRET_KEY must be identical across API and Worker; otherwise, the authentication and internal service trust chain will break.

Start the core backend service

No manual database initialization. Every API startup runs an idempotent pass that creates tables, applies column migrations, seeds built-in data and ensures the Milvus collection exists — fresh installs and upgrades alike need nothing but starting the service.

app/, api/ and worker/ form a uv workspace: one uv.lock, one .venv at the repo root, shared by both Python services. Install once, from the repo root:

uv sync --all-packages uv run --directory api fastapi run main.py --port 8001

--directory is not optional. The log path and which .env gets read are both resolved from the working directory; running from the repo root picks up the root config instead — no error, just the wrong values.

Start the hot-search aggregation service

cd hot-news pnpm install pnpm build pnpm start

Start the Celery task queue

uv run --directory worker playwright install chromium-headless-shell uv run --directory worker celery -A common.celery.app worker \ --pool=threads --concurrency=20 --loglevel=info -E

Start the frontend service

cd web pnpm install pnpm build pnpm start

Start the gateway service

Do not skip this. NEXT_PUBLIC_API_PREFIX in web/.env.example points at http://localhost:8787/api — the gateway, not api’s 8001. Skip it and every frontend request goes to a port nobody is listening on: the UI fills with “Load failed” while the api log stays completely empty.

cd gateway go run ./cmd/gateway

Once all services are running:

  • The frontend entrypoint is always http://localhost:3000 
  • If you enable the gateway, use it for backend traffic splitting such as API / Hot News (for example http://localhost:8787 )
  • If you do not enable the gateway, update web/.env so NEXT_PUBLIC_API_PREFIX, NEXT_PUBLIC_NOTIFICATION_WS_API_PREFIX, and NEXT_PUBLIC_HOT_NEWS_API_PREFIX point directly to backend services
Last updated on