{"adoption": {"forks": 152, "observed_at": "2026-08-28T04:04:31.724391+00:00", "stars": 1369}, "canonical_url": "https://ross.abutalabs.com/products/asouldocs", "card": {"archived": false, "artifact_type": "application", "description": "ASoulDocs is a stupid web server for multilingual documentation", "domain": ["documentation", "web-development", "self-hosted"], "enriched": true, "function": ["documentation", "http-server", "search-engine", "webhook", "templating"], "health_score": 62, "homepage": "https://asouldocs.dev", "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["asoul-sig/asouldocs"], "name": "asoul-sig/asouldocs", "platform": ["windows", "go", "self-hosted"], "pushed_at": "2026-03-01T17:45:04+00:00", "repo": "asoul-sig/asouldocs", "stars": 1369, "tags": ["multilingual-docs", "docs-server", "language-fallback", "push-to-sync", "dark-mode", "disqus", "utterances", "lsif", "linux", "macos", "docker", "web-server"], "topics": ["documentation", "go", "a-soul", "lsif-enabled", "documentation-server"], "urls": [], "use_cases": ["host multilingual project documentation", "self-host a documentation site with language fallback", "sync docs from GitHub via webhook", "add comments and analytics to documentation", "serve docs with automatic dark mode", "customize documentation site templates"], "what_it_is": "ASoulDocs is a self-hosted web server for serving multilingual project documentation, written in Go. It supports language fallback, real-time push-to-sync from Git hosts via webhook, dark mode, customizable templates, and integrations with commenting and analytics platforms.", "when_to_avoid": ["you prefer a static site generator with no server to host", "you need SaaS-hosted documentation with zero maintenance", "you need advanced features like versioning or protected resources that are still on the roadmap"], "when_to_choose": ["you need multilingual docs without changing URLs", "you want self-hosted docs with built-in push-to-sync from Git", "you want language fallback to a default language", "you need a customizable, self-hosted alternative to MkDocs or GitBook"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/asouldocs", "repo": "asoul-sig/asouldocs", "role": "main", "score": 54}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.724391+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.917857+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ac6f1545b944a323f4ec69f08f0f87e2775a2de60119e71a3e4bfd7ef02535", "fetched_at": "2026-08-28T04:04:31.724391+00:00", "kind": "readme", "missing": false, "url": "https://github.com/asoul-sig/asouldocs"}, {"content_hash": "11aaaf991efdd7b7988814c7c3ca054a0bc1b209b17d5168647009c0f7441a20", "fetched_at": "2026-08-29T11:57:50.883308+00:00", "kind": "homepage", "missing": false, "url": "https://asouldocs.dev"}, {"content_hash": "9c2536cd345afaba6d11ab80f95fee43c2a73bae986b504ff5f759bfe0dff682", "fetched_at": "2026-08-29T11:57:50.893008+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs"}, {"content_hash": "8db0e82d2c14355ab9d5399025e287e49fc7514ad1b832eab9ec1c5b6cea43a9", "fetched_at": "2026-08-29T11:57:50.895224+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/introduction/installation"}, {"content_hash": "55d3f203933c99b8e18aa5f205b59350e45cfc9c7eb7b632dab451f5c5daa435", "fetched_at": "2026-08-29T11:57:50.897139+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/set-up-documentation"}, {"content_hash": "44dbc6f57748252245141042f385cba9f5b7017eb1a5771734be2a0997a7ec18", "fetched_at": "2026-08-29T11:57:50.899326+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/use-extensions"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.724391+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.917857+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ac6f1545b944a323f4ec69f08f0f87e2775a2de60119e71a3e4bfd7ef02535", "fetched_at": "2026-08-28T04:04:31.724391+00:00", "kind": "readme", "missing": false, "url": "https://github.com/asoul-sig/asouldocs"}, {"content_hash": "11aaaf991efdd7b7988814c7c3ca054a0bc1b209b17d5168647009c0f7441a20", "fetched_at": "2026-08-29T11:57:50.883308+00:00", "kind": "homepage", "missing": false, "url": "https://asouldocs.dev"}, {"content_hash": "9c2536cd345afaba6d11ab80f95fee43c2a73bae986b504ff5f759bfe0dff682", "fetched_at": "2026-08-29T11:57:50.893008+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs"}, {"content_hash": "8db0e82d2c14355ab9d5399025e287e49fc7514ad1b832eab9ec1c5b6cea43a9", "fetched_at": "2026-08-29T11:57:50.895224+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/introduction/installation"}, {"content_hash": "55d3f203933c99b8e18aa5f205b59350e45cfc9c7eb7b632dab451f5c5daa435", "fetched_at": "2026-08-29T11:57:50.897139+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/set-up-documentation"}, {"content_hash": "44dbc6f57748252245141042f385cba9f5b7017eb1a5771734be2a0997a7ec18", "fetched_at": "2026-08-29T11:57:50.899326+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/use-extensions"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.917857+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ac6f1545b944a323f4ec69f08f0f87e2775a2de60119e71a3e4bfd7ef02535", "fetched_at": "2026-08-28T04:04:31.724391+00:00", "kind": "readme", "missing": false, "url": "https://github.com/asoul-sig/asouldocs"}, {"content_hash": "11aaaf991efdd7b7988814c7c3ca054a0bc1b209b17d5168647009c0f7441a20", "fetched_at": "2026-08-29T11:57:50.883308+00:00", "kind": "homepage", "missing": false, "url": "https://asouldocs.dev"}, {"content_hash": "9c2536cd345afaba6d11ab80f95fee43c2a73bae986b504ff5f759bfe0dff682", "fetched_at": "2026-08-29T11:57:50.893008+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs"}, {"content_hash": "8db0e82d2c14355ab9d5399025e287e49fc7514ad1b832eab9ec1c5b6cea43a9", "fetched_at": "2026-08-29T11:57:50.895224+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/introduction/installation"}, {"content_hash": "55d3f203933c99b8e18aa5f205b59350e45cfc9c7eb7b632dab451f5c5daa435", "fetched_at": "2026-08-29T11:57:50.897139+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/set-up-documentation"}, {"content_hash": "44dbc6f57748252245141042f385cba9f5b7017eb1a5771734be2a0997a7ec18", "fetched_at": "2026-08-29T11:57:50.899326+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/use-extensions"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.724391+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.724391+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.724391+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.917857+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ac6f1545b944a323f4ec69f08f0f87e2775a2de60119e71a3e4bfd7ef02535", "fetched_at": "2026-08-28T04:04:31.724391+00:00", "kind": "readme", "missing": false, "url": "https://github.com/asoul-sig/asouldocs"}, {"content_hash": "11aaaf991efdd7b7988814c7c3ca054a0bc1b209b17d5168647009c0f7441a20", "fetched_at": "2026-08-29T11:57:50.883308+00:00", "kind": "homepage", "missing": false, "url": "https://asouldocs.dev"}, {"content_hash": "9c2536cd345afaba6d11ab80f95fee43c2a73bae986b504ff5f759bfe0dff682", "fetched_at": "2026-08-29T11:57:50.893008+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs"}, {"content_hash": "8db0e82d2c14355ab9d5399025e287e49fc7514ad1b832eab9ec1c5b6cea43a9", "fetched_at": "2026-08-29T11:57:50.895224+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/introduction/installation"}, {"content_hash": "55d3f203933c99b8e18aa5f205b59350e45cfc9c7eb7b632dab451f5c5daa435", "fetched_at": "2026-08-29T11:57:50.897139+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/set-up-documentation"}, {"content_hash": "44dbc6f57748252245141042f385cba9f5b7017eb1a5771734be2a0997a7ec18", "fetched_at": "2026-08-29T11:57:50.899326+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/use-extensions"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.724391+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.724391+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.917857+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ac6f1545b944a323f4ec69f08f0f87e2775a2de60119e71a3e4bfd7ef02535", "fetched_at": "2026-08-28T04:04:31.724391+00:00", "kind": "readme", "missing": false, "url": "https://github.com/asoul-sig/asouldocs"}, {"content_hash": "11aaaf991efdd7b7988814c7c3ca054a0bc1b209b17d5168647009c0f7441a20", "fetched_at": "2026-08-29T11:57:50.883308+00:00", "kind": "homepage", "missing": false, "url": "https://asouldocs.dev"}, {"content_hash": "9c2536cd345afaba6d11ab80f95fee43c2a73bae986b504ff5f759bfe0dff682", "fetched_at": "2026-08-29T11:57:50.893008+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs"}, {"content_hash": "8db0e82d2c14355ab9d5399025e287e49fc7514ad1b832eab9ec1c5b6cea43a9", "fetched_at": "2026-08-29T11:57:50.895224+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/introduction/installation"}, {"content_hash": "55d3f203933c99b8e18aa5f205b59350e45cfc9c7eb7b632dab451f5c5daa435", "fetched_at": "2026-08-29T11:57:50.897139+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/set-up-documentation"}, {"content_hash": "44dbc6f57748252245141042f385cba9f5b7017eb1a5771734be2a0997a7ec18", "fetched_at": "2026-08-29T11:57:50.899326+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/use-extensions"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.724391+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.724391+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.724391+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.917857+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ac6f1545b944a323f4ec69f08f0f87e2775a2de60119e71a3e4bfd7ef02535", "fetched_at": "2026-08-28T04:04:31.724391+00:00", "kind": "readme", "missing": false, "url": "https://github.com/asoul-sig/asouldocs"}, {"content_hash": "11aaaf991efdd7b7988814c7c3ca054a0bc1b209b17d5168647009c0f7441a20", "fetched_at": "2026-08-29T11:57:50.883308+00:00", "kind": "homepage", "missing": false, "url": "https://asouldocs.dev"}, {"content_hash": "9c2536cd345afaba6d11ab80f95fee43c2a73bae986b504ff5f759bfe0dff682", "fetched_at": "2026-08-29T11:57:50.893008+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs"}, {"content_hash": "8db0e82d2c14355ab9d5399025e287e49fc7514ad1b832eab9ec1c5b6cea43a9", "fetched_at": "2026-08-29T11:57:50.895224+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/introduction/installation"}, {"content_hash": "55d3f203933c99b8e18aa5f205b59350e45cfc9c7eb7b632dab451f5c5daa435", "fetched_at": "2026-08-29T11:57:50.897139+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/set-up-documentation"}, {"content_hash": "44dbc6f57748252245141042f385cba9f5b7017eb1a5771734be2a0997a7ec18", "fetched_at": "2026-08-29T11:57:50.899326+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/use-extensions"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.724391+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.724391+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.917857+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ac6f1545b944a323f4ec69f08f0f87e2775a2de60119e71a3e4bfd7ef02535", "fetched_at": "2026-08-28T04:04:31.724391+00:00", "kind": "readme", "missing": false, "url": "https://github.com/asoul-sig/asouldocs"}, {"content_hash": "11aaaf991efdd7b7988814c7c3ca054a0bc1b209b17d5168647009c0f7441a20", "fetched_at": "2026-08-29T11:57:50.883308+00:00", "kind": "homepage", "missing": false, "url": "https://asouldocs.dev"}, {"content_hash": "9c2536cd345afaba6d11ab80f95fee43c2a73bae986b504ff5f759bfe0dff682", "fetched_at": "2026-08-29T11:57:50.893008+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs"}, {"content_hash": "8db0e82d2c14355ab9d5399025e287e49fc7514ad1b832eab9ec1c5b6cea43a9", "fetched_at": "2026-08-29T11:57:50.895224+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/introduction/installation"}, {"content_hash": "55d3f203933c99b8e18aa5f205b59350e45cfc9c7eb7b632dab451f5c5daa435", "fetched_at": "2026-08-29T11:57:50.897139+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/set-up-documentation"}, {"content_hash": "44dbc6f57748252245141042f385cba9f5b7017eb1a5771734be2a0997a7ec18", "fetched_at": "2026-08-29T11:57:50.899326+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/use-extensions"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.917857+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ac6f1545b944a323f4ec69f08f0f87e2775a2de60119e71a3e4bfd7ef02535", "fetched_at": "2026-08-28T04:04:31.724391+00:00", "kind": "readme", "missing": false, "url": "https://github.com/asoul-sig/asouldocs"}, {"content_hash": "11aaaf991efdd7b7988814c7c3ca054a0bc1b209b17d5168647009c0f7441a20", "fetched_at": "2026-08-29T11:57:50.883308+00:00", "kind": "homepage", "missing": false, "url": "https://asouldocs.dev"}, {"content_hash": "9c2536cd345afaba6d11ab80f95fee43c2a73bae986b504ff5f759bfe0dff682", "fetched_at": "2026-08-29T11:57:50.893008+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs"}, {"content_hash": "8db0e82d2c14355ab9d5399025e287e49fc7514ad1b832eab9ec1c5b6cea43a9", "fetched_at": "2026-08-29T11:57:50.895224+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/introduction/installation"}, {"content_hash": "55d3f203933c99b8e18aa5f205b59350e45cfc9c7eb7b632dab451f5c5daa435", "fetched_at": "2026-08-29T11:57:50.897139+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/set-up-documentation"}, {"content_hash": "44dbc6f57748252245141042f385cba9f5b7017eb1a5771734be2a0997a7ec18", "fetched_at": "2026-08-29T11:57:50.899326+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/use-extensions"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.917857+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ac6f1545b944a323f4ec69f08f0f87e2775a2de60119e71a3e4bfd7ef02535", "fetched_at": "2026-08-28T04:04:31.724391+00:00", "kind": "readme", "missing": false, "url": "https://github.com/asoul-sig/asouldocs"}, {"content_hash": "11aaaf991efdd7b7988814c7c3ca054a0bc1b209b17d5168647009c0f7441a20", "fetched_at": "2026-08-29T11:57:50.883308+00:00", "kind": "homepage", "missing": false, "url": "https://asouldocs.dev"}, {"content_hash": "9c2536cd345afaba6d11ab80f95fee43c2a73bae986b504ff5f759bfe0dff682", "fetched_at": "2026-08-29T11:57:50.893008+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs"}, {"content_hash": "8db0e82d2c14355ab9d5399025e287e49fc7514ad1b832eab9ec1c5b6cea43a9", "fetched_at": "2026-08-29T11:57:50.895224+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/introduction/installation"}, {"content_hash": "55d3f203933c99b8e18aa5f205b59350e45cfc9c7eb7b632dab451f5c5daa435", "fetched_at": "2026-08-29T11:57:50.897139+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/set-up-documentation"}, {"content_hash": "44dbc6f57748252245141042f385cba9f5b7017eb1a5771734be2a0997a7ec18", "fetched_at": "2026-08-29T11:57:50.899326+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/use-extensions"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.917857+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ac6f1545b944a323f4ec69f08f0f87e2775a2de60119e71a3e4bfd7ef02535", "fetched_at": "2026-08-28T04:04:31.724391+00:00", "kind": "readme", "missing": false, "url": "https://github.com/asoul-sig/asouldocs"}, {"content_hash": "11aaaf991efdd7b7988814c7c3ca054a0bc1b209b17d5168647009c0f7441a20", "fetched_at": "2026-08-29T11:57:50.883308+00:00", "kind": "homepage", "missing": false, "url": "https://asouldocs.dev"}, {"content_hash": "9c2536cd345afaba6d11ab80f95fee43c2a73bae986b504ff5f759bfe0dff682", "fetched_at": "2026-08-29T11:57:50.893008+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs"}, {"content_hash": "8db0e82d2c14355ab9d5399025e287e49fc7514ad1b832eab9ec1c5b6cea43a9", "fetched_at": "2026-08-29T11:57:50.895224+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/introduction/installation"}, {"content_hash": "55d3f203933c99b8e18aa5f205b59350e45cfc9c7eb7b632dab451f5c5daa435", "fetched_at": "2026-08-29T11:57:50.897139+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/set-up-documentation"}, {"content_hash": "44dbc6f57748252245141042f385cba9f5b7017eb1a5771734be2a0997a7ec18", "fetched_at": "2026-08-29T11:57:50.899326+00:00", "kind": "site_page", "missing": false, "url": "https://asouldocs.dev/docs/howto/use-extensions"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 70, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3993, "days_push": 185, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 54, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}