Skip to main content

Lightweight web documentation repository with a search engine

Project description

Dokang is a lightweight documentation repository. It is a web application that:

  1. Provides an endpoint for clients to upload their documentation.

    Sending documentation to Dokang is as simple as issuing a POST query such as:

    $ curl \
      -X POST \
      --form name=project_name \
      -F ":action=doc_upload" \
      -F content=@../documentation.zip \
      http://dokang:my-secret-token@dokang.example.com/upload
  2. Serves a home page with a list of all documentations and a simple search form that lets users search in HTML, text and PDF files. Other formats can be handled through the use of extensions.

  3. Serves all documentations.

Dokang also comes with a command line interface. It is lightweight in the sense that it is merely a wrapper around the Whoosh search engine with a very simple HTML text indexer. It can be extended to retrieve content from other types of files (such as PDF).

Dokang is similar to Readthedocs (although Readthedocs has a much broader set of features) but provides a global search across all hosted documentations. All of this is provided with a simple setup that does not need any relational database.

We (Polyconseil) use it to search through the Sphinx-generated documentation of all our projects. However, it may be used to host any kind of documentation.

Build and run your own docker image

To build your own image:

$ docker build -t dokang .

To run the image:

$ docker run --rm -e DOKANG_UPLOAD_TOKEN=my_little_secret \
  -e DOKANG_NAME='My docs' \
  -e DOKANG_DESCRIPTION='Documentations of all my projects' \
  -e DOKANG_SERVER_TRUSTED_PROXY=129.14.12.1  # Optional: the IP address of the proxy to pass to waitress server's trusted_proxy
  -p 8080:6543
  dokang

Go to http://localhost:8080/ in your browser, you should see the list of documentations.

Change log

0.10.1 (2023-02-10)

  • Fix selection of options (on the main page)

0.10.0 (2023-02-09)

  • Bump dependencies

  • Support of Python 3.7 and 3.8

  • Drop support of Python <=3.6

  • Fix OpenSearch view in Python 3.

0.9.5 (2016-12-14)

  • Improve data repository initialization.

0.9.4 (2016-07-05)

  • fix dockerfile.

0.9.3 (2016-07-04)

  • Add dockerfile.

0.9.2 (2016-04-26)

  • Keep title when updating documentation.

0.9.1 (2016-04-01)

  • Fix packaging

0.9.0 (2016-04-01)

  • Allow running simultaneous threads of Dokang web application.

    Until now, Dokang updated its list of document sets at startup and when a new document set was uploaded. Running multiple threads of the web application was obviously not working great, as one thread would not see any new document set if it was added by another thread.

    This limitation has now been lifted and Dokang web application can run with multiple threads (for example with multiple uWSGI workers).

Dokang 0.8.2 (2016-02-24)

  • Update doc set title after uploading a new version of the documentation.

Dokang 0.8.1 (2016-02-24)

  • Fix packaging.

Dokang 0.8.0 (2016-02-24)

  • Use the title of the index page as the title of each doc set.

  • Group doc sets by the first letter of their title.

Dokang 0.7.0 (2016-02-01)

  • Add support of Python 3.5.

  • When initializing the index, dokang init now creates all needed intermediate-level directories.

  • Add purge option to dokang clear to delete uploaded files.

  • Fix change detection: we used to store and use the modification time of the files. We now compute and store an MD5 hash for each file. It is slower than getting the modification time, but it handles more use cases.

    This is a backward-incompatible change. You must reindex all documents, like this:

    dokang init --force
    dokang index
  • Remove bogus indexation optimization. The indexation should be a lot faster now, especially on large document base.

  • Fix encoding error when parsing non ASCII, non UTF-8 HTML files. UTF-8 files were correctly processed, though.

  • Add basic support for OpenSearch.

  • Exclude more Sphinx-generated files like objects.inv and searchindex.js.

  • Display path of files in the search results of the command line client.

  • Fix bug in document deletion. When a document was detected as deleted from a document set (i.e. when a file was not present anymore in the “upload” directory), the indexation process deleted from the index all documents with the same path (for example index.html) in all document sets. The files themselves were not deleted so the next indexation would add them back to the index.

  • Use an asynchronous index writer that allows multiple indexation to be done concurrently. Without this, a whoosh.index.LockError exception is raised.

Dokang 0.6.1 (2015-03-03)

  • Fix redirection error when uploading documentation.

Dokang 0.6.0 (2015-03-03)

Brown bag release.

  • Drop Python 2.6 support.

  • Make documentation available from the root of Dokang (“/”). This change is backward-incompatible.

    Before this commit, if the upload dir was named “uploaded”, the documentation would be available at /uploaded/<doc_set_id>. This was a bit too verbose.

    With this (backward-incompatible) change, the documentation is now available at /<doc_set_id>.

Dokang 0.5.0 (2015-02-18)

  • Add “highlight” in the query string of the URLs of search results. This parameter is understood by Sphinx-generated HTML files.

  • Add documentation uploading end point (to use Dokang web frontend to serve the documentation)

Dokang 0.4.2 (2014-09-01)

  • Fix bad-looking (but working) URLs generated in the web front-end. They used to contain two consecutive slashes (for example http://example.com/project//doc.html) when the configuration of the project had a slash at the end of its URL.

Dokang 0.4.1 (2014-08-27)

  • Fixed MANIFEST.in so that the Python package contains all templates and stylesheets required by the web front-end.

Dokang 0.4.0 (2014-07-04)

  • A new dokang.hit_limit option has been added to the INI configuration file. It limits the number of results shown on the web front-end (or lifts this limit if the option is absent).

Dokang 0.3.0 (2014-07-04)

  • Fix bug in the HTML harvester. Trying to use it would fail with an exception because Whoosh would complain about something that unexpectedly is a byte string.

  • Fix bug in the handling of deleted documents. They were not deleted from the index.

Dokang 0.2.0 (2014-06-24)

Initial version.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

Dokang-0.10.1-py3-none-any.whl (23.7 kB view details)

Uploaded Python 3

File details

Details for the file Dokang-0.10.1-py3-none-any.whl.

File metadata

  • Download URL: Dokang-0.10.1-py3-none-any.whl
  • Upload date:
  • Size: 23.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.7

File hashes

Hashes for Dokang-0.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 51b0f02a4f0d8b757395502ff4094f4635df434311e55d52c309f4cd1e41cfad
MD5 d4c45c954f9ca14eade8b79e6e5e5995
BLAKE2b-256 5d65e5cc757a56f861bd2321d52efef825eecb58af92369b39e473c9f998a8ab

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page