How pixel2175/merodi works
Merodi is a Go-based Markdown static-site generator. Its user workflow is to initialize a project, write Markdown pages and templates, then build a draft or release site; it also documents watch, clean, and named-hook commands. The graph includes the parser, configuration, project setup, and major build/plugin stages. Some build and command-dispatch implementation was not sampled, so documented capabilities are shown without guessing their internal call paths.
Main entry points: src/main.go Merodi CLI · init/main.go Project initializer · compile.go Compiler dispatch · parser.go Command parser
Components 25
CLI and projects
- Merodi CLI
src/main.go - Command parser
src/parser/parser.go - Project discovery
src/project/project.go - Project config
src/config/main.go - Project initializer
src/init/main.go - Starter files
src/init/bootstrap.go
Site generation
- Build orchestration
src/core/build/build.go - Markdown compiler
src/core/build/compile/markdown/markdown.go - HTML attributes
src/core/build/compile/markdown/attrparser/attrparser.go - Jinja templates
src/core/build/compile/jinja/jinja.go - Compiler dispatch
src/core/build/compile/compile.go
Lua extensions
- Hook runner
src/core/hook/main.go - Lua runtime
src/core/lua/lua.go - Build bindings
src/core/lua/build.go - Compiler bindings
src/core/lua/compile.go - Config bindings
src/core/lua/config.go - Watch bindings
src/core/lua/watch.go - Hook bindings
src/core/lua/hook.go - Markdown extensions
src/core/lua/enable.go
Runtime support
- Command runtime
src/core/core.go - Build state
src/core/state/state.go - Output cleanup
src/core/clean/clean.go - File watcher
src/core/watch/main.go - Logging
src/utils/log/main.go
Other components
- Site author
Connections 19
- Site author → Merodi CLI: runs commands
README.md - Merodi CLI → Command parser: parses arguments
src/main.go - Merodi CLI → Command runtime: runs default action
src/main.go - Merodi CLI → Project initializer: runs init
src/main.go - Command parser → Project config: uses mode
src/parser/parser.go - Project initializer → Project discovery: resolves directory
src/init/main.go - Project initializer → Project config: initializes settings
src/init/main.go - Project initializer → Starter files: creates starter project
src/init/main.go - Site author → Markdown compiler: writes Markdown pages
README.md - Site author → Jinja templates: styles with templates
README.md - Site author → Build orchestration: builds site
README.md - Build orchestration → Compiler dispatch: compiles content
- Compiler dispatch → Markdown compiler: parses Markdown
- Compiler dispatch → Jinja templates: renders templates
- Site author → File watcher: watches changes
README.md - Site author → Output cleanup: cleans output
- Site author → Hook runner: runs named hooks
- Site author → Lua runtime: extends with plugins
README.md - Lua runtime → Markdown extensions: registers extensions