datascape
Minimal self-hosted personal wiki. Folders are pages.
Features
- Pages: a folder's
index.mdrenders as HTML, and the folder's other files are listed below it. Going to a missing path lets you create the page there. - Editing: edit the whole page or a single heading's section. Tick task checkboxes directly on the rendered page.
- Move, rename, delete: moving a page onto an empty folder offers to merge into it.
- View settings: show the file list as a list or thumbnail grid, sorted by name, date, or size. Videos get thumbnails when
ffmpegis installed. - Search: find pages by name.
- Wikilinks:
[[query]]or[[query::label]]. They open a search, so links still work after a page is renamed. Typing[[in the editor suggests page names. Embed files with. - Movie import: create a page from OMDb metadata. Asks once for a free OMDb API key and keeps it in the browser.
- Special folders: a photo diary and a fitness dashboard.
- Quick-add bookmarklet: save the current tab to a wiki page.
- Companion app: an optional desktop helper, downloadable from the wiki footer. It opens wiki files in local apps and folders in the file manager.
Build & run
The wiki binary embeds the companion binaries, so build those first:
make companion-release # once, and after companion changes
go build -o datascape . # local
GOOS=linux GOARCH=arm go build -o datascape . # QNAP NAS
./datascape -dir ./wiki -addr :8080 -user me -pass secret
| Flag | Default | |
|---|---|---|
-addr |
:8080 |
Listen address |
-dir |
./wiki |
Wiki root |
-cache |
./cache |
Thumbnail cache |
-user, -pass |
Basic auth (omit to disable) | |
-reindex-interval |
30m |
Search index rebuild (0 = off) |
.page-settings
Per-folder key = value file. The view button in the Files header sets the first three keys.
| Key | Values (default first) |
|---|---|
view |
list, thumbnail |
sort |
name, modified, size |
order |
asc, desc |
type |
diary, fitness |
Keyboard shortcuts
All use Alt+Shift.
| Where | Keys |
|---|---|
| Anywhere | E edit, N new page, M move, F search |
| Editor | S save, 1–3 heading, B/I bold/italic, C/K code/code block, L link, P wikilink, G embed, U/O/X bullet/numbered/task list, Q quote, R rule, T format table, D/W date (ISO/long), V movie, Y delete line |
Diary
Diary/
.page-settings ← type = diary
2026/
index.md ← # 2026, ## 2026-05, ### 2026-05-11 sections
2026-05-11 Beach.jpg ← photos go under their date's section
The year page shows each day's section with its photos. Months and days that are missing (up to today) appear as placeholders with an [edit] button. A calendar in the sidebar jumps to any date.
Bookmarkable shortcuts: <diary>/today/, <diary>/this-month/, <diary>/this-year/.
Fitness
With type = fitness, a folder shows weight charts (daily and weekly mean, with your goal) below its content. Copy the Waistline app's export into the folder as waistline_export.json. Each new export replaces the old file.
Quick-add bookmarklet
Replace wiki.host and /Topics/Bookmarks/ with your host and target page:
javascript:(function(){var s=window.getSelection().toString().trim();var t=s||document.title;var u=location.href;var to='/Topics/Bookmarks/';var q='?to='+encodeURIComponent(to)+'&url='+encodeURIComponent(u)+'&title='+encodeURIComponent(t);window.open('https://wiki.host/quickadd'+q,'quickadd','width=480,height=320');})();
Each save adds this to the target page's index.md:
- [Example Page](https://example.com)
2026-05-11 14:30
optional comment