From add86331068708b48843affa221988a694ebb2ac Mon Sep 17 00:00:00 2001
From: Pratyush Sharma <56130065+pratyush618@users.noreply.github.com>
Date: Wed, 6 May 2026 01:01:53 +0530
Subject: [PATCH] docs: drop /docs prefix from doc URLs
Move the docs route into a `(docs)` route group with a required
catch-all so docs render at site root (e.g. /architecture/resources)
instead of /docs/architecture/resources. Drop the redundant docs
index page since the marketing home already serves that role.
---
docs/content/docs/api-reference/canvas.mdx | 6 +--
docs/content/docs/api-reference/cli.mdx | 2 +-
docs/content/docs/api-reference/context.mdx | 6 +--
docs/content/docs/api-reference/index.mdx | 18 +++----
docs/content/docs/api-reference/overview.mdx | 16 +++---
.../docs/api-reference/queue/index.mdx | 20 +++----
.../docs/api-reference/queue/resources.mdx | 2 +-
docs/content/docs/api-reference/result.mdx | 16 +++---
docs/content/docs/api-reference/task.mdx | 10 ++--
.../docs/architecture/failure-model.mdx | 4 +-
docs/content/docs/architecture/index.mdx | 16 +++---
docs/content/docs/architecture/overview.mdx | 14 ++---
docs/content/docs/architecture/storage.mdx | 2 +-
.../content/docs/getting-started/concepts.mdx | 4 +-
.../docs/getting-started/installation.mdx | 2 +-
.../docs/getting-started/quickstart.mdx | 12 ++---
.../advanced-execution/batch-enqueue.mdx | 2 +-
.../docs/guides/advanced-execution/index.mdx | 12 ++---
.../docs/guides/core/execution-model.mdx | 4 +-
docs/content/docs/guides/core/index.mdx | 12 ++---
docs/content/docs/guides/core/tasks.mdx | 2 +-
docs/content/docs/guides/core/workers.mdx | 2 +-
docs/content/docs/guides/core/workflows.mdx | 6 +--
.../docs/guides/extensibility/index.mdx | 6 +--
.../docs/guides/extensibility/middleware.mdx | 2 +-
docs/content/docs/guides/index.mdx | 18 +++----
.../docs/guides/integrations/index.mdx | 12 ++---
.../content/docs/guides/integrations/otel.mdx | 2 +-
.../docs/guides/integrations/prometheus.mdx | 2 +-
.../docs/guides/integrations/sentry.mdx | 2 +-
.../docs/guides/observability/dashboard.mdx | 2 +-
.../docs/guides/observability/index.mdx | 8 +--
.../docs/guides/observability/monitoring.mdx | 6 +--
.../docs/guides/operations/deployment.mdx | 8 +--
docs/content/docs/guides/operations/index.mdx | 14 ++---
docs/content/docs/guides/operations/keda.mdx | 4 +-
.../docs/guides/operations/testing.mdx | 4 +-
.../guides/reliability/error-handling.mdx | 4 +-
.../docs/guides/reliability/guarantees.mdx | 2 +-
.../content/docs/guides/reliability/index.mdx | 12 ++---
.../guides/resources/dependency-injection.mdx | 4 +-
docs/content/docs/guides/resources/index.mdx | 12 ++---
.../docs/guides/resources/interception.mdx | 4 +-
.../docs/guides/resources/observability.mdx | 4 +-
.../content/docs/guides/resources/proxies.mdx | 2 +-
.../docs/guides/workflows/building.mdx | 2 +-
.../content/docs/guides/workflows/fan-out.mdx | 2 +-
docs/content/docs/guides/workflows/index.mdx | 16 +++---
docs/content/docs/index.mdx | 53 -------------------
docs/content/docs/meta.json | 1 -
docs/content/docs/more/comparison.mdx | 2 +-
docs/content/docs/more/examples/index.mdx | 12 ++---
docs/content/docs/more/faq.mdx | 12 ++---
.../[[...slug]] => (docs)/[...slug]}/page.tsx | 4 +-
docs/src/app/{docs => (docs)}/layout.tsx | 2 +-
.../llms.mdx/{docs => }/[[...slug]]/route.ts | 2 +-
.../src/app/og/{docs => }/[...slug]/route.tsx | 2 +-
docs/src/lib/landing-content.tsx | 24 ++++-----
docs/src/lib/layout.shared.tsx | 10 ++--
docs/src/lib/shared.ts | 6 +--
60 files changed, 210 insertions(+), 264 deletions(-)
delete mode 100644 docs/content/docs/index.mdx
rename docs/src/app/{docs/[[...slug]] => (docs)/[...slug]}/page.tsx (94%)
rename docs/src/app/{docs => (docs)}/layout.tsx (79%)
rename docs/src/app/llms.mdx/{docs => }/[[...slug]]/route.ts (91%)
rename docs/src/app/og/{docs => }/[...slug]/route.tsx (94%)
diff --git a/docs/content/docs/api-reference/canvas.mdx b/docs/content/docs/api-reference/canvas.mdx
index 3e984d1..b5e91f9 100644
--- a/docs/content/docs/api-reference/canvas.mdx
+++ b/docs/content/docs/api-reference/canvas.mdx
@@ -94,7 +94,7 @@ chain.apply(queue: Queue | None = None) -> JobResult
```
Execute the chain by enqueuing and waiting for each step sequentially. Returns
-the [`JobResult`](/docs/api-reference/result) of the **last** step.
+the [`JobResult`](/api-reference/result) of the **last** step.
Each step's return value is prepended to the next mutable signature's args.
Immutable signatures (`task.si()`) receive their args as-is.
@@ -154,7 +154,7 @@ group.apply(queue: Queue | None = None) -> list[JobResult]
```
Enqueue all signatures and return a list of
-[`JobResult`](/docs/api-reference/result) handles. Jobs run concurrently
+[`JobResult`](/api-reference/result) handles. Jobs run concurrently
across available workers.
```python
@@ -209,7 +209,7 @@ chord.apply(queue: Queue | None = None) -> JobResult
Execute the group, wait for all results, then run the callback with the list
of results prepended to its args (unless immutable). Returns the
-[`JobResult`](/docs/api-reference/result) of the callback.
+[`JobResult`](/api-reference/result) of the callback.
```python
@queue.task()
diff --git a/docs/content/docs/api-reference/cli.mdx b/docs/content/docs/api-reference/cli.mdx
index bd68f64..65284f9 100644
--- a/docs/content/docs/api-reference/cli.mdx
+++ b/docs/content/docs/api-reference/cli.mdx
@@ -162,7 +162,7 @@ The server exposes three routes:
taskito scaler --app myapp:queue --port 9091 --target-queue-depth 5
```
-See the [KEDA Integration guide](/docs/guides/operations) for Kubernetes deploy
+See the [KEDA Integration guide](/guides/operations) for Kubernetes deploy
templates.
## Error messages
diff --git a/docs/content/docs/api-reference/context.mdx b/docs/content/docs/api-reference/context.mdx
index a35f386..c4373bc 100644
--- a/docs/content/docs/api-reference/context.mdx
+++ b/docs/content/docs/api-reference/context.mdx
@@ -86,8 +86,8 @@ current_job.update_progress(progress: int) -> None
```
Update the job's progress percentage (0–100). The value is written directly to
-the database and can be read via [`job.progress`](/docs/api-reference/result)
-or [`queue.get_job()`](/docs/api-reference/queue/jobs).
+the database and can be read via [`job.progress`](/api-reference/result)
+or [`queue.get_job()`](/api-reference/queue/jobs).
```python
@queue.task()
@@ -116,7 +116,7 @@ current_job.publish(data: Any) -> None
```
Publish a partial result visible to
-[`job.stream()`](/docs/api-reference/result) consumers. Use this to stream
+[`job.stream()`](/api-reference/result) consumers. Use this to stream
intermediate data from long-running tasks.
`data` must be JSON-serializable. It is stored as a task log entry with
diff --git a/docs/content/docs/api-reference/index.mdx b/docs/content/docs/api-reference/index.mdx
index b778af5..7ee5a0a 100644
--- a/docs/content/docs/api-reference/index.mdx
+++ b/docs/content/docs/api-reference/index.mdx
@@ -23,55 +23,55 @@ signature, parameters, return values, and a short example.
}
title="Overview"
- href="/docs/api-reference/overview"
+ href="/api-reference/overview"
description="The shape of the public API — what's stable, what's experimental."
/>
}
title="Queue"
- href="/docs/api-reference/queue"
+ href="/api-reference/queue"
description="Construct queues, enqueue jobs, manage workers, inspect state."
/>
}
title="Task"
- href="/docs/api-reference/task"
+ href="/api-reference/task"
description="The @queue.task decorator — options, methods, async variants."
/>
}
title="Result"
- href="/docs/api-reference/result"
+ href="/api-reference/result"
description="JobResult, polling, awaiting, timeouts, sync and async APIs."
/>
}
title="Context"
- href="/docs/api-reference/context"
+ href="/api-reference/context"
description="current_job — progress, logging, cancellation, timeouts inside a task."
/>
}
title="Canvas"
- href="/docs/api-reference/canvas"
+ href="/api-reference/canvas"
description="chain, group, chord — the Celery-compatible composition primitives."
/>
}
title="Workflows"
- href="/docs/api-reference/workflows"
+ href="/api-reference/workflows"
description="The DAG builder — fan-out, fan-in, gates, conditions, sub-workflows."
/>
}
title="Testing"
- href="/docs/api-reference/testing"
+ href="/api-reference/testing"
description="test_mode, MockResource, fixtures for synchronous in-process verification."
/>
}
title="CLI"
- href="/docs/api-reference/cli"
+ href="/api-reference/cli"
description="taskito worker, dashboard, info — every flag and subcommand."
/>
diff --git a/docs/content/docs/api-reference/overview.mdx b/docs/content/docs/api-reference/overview.mdx
index 162254d..d203902 100644
--- a/docs/content/docs/api-reference/overview.mdx
+++ b/docs/content/docs/api-reference/overview.mdx
@@ -7,11 +7,11 @@ Complete Python API reference for all public classes and methods.
| Class | Description |
|-------|-------------|
-| [Queue](/docs/api-reference/queue) | Central orchestrator — task registration, enqueue, workers, and all queue operations |
-| [TaskWrapper](/docs/api-reference/task) | Handle returned by `@queue.task()` — `delay()`, `apply_async()`, `map()`, signatures |
-| [JobResult](/docs/api-reference/result) | Handle for an enqueued job — status polling, result retrieval, dependencies |
-| [JobContext](/docs/api-reference/context) | Runtime context inside a running task — job ID, retry count, progress updates |
-| [Canvas](/docs/api-reference/canvas) | Workflow primitives — `Signature`, `chain`, `group`, `chord` |
-| [Workflows](/docs/api-reference/workflows) | DAG workflow builder, `WorkflowRun`, gates, sub-workflows |
-| [Testing](/docs/api-reference/testing) | Test mode, `TestResult`, `MockResource` for unit testing tasks |
-| [CLI](/docs/api-reference/cli) | `taskito` command-line interface — `worker`, `info`, `scaler` |
+| [Queue](/api-reference/queue) | Central orchestrator — task registration, enqueue, workers, and all queue operations |
+| [TaskWrapper](/api-reference/task) | Handle returned by `@queue.task()` — `delay()`, `apply_async()`, `map()`, signatures |
+| [JobResult](/api-reference/result) | Handle for an enqueued job — status polling, result retrieval, dependencies |
+| [JobContext](/api-reference/context) | Runtime context inside a running task — job ID, retry count, progress updates |
+| [Canvas](/api-reference/canvas) | Workflow primitives — `Signature`, `chain`, `group`, `chord` |
+| [Workflows](/api-reference/workflows) | DAG workflow builder, `WorkflowRun`, gates, sub-workflows |
+| [Testing](/api-reference/testing) | Test mode, `TestResult`, `MockResource` for unit testing tasks |
+| [CLI](/api-reference/cli) | `taskito` command-line interface — `worker`, `info`, `scaler` |
diff --git a/docs/content/docs/api-reference/queue/index.mdx b/docs/content/docs/api-reference/queue/index.mdx
index 6b27f86..23e58b4 100644
--- a/docs/content/docs/api-reference/queue/index.mdx
+++ b/docs/content/docs/api-reference/queue/index.mdx
@@ -10,11 +10,11 @@ The central class for creating and managing a task queue.
The Queue API is split across several pages for readability:
- - **[Job Management](/docs/api-reference/queue/jobs)** — get, list, cancel, archive, replay jobs
- - **[Queue & Stats](/docs/api-reference/queue/queues)** — rate limits, concurrency, pause/resume, statistics, dead letters
- - **[Workers & Hooks](/docs/api-reference/queue/workers)** — run workers, lifecycle hooks, circuit breakers, async methods
- - **[Resources & Locking](/docs/api-reference/queue/resources)** — resource system, distributed locks
- - **[Events & Logs](/docs/api-reference/queue/events)** — event callbacks, webhooks, structured logs
+ - **[Job Management](/api-reference/queue/jobs)** — get, list, cancel, archive, replay jobs
+ - **[Queue & Stats](/api-reference/queue/queues)** — rate limits, concurrency, pause/resume, statistics, dead letters
+ - **[Workers & Hooks](/api-reference/queue/workers)** — run workers, lifecycle hooks, circuit breakers, async methods
+ - **[Resources & Locking](/api-reference/queue/resources)** — resource system, distributed locks
+ - **[Events & Logs](/api-reference/queue/events)** — event callbacks, webhooks, structured logs
## Constructor
@@ -54,7 +54,7 @@ Queue(
| `result_ttl` | `int \| None` | `None` | Auto-cleanup completed/dead jobs older than this many seconds. `None` disables. |
| `middleware` | `list[TaskMiddleware] \| None` | `None` | Queue-level middleware applied to all tasks. |
| `drain_timeout` | `int` | `30` | Seconds to wait for in-flight tasks during graceful shutdown. |
-| `interception` | `str` | `"off"` | Argument interception mode: `"strict"`, `"lenient"`, or `"off"`. See [Resource System](/docs/guides/resources). |
+| `interception` | `str` | `"off"` | Argument interception mode: `"strict"`, `"lenient"`, or `"off"`. See [Resource System](/guides/resources). |
| `max_intercept_depth` | `int` | `10` | Max recursion depth for argument walking. |
| `recipe_signing_key` | `str \| None` | `None` | HMAC-SHA256 key for proxy recipe integrity. Falls back to `TASKITO_RECIPE_SECRET` env var. |
| `max_reconstruction_timeout` | `int` | `10` | Max seconds allowed for proxy reconstruction. |
@@ -92,7 +92,7 @@ Queue(
) -> TaskWrapper
```
-Register a function as a background task. Returns a [`TaskWrapper`](/docs/api-reference/task).
+Register a function as a background task. Returns a [`TaskWrapper`](/api-reference/task).
| Parameter | Type | Default | Description |
|---|---|---|---|
@@ -109,7 +109,7 @@ Register a function as a background task. Returns a [`TaskWrapper`](/docs/api-re
| `circuit_breaker` | `dict \| None` | `None` | Circuit breaker config: `{"threshold": 5, "window": 60, "cooldown": 120}`. |
| `middleware` | `list[TaskMiddleware] \| None` | `None` | Per-task middleware, applied in addition to queue-level middleware. |
| `expires` | `float \| None` | `None` | Seconds until the job expires if not started. |
-| `inject` | `list[str] \| None` | `None` | Resource names to inject as keyword arguments. See [Resource System](/docs/guides/resources). |
+| `inject` | `list[str] \| None` | `None` | Resource names to inject as keyword arguments. See [Resource System](/guides/resources). |
| `serializer` | `Serializer \| None` | `None` | Per-task serializer override. Falls back to queue-level serializer. |
| `max_concurrent` | `int \| None` | `None` | Max concurrent running instances. `None` = no limit. |
@@ -157,11 +157,11 @@ queue.enqueue(
) -> JobResult
```
-Enqueue a task for execution. Returns a [`JobResult`](/docs/api-reference/result) handle.
+Enqueue a task for execution. Returns a [`JobResult`](/api-reference/result) handle.
| Parameter | Type | Default | Description |
|---|---|---|---|
-| `depends_on` | `str \| list[str] \| None` | `None` | Job ID(s) this job depends on. See [Dependencies](/docs/guides/advanced-execution). |
+| `depends_on` | `str \| list[str] \| None` | `None` | Job ID(s) this job depends on. See [Dependencies](/guides/advanced-execution). |
### `queue.enqueue_many()`
diff --git a/docs/content/docs/api-reference/queue/resources.mdx b/docs/content/docs/api-reference/queue/resources.mdx
index b7a9b2d..fd183b8 100644
--- a/docs/content/docs/api-reference/queue/resources.mdx
+++ b/docs/content/docs/api-reference/queue/resources.mdx
@@ -63,7 +63,7 @@ queue.load_resources(toml_path: str) -> None
```
Load resource definitions from a TOML file. Must be called before `run_worker()`.
-See [TOML configuration](/docs/guides/resources).
+See [TOML configuration](/guides/resources).
### `queue.health_check()`
diff --git a/docs/content/docs/api-reference/result.mdx b/docs/content/docs/api-reference/result.mdx
index 9e6dcb0..d5de9a1 100644
--- a/docs/content/docs/api-reference/result.mdx
+++ b/docs/content/docs/api-reference/result.mdx
@@ -6,9 +6,9 @@ description: "Handle for an enqueued job — status polling, result retrieval, d
Handle to an enqueued job. Provides methods to check status and retrieve
results, both synchronously and asynchronously.
-Returned by [`task.delay()`](/docs/api-reference/task),
-[`task.apply_async()`](/docs/api-reference/task),
-[`queue.enqueue()`](/docs/api-reference/queue), and canvas operations.
+Returned by [`task.delay()`](/api-reference/task),
+[`task.apply_async()`](/api-reference/task),
+[`queue.enqueue()`](/api-reference/queue), and canvas operations.
## Properties
@@ -45,7 +45,7 @@ job.progress -> int | None
```
Current progress (0–100) if reported by the task via
-[`current_job.update_progress()`](/docs/api-reference/context). Returns `None`
+[`current_job.update_progress()`](/api-reference/context). Returns `None`
if no progress has been reported. Refreshes from the database.
### `job.error`
@@ -88,7 +88,7 @@ job.dependencies -> list[str]
```
List of job IDs this job depends on. Returns an empty list if the job has no
-dependencies. See [Dependencies](/docs/guides/advanced-execution).
+dependencies. See [Dependencies](/guides/advanced-execution).
### `job.dependents`
@@ -108,8 +108,8 @@ job.to_dict() -> dict
```
Return all job fields as a plain dictionary. Useful for JSON serialization
-(e.g. in the [dashboard](/docs/guides/observability) or
-[FastAPI integration](/docs/guides/integrations)).
+(e.g. in the [dashboard](/guides/observability) or
+[FastAPI integration](/guides/integrations)).
### `job.result()`
@@ -192,7 +192,7 @@ job.stream(
```
Iterate over partial results published by the task via
-[`current_job.publish()`](/docs/api-reference/context). Yields each result as
+[`current_job.publish()`](/api-reference/context). Yields each result as
it arrives, stops when the job reaches a terminal state.
| Parameter | Type | Default | Description |
diff --git a/docs/content/docs/api-reference/task.mdx b/docs/content/docs/api-reference/task.mdx
index 2a74cc6..271bee6 100644
--- a/docs/content/docs/api-reference/task.mdx
+++ b/docs/content/docs/api-reference/task.mdx
@@ -26,7 +26,7 @@ task.delay(*args, **kwargs) -> JobResult
```
Enqueue the task for background execution using the decorator's default options.
-Returns a [`JobResult`](/docs/api-reference/result) handle.
+Returns a [`JobResult`](/api-reference/result) handle.
```python
@queue.task(priority=5)
@@ -68,7 +68,7 @@ falls back to the decorator's default.
| `timeout` | `int \| None` | `None` | Override timeout in seconds |
| `unique_key` | `str \| None` | `None` | Deduplicate active jobs with same key |
| `metadata` | `str \| None` | `None` | Arbitrary JSON metadata to attach |
-| `depends_on` | `str \| list[str] \| None` | `None` | Job ID(s) this job depends on. See [Dependencies](/docs/guides/advanced-execution). |
+| `depends_on` | `str \| list[str] \| None` | `None` | Job ID(s) this job depends on. See [Dependencies](/guides/advanced-execution). |
```python
job = send_email.apply_async(
@@ -102,8 +102,8 @@ print(results) # [3, 7, 11]
task.s(*args, **kwargs) -> Signature
```
-Create a **mutable** [`Signature`](/docs/api-reference/canvas). In a
-[`chain`](/docs/api-reference/canvas), the previous task's return value is
+Create a **mutable** [`Signature`](/api-reference/canvas). In a
+[`chain`](/api-reference/canvas), the previous task's return value is
prepended to `args`.
```python
@@ -118,7 +118,7 @@ sig = add.s(10)
task.si(*args, **kwargs) -> Signature
```
-Create an **immutable** [`Signature`](/docs/api-reference/canvas). Ignores the
+Create an **immutable** [`Signature`](/api-reference/canvas). Ignores the
previous task's result — arguments are used as-is.
```python
diff --git a/docs/content/docs/architecture/failure-model.mdx b/docs/content/docs/architecture/failure-model.mdx
index 545b997..a04f18f 100644
--- a/docs/content/docs/architecture/failure-model.mdx
+++ b/docs/content/docs/architecture/failure-model.mdx
@@ -35,7 +35,7 @@ Same behavior as database unavailable. The scheduler retries on the next poll cy
`claim_execution` prevents two workers from picking up the same job simultaneously.
But if a worker crashes *after* starting execution, the job will be retried —
potentially executing the same task twice. Design tasks to be
-[idempotent](/docs/guides/reliability) to handle this safely.
+[idempotent](/guides/reliability) to handle this safely.
## Recovery timeline
@@ -46,7 +46,7 @@ potentially executing the same task twice. Design tasks to be
If a task completes successfully but the result write to the database fails (e.g.,
database full, connection lost), the job stays in `running` status. The stale reaper
eventually marks it failed and retries it. The task will execute again — make sure
-it's [idempotent](/docs/guides/reliability).
+it's [idempotent](/guides/reliability).
## Jobs without timeouts
diff --git a/docs/content/docs/architecture/index.mdx b/docs/content/docs/architecture/index.mdx
index b3560bd..cf1b786 100644
--- a/docs/content/docs/architecture/index.mdx
+++ b/docs/content/docs/architecture/index.mdx
@@ -22,49 +22,49 @@ high-level model, then drill into the layer that interests you.
}
title="Overview"
- href="/docs/architecture/overview"
+ href="/architecture/overview"
description="The big picture — Python ↔ PyO3 ↔ Rust core, end to end."
/>
}
title="Job lifecycle"
- href="/docs/architecture/job-lifecycle"
+ href="/architecture/job-lifecycle"
description="Every state a job moves through, from enqueue to result or dead letter."
/>
}
title="Worker pool"
- href="/docs/architecture/worker-pool"
+ href="/architecture/worker-pool"
description="OS-thread pool, prefork children, async executor — how each model dispatches work."
/>
}
title="Scheduler"
- href="/docs/architecture/scheduler"
+ href="/architecture/scheduler"
description="The Tokio polling loop — how jobs are picked, claimed, and routed to workers."
/>
}
title="Storage"
- href="/docs/architecture/storage"
+ href="/architecture/storage"
description="The Storage trait, Diesel for SQLite/Postgres, Redis backend, table schemas."
/>
}
title="Resources"
- href="/docs/architecture/resources"
+ href="/architecture/resources"
description="The 3-layer DI pipeline — argument interception, worker injection, proxy reconstruction."
/>
}
title="Failure model"
- href="/docs/architecture/failure-model"
+ href="/architecture/failure-model"
description="Retries, dead letters, circuit breakers, cancellation — what happens when things go wrong."
/>
}
title="Serialization"
- href="/docs/architecture/serialization"
+ href="/architecture/serialization"
description="Cloudpickle, JSON, MsgPack — how arguments and results cross the worker boundary."
/>
diff --git a/docs/content/docs/architecture/overview.mdx b/docs/content/docs/architecture/overview.mdx
index 3bac704..b82c4ac 100644
--- a/docs/content/docs/architecture/overview.mdx
+++ b/docs/content/docs/architecture/overview.mdx
@@ -13,10 +13,10 @@ worker management.
| Page | What it covers |
|---|---|
-| [Job Lifecycle](/docs/architecture/job-lifecycle) | State machine, status codes, transitions |
-| [Worker Pool](/docs/architecture/worker-pool) | Thread architecture, async dispatch, GIL management |
-| [Storage Layer](/docs/architecture/storage) | SQLite pragmas, schema, indexes, Postgres differences |
-| [Scheduler](/docs/architecture/scheduler) | Poll loop, dispatch flow, periodic tasks |
-| [Resource System](/docs/architecture/resources) | Argument interception, DI, proxy reconstruction |
-| [Failure Model](/docs/architecture/failure-model) | Crash recovery, duplicate execution, partial writes |
-| [Serialization](/docs/architecture/serialization) | Pluggable serializers, format details |
+| [Job Lifecycle](/architecture/job-lifecycle) | State machine, status codes, transitions |
+| [Worker Pool](/architecture/worker-pool) | Thread architecture, async dispatch, GIL management |
+| [Storage Layer](/architecture/storage) | SQLite pragmas, schema, indexes, Postgres differences |
+| [Scheduler](/architecture/scheduler) | Poll loop, dispatch flow, periodic tasks |
+| [Resource System](/architecture/resources) | Argument interception, DI, proxy reconstruction |
+| [Failure Model](/architecture/failure-model) | Crash recovery, duplicate execution, partial writes |
+| [Serialization](/architecture/serialization) | Pluggable serializers, format details |
diff --git a/docs/content/docs/architecture/storage.mdx b/docs/content/docs/architecture/storage.mdx
index bc030d1..a577487 100644
--- a/docs/content/docs/architecture/storage.mdx
+++ b/docs/content/docs/architecture/storage.mdx
@@ -158,7 +158,7 @@ per-connection).
## Postgres differences
taskito also supports PostgreSQL as an alternative storage backend. See the
-[Postgres backend guide](/docs/guides/operations) for full details.
+[Postgres backend guide](/guides/operations) for full details.
- **Connection pooling**: `r2d2` pool with a default of 10 connections (vs. 8 for SQLite)
- **Schema isolation**: all tables are created inside a configurable PostgreSQL schema
diff --git a/docs/content/docs/getting-started/concepts.mdx b/docs/content/docs/getting-started/concepts.mdx
index 0962574..867bb04 100644
--- a/docs/content/docs/getting-started/concepts.mdx
+++ b/docs/content/docs/getting-started/concepts.mdx
@@ -10,12 +10,12 @@ Get taskito installed and running in under 5 minutes.
diff --git a/docs/content/docs/getting-started/installation.mdx b/docs/content/docs/getting-started/installation.mdx
index ff8c032..fbccc19 100644
--- a/docs/content/docs/getting-started/installation.mdx
+++ b/docs/content/docs/getting-started/installation.mdx
@@ -28,7 +28,7 @@ To use PostgreSQL as the storage backend instead of SQLite:
pip install taskito[postgres]
```
-See the [Postgres backend guide](/docs/guides/operations) for configuration details.
+See the [Postgres backend guide](/guides/operations) for configuration details.
## From source
diff --git a/docs/content/docs/getting-started/quickstart.mdx b/docs/content/docs/getting-started/quickstart.mdx
index 472fbcb..766ea48 100644
--- a/docs/content/docs/getting-started/quickstart.mdx
+++ b/docs/content/docs/getting-started/quickstart.mdx
@@ -122,12 +122,12 @@ taskito dashboard --app tasks:queue
Open `http://localhost:8080` in your browser. The dashboard includes pages
covering every aspect of your task queue — no extra dependencies needed.
-[Dashboard guide →](/docs/guides/observability)
+[Dashboard guide →](/guides/observability)
## Next steps
-- [Tasks](/docs/guides/core) — decorator options, `.delay()` vs `.apply_async()`
-- [Workers](/docs/guides/core) — CLI flags, graceful shutdown, worker count
-- [Retries](/docs/guides/reliability) — exponential backoff, dead letter queue
-- [Workflows](/docs/guides/workflows) — chain, group, chord
-- [Testing](/docs/guides/operations) — run tasks synchronously in tests with `queue.test_mode()`
+- [Tasks](/guides/core) — decorator options, `.delay()` vs `.apply_async()`
+- [Workers](/guides/core) — CLI flags, graceful shutdown, worker count
+- [Retries](/guides/reliability) — exponential backoff, dead letter queue
+- [Workflows](/guides/workflows) — chain, group, chord
+- [Testing](/guides/operations) — run tasks synchronously in tests with `queue.test_mode()`
diff --git a/docs/content/docs/guides/advanced-execution/batch-enqueue.mdx b/docs/content/docs/guides/advanced-execution/batch-enqueue.mdx
index dc056c2..5f3641b 100644
--- a/docs/content/docs/guides/advanced-execution/batch-enqueue.mdx
+++ b/docs/content/docs/guides/advanced-execution/batch-enqueue.mdx
@@ -41,4 +41,4 @@ jobs = queue.enqueue_many(
Per-job lists (`delay_list`, `metadata_list`, `expires_list`,
`result_ttl_list`) override uniform values when both are provided. See the
-[API reference](/docs/api-reference/queue) for the full parameter list.
+[API reference](/api-reference/queue) for the full parameter list.
diff --git a/docs/content/docs/guides/advanced-execution/index.mdx b/docs/content/docs/guides/advanced-execution/index.mdx
index d0849f1..eefb7a8 100644
--- a/docs/content/docs/guides/advanced-execution/index.mdx
+++ b/docs/content/docs/guides/advanced-execution/index.mdx
@@ -7,9 +7,9 @@ Patterns for scaling and optimizing task execution.
| Guide | Description |
|---|---|
-| [Prefork Pool](/docs/guides/advanced-execution/prefork) | Process-based isolation for CPU-bound or memory-leaking tasks |
-| [Native Async Tasks](/docs/guides/advanced-execution/async-tasks) | `async def` tasks with native event loop integration |
-| [Result Streaming](/docs/guides/advanced-execution/streaming) | Stream partial results and progress updates in real time |
-| [Dependencies](/docs/guides/advanced-execution/dependencies) | DAG-based job dependencies — run tasks in order |
-| [Batch Enqueue](/docs/guides/advanced-execution/batch-enqueue) | Enqueue many jobs efficiently with `task.map()` and `enqueue_many()` |
-| [Unique Tasks](/docs/guides/advanced-execution/unique-tasks) | Deduplicate active jobs with unique keys |
+| [Prefork Pool](/guides/advanced-execution/prefork) | Process-based isolation for CPU-bound or memory-leaking tasks |
+| [Native Async Tasks](/guides/advanced-execution/async-tasks) | `async def` tasks with native event loop integration |
+| [Result Streaming](/guides/advanced-execution/streaming) | Stream partial results and progress updates in real time |
+| [Dependencies](/guides/advanced-execution/dependencies) | DAG-based job dependencies — run tasks in order |
+| [Batch Enqueue](/guides/advanced-execution/batch-enqueue) | Enqueue many jobs efficiently with `task.map()` and `enqueue_many()` |
+| [Unique Tasks](/guides/advanced-execution/unique-tasks) | Deduplicate active jobs with unique keys |
diff --git a/docs/content/docs/guides/core/execution-model.mdx b/docs/content/docs/guides/core/execution-model.mdx
index 7ee5953..dd0cef9 100644
--- a/docs/content/docs/guides/core/execution-model.mdx
+++ b/docs/content/docs/guides/core/execution-model.mdx
@@ -66,7 +66,7 @@ instance. It must be a module-level name (`"module:attribute"` format) —
tasks defined inside functions or closures cannot be imported by child
processes.
-For more details, see the [Prefork Pool guide](/docs/guides/advanced-execution).
+For more details, see the [Prefork Pool guide](/guides/advanced-execution).
## Native async
@@ -90,7 +90,7 @@ queue = Queue(
)
```
-For more details, see the [Native Async Tasks guide](/docs/guides/advanced-execution).
+For more details, see the [Native Async Tasks guide](/guides/advanced-execution).
## Mixing sync and async
diff --git a/docs/content/docs/guides/core/index.mdx b/docs/content/docs/guides/core/index.mdx
index 7c11488..5a17059 100644
--- a/docs/content/docs/guides/core/index.mdx
+++ b/docs/content/docs/guides/core/index.mdx
@@ -7,9 +7,9 @@ The building blocks of every taskito application.
| Guide | Description |
|---|---|
-| [Tasks](/docs/guides/core/tasks) | Define tasks with `@queue.task()`, configure retries, timeouts, and options |
-| [Workers](/docs/guides/core/workers) | Start workers, control concurrency, graceful shutdown |
-| [Execution Models](/docs/guides/core/execution-model) | How tasks move from enqueue to completion |
-| [Queues & Priority](/docs/guides/core/queues) | Named queues, priority levels, and routing |
-| [Scheduling](/docs/guides/core/scheduling) | Periodic tasks with cron expressions |
-| [Workflows](/docs/guides/core/workflows) | Chains, groups, and chords for multi-step pipelines |
+| [Tasks](/guides/core/tasks) | Define tasks with `@queue.task()`, configure retries, timeouts, and options |
+| [Workers](/guides/core/workers) | Start workers, control concurrency, graceful shutdown |
+| [Execution Models](/guides/core/execution-model) | How tasks move from enqueue to completion |
+| [Queues & Priority](/guides/core/queues) | Named queues, priority levels, and routing |
+| [Scheduling](/guides/core/scheduling) | Periodic tasks with cron expressions |
+| [Workflows](/guides/core/workflows) | Chains, groups, and chords for multi-step pipelines |
diff --git a/docs/content/docs/guides/core/tasks.mdx b/docs/content/docs/guides/core/tasks.mdx
index 692eac9..31c311d 100644
--- a/docs/content/docs/guides/core/tasks.mdx
+++ b/docs/content/docs/guides/core/tasks.mdx
@@ -35,7 +35,7 @@ def process_data(data: dict) -> str:
| `circuit_breaker` | `dict \| None` | `None` | Circuit breaker config: `{"threshold": 5, "window": 60, "cooldown": 120}`. |
| `middleware` | `list[TaskMiddleware] \| None` | `None` | Per-task middleware, applied in addition to queue-level middleware. |
| `expires` | `float \| None` | `None` | Seconds until the job expires if not started. |
-| `inject` | `list[str] \| None` | `None` | Worker resource names to inject as keyword arguments. See [Resource System](/docs/guides/resources). |
+| `inject` | `list[str] \| None` | `None` | Worker resource names to inject as keyword arguments. See [Resource System](/guides/resources). |
| `serializer` | `Serializer \| None` | `None` | Per-task serializer override. Falls back to the queue-level serializer. |
| `max_concurrent` | `int \| None` | `None` | Max concurrent running instances of this task. `None` means no limit. |
diff --git a/docs/content/docs/guides/core/workers.mdx b/docs/content/docs/guides/core/workers.mdx
index 7f38bc6..161a0ea 100644
--- a/docs/content/docs/guides/core/workers.mdx
+++ b/docs/content/docs/guides/core/workers.mdx
@@ -274,7 +274,7 @@ queue = Queue(
)
```
-See [Native Async Tasks](/docs/guides/advanced-execution) for the full guide.
+See [Native Async Tasks](/guides/advanced-execution) for the full guide.
## How workers work
diff --git a/docs/content/docs/guides/core/workflows.mdx b/docs/content/docs/guides/core/workflows.mdx
index 107ed47..866dbec 100644
--- a/docs/content/docs/guides/core/workflows.mdx
+++ b/docs/content/docs/guides/core/workflows.mdx
@@ -4,10 +4,10 @@ description: "DAG workflows for multi-step pipelines and Canvas primitives for s
---
taskito provides two workflow models. See the dedicated
-[Workflows section](/docs/guides/workflows) for full documentation.
+[Workflows section](/guides/workflows) for full documentation.
-- **[DAG Workflows](/docs/guides/workflows)** — Multi-step pipelines as
+- **[DAG Workflows](/guides/workflows)** — Multi-step pipelines as
directed acyclic graphs with fan-out, conditions, gates, sub-workflows,
incremental caching, and visualization.
-- **[Canvas Primitives](/docs/api-reference/canvas)** — Lightweight chain,
+- **[Canvas Primitives](/api-reference/canvas)** — Lightweight chain,
group, and chord composition for simple pipelines.
diff --git a/docs/content/docs/guides/extensibility/index.mdx b/docs/content/docs/guides/extensibility/index.mdx
index 1950567..47a97be 100644
--- a/docs/content/docs/guides/extensibility/index.mdx
+++ b/docs/content/docs/guides/extensibility/index.mdx
@@ -7,6 +7,6 @@ Extend taskito with custom behavior at every stage of the task lifecycle.
| Guide | Description |
|---|---|
-| [Middleware](/docs/guides/extensibility/middleware) | Hook into task execution with `before`, `after`, `on_retry`, and more |
-| [Serializers](/docs/guides/extensibility/serializers) | Custom payload serialization — msgpack, orjson, encryption |
-| [Events & Webhooks](/docs/guides/extensibility/events-webhooks) | React to queue events and push notifications to external services |
+| [Middleware](/guides/extensibility/middleware) | Hook into task execution with `before`, `after`, `on_retry`, and more |
+| [Serializers](/guides/extensibility/serializers) | Custom payload serialization — msgpack, orjson, encryption |
+| [Events & Webhooks](/guides/extensibility/events-webhooks) | React to queue events and push notifications to external services |
diff --git a/docs/content/docs/guides/extensibility/middleware.mdx b/docs/content/docs/guides/extensibility/middleware.mdx
index 6ca78d1..b156fe8 100644
--- a/docs/content/docs/guides/extensibility/middleware.mdx
+++ b/docs/content/docs/guides/extensibility/middleware.mdx
@@ -222,4 +222,4 @@ queue = Queue(middleware=[
])
```
-See the [OpenTelemetry guide](/docs/guides/integrations) for setup details.
+See the [OpenTelemetry guide](/guides/integrations) for setup details.
diff --git a/docs/content/docs/guides/index.mdx b/docs/content/docs/guides/index.mdx
index 262b94d..995172e 100644
--- a/docs/content/docs/guides/index.mdx
+++ b/docs/content/docs/guides/index.mdx
@@ -23,55 +23,55 @@ samples, gotchas, and links to the relevant API reference.
}
title="Core"
- href="/docs/guides/core"
+ href="/guides/core"
description="Define tasks, route to queues, run workers, schedule periodics."
/>
}
title="Reliability"
- href="/docs/guides/reliability"
+ href="/guides/reliability"
description="Retries, dead letters, circuit breakers, idempotency, error handling."
/>
}
title="Advanced execution"
- href="/docs/guides/advanced-execution"
+ href="/guides/advanced-execution"
description="Prefork pools, native async, streaming, cancellation, soft timeouts."
/>
}
title="Operations"
- href="/docs/guides/operations"
+ href="/guides/operations"
description="Deployment, scaling, namespaces, migration from Celery."
/>
}
title="Observability"
- href="/docs/guides/observability"
+ href="/guides/observability"
description="Metrics, logs, dashboard, OpenTelemetry, Sentry, Prometheus."
/>
}
title="Resources"
- href="/docs/guides/resources"
+ href="/guides/resources"
description="Inject DB clients, HTTP sessions, and cloud SDKs by name with hot reload."
/>
}
title="Workflows"
- href="/docs/guides/workflows"
+ href="/guides/workflows"
description="DAGs, fan-out, fan-in, conditions, gates, sub-workflows, incremental re-runs."
/>
}
title="Integrations"
- href="/docs/guides/integrations"
+ href="/guides/integrations"
description="Django, FastAPI, Flask — admin views, REST routers, management commands."
/>
}
title="Extensibility"
- href="/docs/guides/extensibility"
+ href="/guides/extensibility"
description="Custom serializers, middleware, events, webhooks, proxies."
/>
diff --git a/docs/content/docs/guides/integrations/index.mdx b/docs/content/docs/guides/integrations/index.mdx
index ef42bee..9aa5be6 100644
--- a/docs/content/docs/guides/integrations/index.mdx
+++ b/docs/content/docs/guides/integrations/index.mdx
@@ -23,15 +23,15 @@ tools. Install only what you need.
## Framework integrations
-- **[Flask](/docs/guides/integrations/flask)** — full Flask extension with app config, factory pattern, and CLI commands
-- **[FastAPI](/docs/guides/integrations/fastapi)** — pre-built `APIRouter` with job status, SSE progress, and DLQ management
-- **[Django](/docs/guides/integrations/django)** — admin views for browsing jobs, dead letters, and queue stats
+- **[Flask](/guides/integrations/flask)** — full Flask extension with app config, factory pattern, and CLI commands
+- **[FastAPI](/guides/integrations/fastapi)** — pre-built `APIRouter` with job status, SSE progress, and DLQ management
+- **[Django](/guides/integrations/django)** — admin views for browsing jobs, dead letters, and queue stats
## Observability integrations
-- **[OpenTelemetry](/docs/guides/integrations/otel)** — distributed tracing with per-task spans
-- **[Prometheus](/docs/guides/integrations/prometheus)** — counters, histograms, and gauges for task execution
-- **[Sentry](/docs/guides/integrations/sentry)** — automatic error capture with task context
+- **[OpenTelemetry](/guides/integrations/otel)** — distributed tracing with per-task spans
+- **[Prometheus](/guides/integrations/prometheus)** — counters, histograms, and gauges for task execution
+- **[Sentry](/guides/integrations/sentry)** — automatic error capture with task context
## Combining integrations
diff --git a/docs/content/docs/guides/integrations/otel.mdx b/docs/content/docs/guides/integrations/otel.mdx
index 1c42c00..9d5c1b0 100644
--- a/docs/content/docs/guides/integrations/otel.mdx
+++ b/docs/content/docs/guides/integrations/otel.mdx
@@ -106,5 +106,5 @@ queue = Queue(middleware=[
lock.
-See the [Middleware guide](/docs/guides/extensibility/middleware) for more
+See the [Middleware guide](/guides/extensibility/middleware) for more
on combining middleware.
diff --git a/docs/content/docs/guides/integrations/prometheus.mdx b/docs/content/docs/guides/integrations/prometheus.mdx
index ca9e389..fac36c3 100644
--- a/docs/content/docs/guides/integrations/prometheus.mdx
+++ b/docs/content/docs/guides/integrations/prometheus.mdx
@@ -160,7 +160,7 @@ queue = Queue(
)
```
-See the [Middleware guide](/docs/guides/extensibility/middleware) for more
+See the [Middleware guide](/guides/extensibility/middleware) for more
on combining middleware.
## Example: alert on high DLQ size
diff --git a/docs/content/docs/guides/integrations/sentry.mdx b/docs/content/docs/guides/integrations/sentry.mdx
index e553d3a..211c03f 100644
--- a/docs/content/docs/guides/integrations/sentry.mdx
+++ b/docs/content/docs/guides/integrations/sentry.mdx
@@ -100,7 +100,7 @@ queue = Queue(
)
```
-See the [Middleware guide](/docs/guides/extensibility/middleware) for more
+See the [Middleware guide](/guides/extensibility/middleware) for more
on combining middleware.
## Full example
diff --git a/docs/content/docs/guides/observability/dashboard.mdx b/docs/content/docs/guides/observability/dashboard.mdx
index dd8e905..192500b 100644
--- a/docs/content/docs/guides/observability/dashboard.mdx
+++ b/docs/content/docs/guides/observability/dashboard.mdx
@@ -226,7 +226,7 @@ Use the **Refresh** dropdown in the header — 2s, 5s, 10s, or off.
The dashboard also exposes a full JSON API. See the
- [Dashboard REST API](/docs/guides/observability/dashboard-api) reference
+ [Dashboard REST API](/guides/observability/dashboard-api) reference
for all endpoints.
diff --git a/docs/content/docs/guides/observability/index.mdx b/docs/content/docs/guides/observability/index.mdx
index 2a42e90..9570dd9 100644
--- a/docs/content/docs/guides/observability/index.mdx
+++ b/docs/content/docs/guides/observability/index.mdx
@@ -7,7 +7,7 @@ Monitor, log, and inspect your task queue in real time.
| Guide | Description |
|---|---|
-| [Monitoring & Hooks](/docs/guides/observability/monitoring) | Queue stats, progress tracking, worker heartbeat, and alerting hooks |
-| [Structured Logging](/docs/guides/observability/logging) | Per-task structured logs with automatic context |
-| [Web Dashboard](/docs/guides/observability/dashboard) | Built-in web UI for browsing jobs, metrics, and worker status |
-| [Dashboard REST API](/docs/guides/observability/dashboard-api) | Programmatic access to all dashboard data via REST endpoints |
+| [Monitoring & Hooks](/guides/observability/monitoring) | Queue stats, progress tracking, worker heartbeat, and alerting hooks |
+| [Structured Logging](/guides/observability/logging) | Per-task structured logs with automatic context |
+| [Web Dashboard](/guides/observability/dashboard) | Built-in web UI for browsing jobs, metrics, and worker status |
+| [Dashboard REST API](/guides/observability/dashboard-api) | Programmatic access to all dashboard data via REST endpoints |
diff --git a/docs/content/docs/guides/observability/monitoring.mdx b/docs/content/docs/guides/observability/monitoring.mdx
index c9c0eb5..29247a2 100644
--- a/docs/content/docs/guides/observability/monitoring.mdx
+++ b/docs/content/docs/guides/observability/monitoring.mdx
@@ -120,7 +120,7 @@ workers = await queue.aworkers()
The worker heartbeat is also available via the dashboard REST API at
`GET /api/workers`. See the
-[Dashboard](/docs/guides/observability/dashboard) guide for details.
+[Dashboard](/guides/observability/dashboard) guide for details.
## Events system
@@ -129,7 +129,7 @@ events (`JOB_ENQUEUED`, `JOB_COMPLETED`, `JOB_FAILED`, `JOB_RETRYING`,
`JOB_DEAD`, `JOB_CANCELLED`). Events can also be delivered as signed HTTP
webhooks to external systems.
-[Events & Webhooks guide →](/docs/guides/extensibility)
+[Events & Webhooks guide →](/guides/extensibility)
## Prometheus metrics
@@ -140,7 +140,7 @@ counters, histograms, and gauges for task execution:
pip install taskito[prometheus]
```
-[Prometheus integration →](/docs/guides/integrations)
+[Prometheus integration →](/guides/integrations)
## Hooks
diff --git a/docs/content/docs/guides/operations/deployment.mdx b/docs/content/docs/guides/operations/deployment.mdx
index ab05a51..e74f887 100644
--- a/docs/content/docs/guides/operations/deployment.mdx
+++ b/docs/content/docs/guides/operations/deployment.mdx
@@ -160,7 +160,7 @@ Both methods are safe while the worker is running.
## Postgres deployment
-If you're using the [Postgres backend](/docs/guides/operations/postgres),
+If you're using the [Postgres backend](/guides/operations/postgres),
deployment is simpler in several ways:
- **No shared-file constraints** — workers connect over the network, no need for shared volumes or local storage
@@ -204,7 +204,7 @@ pg_dump -h localhost -U taskito -d myapp -n taskito > backup.sql
psql -h localhost -U taskito -d myapp < backup.sql
```
-See the [Postgres Backend guide](/docs/guides/operations/postgres) for full
+See the [Postgres Backend guide](/guides/operations/postgres) for full
configuration details.
## Database maintenance
@@ -324,7 +324,7 @@ queue = Queue(
```
If you need distributed workers across multiple machines, use the
-[Postgres backend](/docs/guides/operations/postgres) which removes the
+[Postgres backend](/guides/operations/postgres) which removes the
single-writer constraint and supports multi-machine deployments.
## SQLite scaling limits
@@ -349,7 +349,7 @@ are serialized. This is the primary throughput ceiling.
- Multiple processes contend heavily for writes (high lock wait times)
- You need sub-millisecond dequeue latency under high load
-taskito's [Postgres backend](/docs/guides/operations/postgres) addresses all
+taskito's [Postgres backend](/guides/operations/postgres) addresses all
of these limitations while keeping the same API.
## Sizing your deployment
diff --git a/docs/content/docs/guides/operations/index.mdx b/docs/content/docs/guides/operations/index.mdx
index 73456e9..08bf311 100644
--- a/docs/content/docs/guides/operations/index.mdx
+++ b/docs/content/docs/guides/operations/index.mdx
@@ -7,10 +7,10 @@ Run taskito reliably in production.
| Guide | Description |
|---|---|
-| [Testing](/docs/guides/operations/testing) | Test mode, fixtures, mocking resources, and workflow testing |
-| [Job Management](/docs/guides/operations/job-management) | Cancel, pause, archive, revoke, replay, and clean up jobs |
-| [Troubleshooting](/docs/guides/operations/troubleshooting) | Diagnose stuck jobs, lock contention, and worker issues |
-| [Deployment](/docs/guides/operations/deployment) | systemd, Docker, WAL mode, Postgres, and production checklists |
-| [KEDA Autoscaling](/docs/guides/operations/keda) | Kubernetes event-driven autoscaling for workers |
-| [Postgres Backend](/docs/guides/operations/postgres) | Set up and run taskito with PostgreSQL |
-| [Migrating from Celery](/docs/guides/operations/migration) | Side-by-side comparison and step-by-step migration guide |
+| [Testing](/guides/operations/testing) | Test mode, fixtures, mocking resources, and workflow testing |
+| [Job Management](/guides/operations/job-management) | Cancel, pause, archive, revoke, replay, and clean up jobs |
+| [Troubleshooting](/guides/operations/troubleshooting) | Diagnose stuck jobs, lock contention, and worker issues |
+| [Deployment](/guides/operations/deployment) | systemd, Docker, WAL mode, Postgres, and production checklists |
+| [KEDA Autoscaling](/guides/operations/keda) | Kubernetes event-driven autoscaling for workers |
+| [Postgres Backend](/guides/operations/postgres) | Set up and run taskito with PostgreSQL |
+| [Migrating from Celery](/guides/operations/migration) | Side-by-side comparison and step-by-step migration guide |
diff --git a/docs/content/docs/guides/operations/keda.mdx b/docs/content/docs/guides/operations/keda.mdx
index 17950ec..34bee69 100644
--- a/docs/content/docs/guides/operations/keda.mdx
+++ b/docs/content/docs/guides/operations/keda.mdx
@@ -193,7 +193,7 @@ spec:
threshold: "0.8"
```
-See the [Prometheus integration](/docs/guides/integrations) for setting up
+See the [Prometheus integration](/guides/integrations) for setting up
the metrics collector.
## Deploy templates
@@ -210,6 +210,6 @@ Ready-to-use YAML templates are included in the repository under
When using SQLite, all worker replicas must share the same database
volume. For multi-replica Kubernetes deployments, use the
- [Postgres backend](/docs/guides/operations/postgres) — workers connect
+ [Postgres backend](/guides/operations/postgres) — workers connect
over the network and there's no shared-file constraint.
diff --git a/docs/content/docs/guides/operations/testing.mdx b/docs/content/docs/guides/operations/testing.mdx
index fa61abc..4b696e9 100644
--- a/docs/content/docs/guides/operations/testing.mdx
+++ b/docs/content/docs/guides/operations/testing.mdx
@@ -53,7 +53,7 @@ with queue.test_mode(propagate_errors=False, resources=None) as results:
| Parameter | Type | Default | Description |
|---|---|---|---|
| `propagate_errors` | `bool` | `False` | If `True`, task exceptions are re-raised immediately instead of being captured in `TestResult.error` |
-| `resources` | `dict[str, Any] \| None` | `None` | Map of resource name → mock instance or `MockResource` for injection. See [Resource System](/docs/guides/resources). |
+| `resources` | `dict[str, Any] \| None` | `None` | Map of resource name → mock instance or `MockResource` for injection. See [Resource System](/guides/resources). |
The context manager yields a `TestResults` list that accumulates results as
tasks execute.
@@ -272,7 +272,7 @@ async def test_async_enqueue(task_results):
## Testing with worker resources
-If your tasks use [worker resources](/docs/guides/resources) (injected via
+If your tasks use [worker resources](/guides/resources) (injected via
`inject=` or `Inject["name"]`), pass mock instances through `resources=`:
```python
diff --git a/docs/content/docs/guides/reliability/error-handling.mdx b/docs/content/docs/guides/reliability/error-handling.mdx
index f3d6710..82d5628 100644
--- a/docs/content/docs/guides/reliability/error-handling.mdx
+++ b/docs/content/docs/guides/reliability/error-handling.mdx
@@ -247,7 +247,7 @@ def on_task_failure(task_name, args, kwargs, error):
### Test mode for isolation
-Use [test mode](/docs/guides/operations) to run tasks synchronously and inspect
+Use [test mode](/guides/operations) to run tasks synchronously and inspect
errors without a worker:
```python
@@ -287,7 +287,7 @@ def call_api(url):
return resp.json()
```
-See [Retries — Exception Filtering](/docs/guides/reliability/retries) for details.
+See [Retries — Exception Filtering](/guides/reliability/retries) for details.
### Cancelling running tasks
diff --git a/docs/content/docs/guides/reliability/guarantees.mdx b/docs/content/docs/guides/reliability/guarantees.mdx
index 9a187f7..38040a7 100644
--- a/docs/content/docs/guides/reliability/guarantees.mdx
+++ b/docs/content/docs/guides/reliability/guarantees.mdx
@@ -84,7 +84,7 @@ job = send_report.apply_async(
If a job with the same `unique_key` is already pending or running, the
duplicate is silently dropped. See
-[Unique Tasks](/docs/guides/advanced-execution) for details.
+[Unique Tasks](/guides/advanced-execution) for details.
### Avoid side effects that can't be undone
diff --git a/docs/content/docs/guides/reliability/index.mdx b/docs/content/docs/guides/reliability/index.mdx
index d14893e..be23449 100644
--- a/docs/content/docs/guides/reliability/index.mdx
+++ b/docs/content/docs/guides/reliability/index.mdx
@@ -7,9 +7,9 @@ Harden your task queue for production workloads.
| Guide | Description |
|---|---|
-| [Retries & Dead Letters](/docs/guides/reliability/retries) | Automatic retries with exponential backoff, dead letter queue |
-| [Error Handling](/docs/guides/reliability/error-handling) | Task failure lifecycle, error inspection, debugging patterns |
-| [Delivery Guarantees](/docs/guides/reliability/guarantees) | At-least-once delivery, idempotency, and exactly-once patterns |
-| [Rate Limiting](/docs/guides/reliability/rate-limiting) | Throttle task execution with token bucket rate limits |
-| [Circuit Breakers](/docs/guides/reliability/circuit-breakers) | Protect downstream services from cascading failures |
-| [Distributed Locking](/docs/guides/reliability/locking) | Mutual exclusion across workers with database-backed locks |
+| [Retries & Dead Letters](/guides/reliability/retries) | Automatic retries with exponential backoff, dead letter queue |
+| [Error Handling](/guides/reliability/error-handling) | Task failure lifecycle, error inspection, debugging patterns |
+| [Delivery Guarantees](/guides/reliability/guarantees) | At-least-once delivery, idempotency, and exactly-once patterns |
+| [Rate Limiting](/guides/reliability/rate-limiting) | Throttle task execution with token bucket rate limits |
+| [Circuit Breakers](/guides/reliability/circuit-breakers) | Protect downstream services from cascading failures |
+| [Distributed Locking](/guides/reliability/locking) | Mutual exclusion across workers with database-backed locks |
diff --git a/docs/content/docs/guides/resources/dependency-injection.mdx b/docs/content/docs/guides/resources/dependency-injection.mdx
index dafeaf6..57304a7 100644
--- a/docs/content/docs/guides/resources/dependency-injection.mdx
+++ b/docs/content/docs/guides/resources/dependency-injection.mdx
@@ -115,7 +115,7 @@ def create_cache():
Pool configuration parameters (`pool_size`, `pool_min`, `acquire_timeout`,
`max_lifetime`, `idle_timeout`) only apply to task-scoped resources. See
-[Configuration](/docs/guides/resources/configuration) for details.
+[Configuration](/guides/resources/configuration) for details.
## Dependencies
@@ -236,7 +236,7 @@ status = queue.resource_status()
```
Task-scoped resources include a `"pool"` key with pool statistics. See
-[Observability](/docs/guides/resources/observability) for details.
+[Observability](/guides/resources/observability) for details.
## Full example
diff --git a/docs/content/docs/guides/resources/index.mdx b/docs/content/docs/guides/resources/index.mdx
index a533a78..c3dc6a1 100644
--- a/docs/content/docs/guides/resources/index.mdx
+++ b/docs/content/docs/guides/resources/index.mdx
@@ -87,9 +87,9 @@ taskito worker --app myapp.tasks:queue
| Page | What it covers |
|---|---|
-| [Argument Interception](/docs/guides/resources/interception) | Modes, strategies, custom types, `analyze()`, metrics |
-| [Dependency Injection](/docs/guides/resources/dependency-injection) | `worker_resource()`, scopes, dependencies, teardown, health checks |
-| [Resource Proxies](/docs/guides/resources/proxies) | Built-in handlers, HMAC signing, security, `NoProxy`, cloud handlers |
-| [Configuration](/docs/guides/resources/configuration) | TOML config, pool tuning, frozen and reloadable resources, hot reload |
-| [Testing](/docs/guides/resources/testing) | `test_mode(resources=)`, `MockResource`, pytest fixtures |
-| [Observability](/docs/guides/resources/observability) | Prometheus metrics, dashboard endpoints, CLI commands |
+| [Argument Interception](/guides/resources/interception) | Modes, strategies, custom types, `analyze()`, metrics |
+| [Dependency Injection](/guides/resources/dependency-injection) | `worker_resource()`, scopes, dependencies, teardown, health checks |
+| [Resource Proxies](/guides/resources/proxies) | Built-in handlers, HMAC signing, security, `NoProxy`, cloud handlers |
+| [Configuration](/guides/resources/configuration) | TOML config, pool tuning, frozen and reloadable resources, hot reload |
+| [Testing](/guides/resources/testing) | `test_mode(resources=)`, `MockResource`, pytest fixtures |
+| [Observability](/guides/resources/observability) | Prometheus metrics, dashboard endpoints, CLI commands |
diff --git a/docs/content/docs/guides/resources/interception.mdx b/docs/content/docs/guides/resources/interception.mdx
index 70a795f..05712da 100644
--- a/docs/content/docs/guides/resources/interception.mdx
+++ b/docs/content/docs/guides/resources/interception.mdx
@@ -92,7 +92,7 @@ These objects are deconstructed to a recipe dict and rebuilt by the worker:
| boto3 clients (via `botocore.client.BaseClient`) | `"boto3_client"` |
| `google.cloud.storage.Client` / `Bucket` / `Blob` | `"gcs_client"` |
-See [Resource Proxies](/docs/guides/resources/proxies) for security options
+See [Resource Proxies](/guides/resources/proxies) for security options
and handler details.
## Built-in REJECT types
@@ -192,5 +192,5 @@ stats = queue.interception_stats()
# }
```
-See [Observability](/docs/guides/resources/observability) for Prometheus
+See [Observability](/guides/resources/observability) for Prometheus
metrics and dashboard endpoints.
diff --git a/docs/content/docs/guides/resources/observability.mdx b/docs/content/docs/guides/resources/observability.mdx
index 7dcc12b..35c5a19 100644
--- a/docs/content/docs/guides/resources/observability.mdx
+++ b/docs/content/docs/guides/resources/observability.mdx
@@ -122,7 +122,7 @@ Start the dashboard:
taskito dashboard --app myapp.tasks:queue
```
-See the [Web Dashboard](/docs/guides/observability/dashboard) guide for
+See the [Web Dashboard](/guides/observability/dashboard) guide for
full dashboard documentation.
## CLI commands
@@ -214,5 +214,5 @@ from taskito.contrib.prometheus import start_metrics_server
start_metrics_server(port=9090)
```
-See the [Prometheus integration](/docs/guides/integrations) page for full
+See the [Prometheus integration](/guides/integrations) page for full
setup instructions.
diff --git a/docs/content/docs/guides/resources/proxies.mdx b/docs/content/docs/guides/resources/proxies.mdx
index 235cb7c..2863183 100644
--- a/docs/content/docs/guides/resources/proxies.mdx
+++ b/docs/content/docs/guides/resources/proxies.mdx
@@ -181,5 +181,5 @@ stats = queue.proxy_stats()
# ]
```
-See [Observability](/docs/guides/resources/observability) for Prometheus
+See [Observability](/guides/resources/observability) for Prometheus
metrics and dashboard endpoints.
diff --git a/docs/content/docs/guides/workflows/building.mdx b/docs/content/docs/guides/workflows/building.mdx
index e3c5ce5..3be147c 100644
--- a/docs/content/docs/guides/workflows/building.mdx
+++ b/docs/content/docs/guides/workflows/building.mdx
@@ -106,7 +106,7 @@ This creates a `WorkflowRun` handle. Under the hood:
| `name` | `str` | `"workflow"` | Workflow name |
| `version` | `int` | `1` | Version number |
| `on_failure` | `str` | `"fail_fast"` | Error strategy: `"fail_fast"` or `"continue"` |
-| `cache_ttl` | `float` | `None` | Cache TTL in seconds for [incremental runs](/docs/guides/workflows/caching) |
+| `cache_ttl` | `float` | `None` | Cache TTL in seconds for [incremental runs](/guides/workflows/caching) |
## Node statuses
diff --git a/docs/content/docs/guides/workflows/fan-out.mdx b/docs/content/docs/guides/workflows/fan-out.mdx
index dc63c2b..85c35ed 100644
--- a/docs/content/docs/guides/workflows/fan-out.mdx
+++ b/docs/content/docs/guides/workflows/fan-out.mdx
@@ -109,7 +109,7 @@ By default (`on_failure="fail_fast"`), if any fan-out child fails:
- The fan-in and downstream steps are `SKIPPED`
- The workflow transitions to `FAILED`
-Combine with [conditions](/docs/guides/workflows/conditions) for more
+Combine with [conditions](/guides/workflows/conditions) for more
control:
```python
diff --git a/docs/content/docs/guides/workflows/index.mdx b/docs/content/docs/guides/workflows/index.mdx
index 7d15778..661ec38 100644
--- a/docs/content/docs/guides/workflows/index.mdx
+++ b/docs/content/docs/guides/workflows/index.mdx
@@ -50,11 +50,11 @@ print(result.state) # WorkflowState.COMPLETED
| Page | What it covers |
|---|---|
-| [Building Workflows](/docs/guides/workflows/building) | `Workflow.step()`, decorator pattern, step configuration, DAG structure |
-| [Fan-Out & Fan-In](/docs/guides/workflows/fan-out) | Splitting results into parallel jobs, collecting with aggregation |
-| [Conditions & Error Handling](/docs/guides/workflows/conditions) | `on_success`, `on_failure`, `always`, callable conditions, `on_failure` modes |
-| [Approval Gates](/docs/guides/workflows/gates) | Human-in-the-loop pause/resume, timeout, approve/reject API |
-| [Sub-Workflows & Scheduling](/docs/guides/workflows/composition) | Nesting workflows, cron-scheduled runs |
-| [Incremental Runs](/docs/guides/workflows/caching) | Result hashing, `CACHE_HIT`, dirty-set propagation, TTL |
-| [Analysis & Visualization](/docs/guides/workflows/analysis) | Critical path, bottleneck analysis, Mermaid/DOT rendering |
-| [Canvas Primitives](/docs/guides/workflows/canvas) | Chain, group, chord — simple composition without DAGs |
+| [Building Workflows](/guides/workflows/building) | `Workflow.step()`, decorator pattern, step configuration, DAG structure |
+| [Fan-Out & Fan-In](/guides/workflows/fan-out) | Splitting results into parallel jobs, collecting with aggregation |
+| [Conditions & Error Handling](/guides/workflows/conditions) | `on_success`, `on_failure`, `always`, callable conditions, `on_failure` modes |
+| [Approval Gates](/guides/workflows/gates) | Human-in-the-loop pause/resume, timeout, approve/reject API |
+| [Sub-Workflows & Scheduling](/guides/workflows/composition) | Nesting workflows, cron-scheduled runs |
+| [Incremental Runs](/guides/workflows/caching) | Result hashing, `CACHE_HIT`, dirty-set propagation, TTL |
+| [Analysis & Visualization](/guides/workflows/analysis) | Critical path, bottleneck analysis, Mermaid/DOT rendering |
+| [Canvas Primitives](/guides/workflows/canvas) | Chain, group, chord — simple composition without DAGs |
diff --git a/docs/content/docs/index.mdx b/docs/content/docs/index.mdx
deleted file mode 100644
index 7e42a9a..0000000
--- a/docs/content/docs/index.mdx
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Taskito
-description: Rust-powered task queue for Python. No broker required.
----
-
-import { Cards, Card } from "fumadocs-ui/components/card";
-import { Rocket, BookOpen, Boxes, Code2 } from "lucide-react";
-
-A brokerless, Rust-powered task queue for Python. Replace Celery without Redis.
-
-Start with SQLite, scale to Postgres. No broker to install, configure, or manage.
-
-```bash
-pip install taskito
-```
-
-Most Python task queues require a separate broker (Redis, RabbitMQ) that you have
-to install, configure, monitor, and keep running. **taskito** embeds everything
-into a single SQLite file — the queue, the results, the rate limits, the
-schedules. Just `pip install` and go.
-
-The core engine is written in **Rust** for performance: job dispatch, retry
-scheduling, rate limiting, and storage all happen in compiled native code.
-Python only runs during actual task execution.
-
-## Browse the docs
-
-
- }
- title="Getting Started"
- href="/docs/getting-started/installation"
- description="Install and run your first task in 5 minutes."
- />
- }
- title="Guides"
- href="/docs/guides"
- description="Topical walkthroughs grouped by intent — core, reliability, advanced execution, operations, more."
- />
- }
- title="Architecture"
- href="/docs/architecture"
- description="How the Rust core, scheduler, storage, and worker pool fit together."
- />
- }
- title="API Reference"
- href="/docs/api-reference"
- description="Every public class, method, and CLI command with signatures and examples."
- />
-
diff --git a/docs/content/docs/meta.json b/docs/content/docs/meta.json
index de0fe69..f40ac55 100644
--- a/docs/content/docs/meta.json
+++ b/docs/content/docs/meta.json
@@ -1,7 +1,6 @@
{
"title": "Taskito",
"pages": [
- "index",
"getting-started",
"guides",
"architecture",
diff --git a/docs/content/docs/more/comparison.mdx b/docs/content/docs/more/comparison.mdx
index 0495e96..d34610d 100644
--- a/docs/content/docs/more/comparison.mdx
+++ b/docs/content/docs/more/comparison.mdx
@@ -77,7 +77,7 @@ widely adopted.
**Choose taskito** if you want zero-infrastructure simplicity on a single machine.
**Choose Celery** if you need distributed workers, complex routing, or enterprise features.
-Looking to switch? See the [Migrating from Celery](/docs/guides/operations) guide for a
+Looking to switch? See the [Migrating from Celery](/guides/operations) guide for a
step-by-step walkthrough with side-by-side code examples.
### vs RQ (Redis Queue)
diff --git a/docs/content/docs/more/examples/index.mdx b/docs/content/docs/more/examples/index.mdx
index 1b76381..5c0658a 100644
--- a/docs/content/docs/more/examples/index.mdx
+++ b/docs/content/docs/more/examples/index.mdx
@@ -7,9 +7,9 @@ End-to-end examples demonstrating common taskito patterns.
| Example | Description |
|---------|-------------|
-| [FastAPI Service](/docs/more/examples/fastapi-service) | REST API that enqueues tasks and streams progress via SSE |
-| [Notification Service](/docs/more/examples/notifications) | Multi-channel notifications with retries and rate limiting |
-| [Web Scraper Pipeline](/docs/more/examples/web-scraper) | Distributed scraping with chains and error handling |
-| [Data Pipeline](/docs/more/examples/data-pipeline) | ETL pipeline with dependencies, groups, and chords |
-| [DAG Workflows](/docs/more/examples/workflows) | Fan-out, conditions, gates, sub-workflows, incremental runs |
-| [Benchmark](/docs/more/examples/benchmark) | Performance benchmarks comparing taskito to alternatives |
+| [FastAPI Service](/more/examples/fastapi-service) | REST API that enqueues tasks and streams progress via SSE |
+| [Notification Service](/more/examples/notifications) | Multi-channel notifications with retries and rate limiting |
+| [Web Scraper Pipeline](/more/examples/web-scraper) | Distributed scraping with chains and error handling |
+| [Data Pipeline](/more/examples/data-pipeline) | ETL pipeline with dependencies, groups, and chords |
+| [DAG Workflows](/more/examples/workflows) | Fan-out, conditions, gates, sub-workflows, incremental runs |
+| [Benchmark](/more/examples/benchmark) | Performance benchmarks comparing taskito to alternatives |
diff --git a/docs/content/docs/more/faq.mdx b/docs/content/docs/more/faq.mdx
index 82a31f9..7a30b15 100644
--- a/docs/content/docs/more/faq.mdx
+++ b/docs/content/docs/more/faq.mdx
@@ -96,7 +96,7 @@ Use the **Postgres backend** (`pip install taskito[postgres]`) when you need:
- **Existing Postgres infrastructure** — leverage your existing database and backups
For single-machine workloads, SQLite is simpler and requires zero setup. See
-the [Postgres backend guide](/docs/guides/operations).
+the [Postgres backend guide](/guides/operations).
## Is taskito production-ready?
@@ -104,7 +104,7 @@ taskito is suitable for production workloads — background job processing,
periodic tasks, data pipelines, and similar use cases.
For single-machine deployments, use the default SQLite backend. For
-multi-server setups, use the [Postgres backend](/docs/guides/operations).
+multi-server setups, use the [Postgres backend](/guides/operations).
## What observability options does taskito support?
@@ -112,9 +112,9 @@ taskito offers three observability integrations, each suited to different needs:
| Integration | Best for | Install |
|-------------|----------|---------|
-| **[OpenTelemetry](/docs/guides/integrations)** | Distributed tracing, correlating tasks with HTTP requests | `pip install taskito[otel]` |
-| **[Prometheus](/docs/guides/integrations)** | Metrics dashboards, alerting on queue depth/error rates | `pip install taskito[prometheus]` |
-| **[Sentry](/docs/guides/integrations)** | Error tracking with rich context and breadcrumbs | `pip install taskito[sentry]` |
+| **[OpenTelemetry](/guides/integrations)** | Distributed tracing, correlating tasks with HTTP requests | `pip install taskito[otel]` |
+| **[Prometheus](/guides/integrations)** | Metrics dashboards, alerting on queue depth/error rates | `pip install taskito[prometheus]` |
+| **[Sentry](/guides/integrations)** | Error tracking with rich context and breadcrumbs | `pip install taskito[sentry]` |
All three are implemented as `TaskMiddleware` and can be combined together.
@@ -153,7 +153,7 @@ stats = await queue.astats()
Sync and async tasks can coexist in the same queue. The worker automatically
routes each job to the correct pool based on the task type. See the
-[Async Tasks guide](/docs/guides/advanced-execution) for details including
+[Async Tasks guide](/guides/advanced-execution) for details including
`async_concurrency` tuning and `current_job` context in async tasks.
## What serialization format does taskito use?
diff --git a/docs/src/app/docs/[[...slug]]/page.tsx b/docs/src/app/(docs)/[...slug]/page.tsx
similarity index 94%
rename from docs/src/app/docs/[[...slug]]/page.tsx
rename to docs/src/app/(docs)/[...slug]/page.tsx
index 074d053..c16b155 100644
--- a/docs/src/app/docs/[[...slug]]/page.tsx
+++ b/docs/src/app/(docs)/[...slug]/page.tsx
@@ -13,7 +13,7 @@ import { getMDXComponents } from "@/components/mdx";
import { gitConfig } from "@/lib/shared";
import { getPageImage, getPageMarkdownUrl, source } from "@/lib/source";
-export default async function Page(props: PageProps<"/docs/[[...slug]]">) {
+export default async function Page(props: PageProps<"/[...slug]">) {
const params = await props.params;
const page = source.getPage(params.slug);
if (!page) notFound();
@@ -51,7 +51,7 @@ export async function generateStaticParams() {
}
export async function generateMetadata(
- props: PageProps<"/docs/[[...slug]]">,
+ props: PageProps<"/[...slug]">,
): Promise {
const params = await props.params;
const page = source.getPage(params.slug);
diff --git a/docs/src/app/docs/layout.tsx b/docs/src/app/(docs)/layout.tsx
similarity index 79%
rename from docs/src/app/docs/layout.tsx
rename to docs/src/app/(docs)/layout.tsx
index efeef54..cdde5f7 100644
--- a/docs/src/app/docs/layout.tsx
+++ b/docs/src/app/(docs)/layout.tsx
@@ -2,7 +2,7 @@ import { DocsLayout } from "fumadocs-ui/layouts/docs";
import { baseOptions } from "@/lib/layout.shared";
import { source } from "@/lib/source";
-export default function Layout({ children }: LayoutProps<"/docs">) {
+export default function Layout({ children }: LayoutProps<"/">) {
return (
{children}
diff --git a/docs/src/app/llms.mdx/docs/[[...slug]]/route.ts b/docs/src/app/llms.mdx/[[...slug]]/route.ts
similarity index 91%
rename from docs/src/app/llms.mdx/docs/[[...slug]]/route.ts
rename to docs/src/app/llms.mdx/[[...slug]]/route.ts
index f6f1319..19bdeee 100644
--- a/docs/src/app/llms.mdx/docs/[[...slug]]/route.ts
+++ b/docs/src/app/llms.mdx/[[...slug]]/route.ts
@@ -5,7 +5,7 @@ export const revalidate = false;
export async function GET(
_req: Request,
- { params }: RouteContext<"/llms.mdx/docs/[[...slug]]">,
+ { params }: RouteContext<"/llms.mdx/[[...slug]]">,
) {
const { slug } = await params;
// remove the appended "content.md"
diff --git a/docs/src/app/og/docs/[...slug]/route.tsx b/docs/src/app/og/[...slug]/route.tsx
similarity index 94%
rename from docs/src/app/og/docs/[...slug]/route.tsx
rename to docs/src/app/og/[...slug]/route.tsx
index 5e951cf..55b43ad 100644
--- a/docs/src/app/og/docs/[...slug]/route.tsx
+++ b/docs/src/app/og/[...slug]/route.tsx
@@ -8,7 +8,7 @@ export const revalidate = false;
export async function GET(
_req: Request,
- { params }: RouteContext<"/og/docs/[...slug]">,
+ { params }: RouteContext<"/og/[...slug]">,
) {
const { slug } = await params;
const page = source.getPage(slug.slice(0, -1));
diff --git a/docs/src/lib/landing-content.tsx b/docs/src/lib/landing-content.tsx
index fdb4dc2..4b18c7b 100644
--- a/docs/src/lib/landing-content.tsx
+++ b/docs/src/lib/landing-content.tsx
@@ -51,28 +51,28 @@ export const DOC_SECTIONS: DocSectionCard[] = [
title: "Guides",
description:
"Recipes for tasks, queues, workers, retries, workflows, observability, and integrations.",
- href: "/docs/guides",
+ href: "/guides",
},
{
icon: Layers,
title: "Architecture",
description:
"How the Rust core, scheduler, worker pool, storage, and resource graph fit together.",
- href: "/docs/architecture/overview",
+ href: "/architecture/overview",
},
{
icon: Code2,
title: "API Reference",
description:
"Queues, tasks, results, contexts, the canvas, workflows, testing helpers, and the CLI.",
- href: "/docs/api-reference/overview",
+ href: "/api-reference/overview",
},
{
icon: Sparkles,
title: "More",
description:
"Worked examples, the Celery comparison, FAQ, and the per-release changelog.",
- href: "/docs/more/examples",
+ href: "/more/examples",
},
];
@@ -109,11 +109,11 @@ export const HERO: LandingHero = {
description:
"Rust-powered task queue for Python. Replace Celery without Redis or RabbitMQ. Start with SQLite, scale to Postgres.",
primaryCta: {
- href: "/docs/getting-started/quickstart",
+ href: "/getting-started/quickstart",
label: "Quickstart",
},
secondaryCta: {
- href: "/docs/getting-started/installation",
+ href: "/getting-started/installation",
label: "Install",
},
ghostCta: {
@@ -259,25 +259,25 @@ export const USE_CASES: UseCase[] = [
icon: Database,
title: "ETL pipelines",
body: "Chain extract → transform → load as a DAG. Fan out across workers, fan in to aggregate, restart from any node on failure.",
- href: "/docs/guides/workflows",
+ href: "/guides/workflows",
},
{
icon: Mail,
title: "Email & notifications",
body: "Bursty SMTP, push, or webhook delivery. Per-task rate limits keep providers happy; retries with backoff handle transient failures.",
- href: "/docs/guides/reliability/retries",
+ href: "/guides/reliability/retries",
},
{
icon: Cpu,
title: "ML inference & batch",
body: "Long-running model jobs with progress tracking, soft timeouts, and prefork pools for true CPU parallelism without GIL contention.",
- href: "/docs/guides/advanced-execution/prefork",
+ href: "/guides/advanced-execution/prefork",
},
{
icon: Clock,
title: "Scheduled jobs",
body: "Six-field cron syntax down to the second. Periodic tasks live in the scheduler — no separate beat daemon to babysit.",
- href: "/docs/guides/core/scheduling",
+ href: "/guides/core/scheduling",
},
];
@@ -314,11 +314,11 @@ export const CTA: LandingCta = {
description:
"The quickstart walks you through defining a task, enqueuing it, and watching the worker run it — no Redis, no broker, no config.",
primary: {
- href: "/docs/getting-started/quickstart",
+ href: "/getting-started/quickstart",
label: "Start the quickstart",
},
secondary: {
- href: "/docs/more/comparison",
+ href: "/more/comparison",
label: "See the full comparison",
},
};
diff --git a/docs/src/lib/layout.shared.tsx b/docs/src/lib/layout.shared.tsx
index 17381d2..7d4402f 100644
--- a/docs/src/lib/layout.shared.tsx
+++ b/docs/src/lib/layout.shared.tsx
@@ -4,23 +4,23 @@ import { appName, gitConfig } from "./shared";
const PRIMARY_NAV_LINKS = [
{
text: "Getting Started",
- url: "/docs/getting-started/installation",
+ url: "/getting-started/installation",
},
{
text: "Guides",
- url: "/docs/guides",
+ url: "/guides",
},
{
text: "Architecture",
- url: "/docs/architecture/overview",
+ url: "/architecture/overview",
},
{
text: "API",
- url: "/docs/api-reference/overview",
+ url: "/api-reference/overview",
},
{
text: "Changelog",
- url: "/docs/more/changelog",
+ url: "/more/changelog",
},
];
diff --git a/docs/src/lib/shared.ts b/docs/src/lib/shared.ts
index 4d31b6d..2ace48f 100644
--- a/docs/src/lib/shared.ts
+++ b/docs/src/lib/shared.ts
@@ -1,7 +1,7 @@
export const appName = "Taskito";
-export const docsRoute = "/docs";
-export const docsImageRoute = "/og/docs";
-export const docsContentRoute = "/llms.mdx/docs";
+export const docsRoute = "/";
+export const docsImageRoute = "/og";
+export const docsContentRoute = "/llms.mdx";
export const gitConfig = {
user: "ByteVeda",