A few months ago I extensibly modify picowiki and creeated NanoWiki.

After using NanoWiki for a few months, the code became somewhat of an spaghetti mess. This has to do that picowiki was designed as a single file, single class application with Plugin extension. Since every change went to a single class this quickly became difficult to manage.

Additionally, I realized that "NanoWiki" was not a very good name as this name was used by several projects and organizations.

So, I went ahead and re-wrote the whole thing into NacoWiki. These are the changes:

  • Cleaner and more functional UI.
  • Initial REST-API support.
  • Added a CLI interface.
  • Off-tree installation, with the option of co-existing multiple instances.
  • Code modularization,
    • nacowiki main class that integrates everything together.
    • Core: main WIKI functionality
    • Cli: CLI interface
    • PluginCollection: plugin support
  • CodeMirror support now in the Core (instead of depending of Plugin implementations.
  • Re-organized CSS files
  • Raw/source code display.

As plugins:

  • Page handlers:
    • HTML
    • Markdown
    • NEW source code
  • NEW YouTube Links
  • NEW Static site generator
  • Emojis
  • File includes
  • Var snippets
  • WikiLinks (NEW: search article names)

Features/improvements over picowiki:

  • file management: create, delete, rename, modify, attach, etc.
  • hooks for access control
  • meta data support
  • Disabled code execution. This can be considered a "security" feature.
  • Support for byte ranges. This lets you stream video files directly from the wiki.
  • toggable, folder or document views.
  • theme support
  • Multiple file type handling


Documentation is now handled by phpDocumentor plus HTML generated using NacoWiki's own SiteGen plugin. You can find that here: