MCPSERV.CLUB
TiddlyWiki

TiddlyWiki

Self-Hosted

Personal knowledge base in a single file

Active(100)
8.4kstars
0views
Updated 1 day ago

Overview

Discover what makes TiddlyWiki powerful

TiddlyWiki is a single‑file, client‑side wiki engine that can be run entirely in the browser or self‑hosted on any web server. From a developer standpoint, its core value lies in the **tiddler** abstraction—small, self‑contained units of content that can be linked, tagged, and scripted. This modularity turns the wiki into a lightweight data store that can be queried and transformed with JavaScript, making it an attractive choice for building knowledge bases, personal dashboards, or lightweight CMSs.

Single‑file architecture

WikiText markup

Extensible macro system

Plugin ecosystem

Overview

TiddlyWiki is a single‑file, client‑side wiki engine that can be run entirely in the browser or self‑hosted on any web server. From a developer standpoint, its core value lies in the tiddler abstraction—small, self‑contained units of content that can be linked, tagged, and scripted. This modularity turns the wiki into a lightweight data store that can be queried and transformed with JavaScript, making it an attractive choice for building knowledge bases, personal dashboards, or lightweight CMSs.

Key Features

  • Single‑file architecture: All data, templates, and logic reside in one HTML/JSON file, simplifying backup and version control.
  • WikiText markup: A concise syntax that supports headings, lists, tables, and embedded media, rendered on the fly via a built‑in parser.
  • Extensible macro system: Developers can write custom macros in JavaScript that run in the browser, enabling dynamic content generation and interaction.
  • Plugin ecosystem: Over 400 community plugins cover themes, data export/import, authentication, and more, all installable by adding a JSON reference to the main file.

Technical Stack

LayerTechnology
Front‑endVanilla JavaScript (ES6+), HTML5, CSS3
Rendering engineCustom WikiText parser written in JS; uses a virtual DOM approach for efficient re‑rendering
Data storageLocalStorage or IndexedDB for client‑side persistence; optional server‑side JSON files or SQLite via a Node.js wrapper
Server integrationOptional Express/Node, Python Flask, or any HTTP server; can serve the single file statically or via a lightweight API
Build toolingRollup/Webpack for plugin bundling; Grunt/Gulp scripts in older releases

The core is a pure‑client application, so no database schema or ORM is required. When self‑hosted, the server merely serves static assets; all CRUD operations happen in the browser and are optionally synced back to the server via a simple REST endpoint.

Core Capabilities

  • API: A JavaScript API ($tw namespace) exposes tiddler CRUD, tagging, and search operations. It also provides event hooks ($tw.utils.addEventListener) for reacting to content changes.
  • Search & Indexing: Full‑text search is built into the engine, with configurable stop words and stemming.
  • Export/Import: Tiddlers can be exported as JSON or Markdown; plugins add support for CSV, XML, and even GitHub Gist integration.
  • Theming: CSS variables allow runtime theme switching; plugins can supply their own style sheets.

Deployment & Infrastructure

  • Self‑hosting: Any static file server (Nginx, Apache, Caddy) will do. For dynamic sync, a lightweight Node/Express or Python Flask backend can expose /save and /load endpoints.
  • Scalability: Since the application is stateless, horizontal scaling is trivial—multiple instances can serve the same static file without conflict. For multi‑user scenarios, a central sync service (e.g., Firebase, CouchDB) can be plugged in.
  • Containerization: Official Docker images exist that bundle the static file with Nginx, simplifying CI/CD pipelines.

Integration & Extensibility

  • Plugins: Install by adding a JSON reference to the plugins array in the main file. The engine automatically fetches and executes them.
  • Webhooks: Custom plugins can expose HTTP endpoints via a tiny Express server, enabling integration with CI/CD pipelines or external services.
  • Custom Scripts: Developers can embed arbitrary JavaScript in tiddlers; the sandboxed environment prevents accidental DOM manipulation outside the wiki.

Developer Experience

  • Configuration: Minimal—most settings are JSON objects in the main file. Advanced users can tweak build scripts or server proxies.
  • Documentation: The official docs cover the API, plugin development, and deployment patterns. Community resources (forums, GitHub issues) are active.
  • Community: A vibrant open‑source community contributes plugins, themes, and bug fixes. The codebase is hosted on GitHub with a permissive MIT license.

Use Cases

  • Personal Knowledge Management: Build a self‑hosted, encrypted knowledge base that can be backed up as a single file.
  • Documentation Portals: Use the Markdown export capability to generate static docs for internal APIs or SDKs.
  • Micro‑CMS: Deploy as a lightweight CMS for small websites where full‑blown WordPress or Drupal would be overkill.
  • Educational Tools: Create interactive tutorials that load tiddlers on demand, leveraging the macro system for quizzes and code snippets.

Advantages

  • Zero‑server complexity: No database migrations or server-side templating required.
  • Fine‑grained control: Tiddlers can be treated as JSON objects, enabling integration with other JS libraries or custom APIs.
  • Open source & permissive: MIT license allows commercial use without licensing fees.
  • Performance: Client‑side rendering keeps server load minimal; the virtual DOM diffing keeps UI updates snappy even with large tiddler sets.

In summary, TiddlyWiki offers a highly modular, developer‑friendly platform for building self‑hosted wikis and lightweight content systems. Its single‑file, client‑side nature reduces operational overhead while still providing a rich API surface for custom extensions and integrations.

Open SourceReady to get started?

Join the community and start self-hosting TiddlyWiki today