summaryrefslogtreecommitdiff
path: root/ikiwiki/tech.mdwn
blob: 38bd42bb7a3073f065dc166af6c5185569d060f7 (plain)

Ikiwiki for regular websites - technical details

Here's a graph of the interaction between the various parts of ikiwiki itself and different kinds of users (see also the [[introduction|website]]):

[[graph height=8 width=8 src=""" { // rankdir=LR // rotate=90 center=1

/* roles */
reader [shape=house, label="Reader"]
editor [shape=house, label="Editor"]
designer [shape=house, label="Designer"]
{rank=same; reader editor designer}

/* targets */
webpages_static [label="static pages"]
webpages_wiki [label="wiki pages"]
webpages_searchresult [label="search results", style=dotted]
{rank=same; webpages_static webpages_wiki webpages_searchresult}

/* input data */
search_query [shape=plaintext, label="search query"]
txt_editor [shape=plaintext, label="Markdown text"]
txt_designer [shape=plaintext, label="Markdown text"]
media [shape=plaintext, label="graphics files"]
tmpl [shape=plaintext, label="html templates"]

// {rank=same; search_query txt_editor txt_designer tmpl media}

/* user tool */
browser_reader [label="web browser"]
browser_editor [label="web browser"]
browser_designer [label="web browser"]
vcs_txt_local [shape=egg, label="Git repository"]
vcs_tmpl_local [shape=egg, label="Git repository"]
fs_local [shape=egg, label="filesystem"]

/* user interface */
txt_form [shape=box, label="web text editor (ikiwiki)"]
search_form [shape=box, label="search form (ikiwiki)"]
{rank=same; search_form txt_form}

/* storage types */
search_db [shape=egg, label="search index (Hyper Estraier)"]
vcs_txt [shape=egg, label="VCS repository (Git)"]
vcs_tmpl [shape=egg, label="VCS repository (Git)"]
fs [shape=egg, label="filesystem"]

// {rank=same; search_db vcs_txt vcs_tmpl fs}

/* stored data */
txt_stored [shape=plaintext, label="version-controlled Markdown text"]
media_stored [shape=plaintext, label="graphics files"]
tmpl_stored [shape=plaintext, label="version-controlled html templates"]

// {rank=same; txt_stored media_stored tmpl_stored}

/* engines */
iki_engine [shape=box, label="html renderer (Ikiwiki)"]
search_engine [shape=box, label="search engine (Hyper Estraier)"]
{rank=same; iki_engine search_engine}

/* groupings */
subgraph cluster_clitools {
	label="commandline editing"
	style=dashed
	txt_designer
	tmpl
	media
	vcs_tmpl_local
	vcs_txt_local
	fs_local
}
subgraph cluster_webtools {
	label="web editing"
	style=dashed
	txt_editor
	search_query
	{
		rank=same
		browser_reader
		browser_editor
		browser_designer
	}
}
subgraph cluster_storage {
	label="server storage"
	style=dashed
	vcs_tmpl
	vcs_txt
	fs
	search_db
	txt_stored
	tmpl_stored
	media_stored
}

/* paths */

reader -> search_query -> browser_reader -> search_form -> search_engine -> webpages_searchresult
search_db -> search_engine
search_db -> iki_engine [dir=back]

editor -> txt_editor -> browser_editor -> txt_form -> vcs_txt -> txt_stored -> iki_engine -> webpages_static
iki_engine -> webpages_wiki

designer -> txt_designer -> browser_designer -> txt_form
txt_designer -> vcs_txt_local

vcs_txt_local -> vcs_txt [dir=both]

designer -> tmpl -> vcs_tmpl_local
vcs_tmpl_local -> vcs_tmpl [dir=both]
vcs_tmpl -> tmpl_stored -> iki_engine

designer -> media -> fs_local
fs_local -> fs [dir=both]
fs -> media_stored -> iki_engine

} """]]


See also the simpler graphs focusing on [[roles|ikiroles]] and on the [[design|ikidesign]].