https://github.com/cliffordwebhole/webholeink
WebholeInk is a minimalist, open-source blogging engine built by and for developers who care about security, stability, and owning their words long-term.
https://github.com/cliffordwebhole/webholeink
blogging cms developer-tools markdown markdown-language minimalist open-source self-hosted
Last synced: 6 months ago
JSON representation
WebholeInk is a minimalist, open-source blogging engine built by and for developers who care about security, stability, and owning their words long-term.
- Host: GitHub
- URL: https://github.com/cliffordwebhole/webholeink
- Owner: cliffordwebhole
- License: mit
- Created: 2025-12-31T15:40:25.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-01-12T16:16:14.000Z (6 months ago)
- Last Synced: 2026-01-13T21:09:25.172Z (6 months ago)
- Topics: blogging, cms, developer-tools, markdown, markdown-language, minimalist, open-source, self-hosted
- Language: PHP
- Homepage: https://webholeink.com
- Size: 4.62 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE. Md
- Security: docs/SECURITY.md
- Roadmap: docs/ROADMAP.md
Awesome Lists containing this project
README
# WebholeInk
**WebholeInk** is a minimal, developer-first publishing engine.
No plugins.
No databases.
No magic.
Just files, clear contracts, and full control.
---
## π Status
**v0.1.0 β Core Stable**
The core engine is complete and locked.
This release establishes:
- Routing
- Handlers
- Content resolution
- Theming
- Navigation
- Markdown rendering
- View and layout contracts
No new features will be added to core without a version bump.
## v0.1.2 β Platform Hardening & Documentation
This release builds **around** the locked core without modifying it.
v0.1.2 focuses on operational stability, discoverability, and long-term maintainability rather than new features.
This release adds:
- Full documentation system (`/docs`) rendered from Markdown
- Canonical URLs, Open Graph, and Twitter metadata
- RSS (`feed.xml`) and JSON Feed (`feed.json`)
- Sitemap generation (`sitemap.xml`)
- Robots.txt for crawler control
- HTTP security headers
- HTTP caching with ETag and Last-Modified support
- Draft-aware content exclusion
- CLI tooling for content creation
- Deployment and operations documentation
No changes were made to:
- Core routing logic
- Content resolution rules
- View or layout contracts
- Markdown parsing behavior
The core remains **stable, locked, and boring**.
v0.1.2 establishes WebholeInk as a **production-ready publishing platform** while preserving the integrity of the core engine.
---
## π― Philosophy
WebholeInk exists to solve one problem well:
> **Publish content without surrendering control.**
Everything is explicit.
Everything is readable.
Everything is owned by the developer.
There is no admin panel.
There is no plugin system.
There is no database requirement.
If itβs not in the filesystem, it doesnβt exist.
---
## π§± Architecture Overview
public/ β HTTP entry point (only public files) app/ β Core engine (locked) content/ β Markdown content (pages, posts) config/ β Explicit configuration docs/ β Contracts & documentation
Core responsibilities are split cleanly:
- **Router** β maps paths to handlers
- **Handlers** β decide *what* to render
- **PageResolver** β resolves content files
- **View / PageView** β renders templates safely
- **Layout** β wraps content with theme chrome
- **Themes** β presentation only (no logic)
---
## π Content Model
Content is file-based and predictable.
content/ βββ pages/ βββ home.md βββ about.md βββ philosophy.md βββ page.md
- URLs map directly to filenames
- `/about` β `content/pages/about.md`
- Markdown is parsed at runtime
- No front-matter required (by design)
---
## π¨ Theming
Themes are PHP templates, not magic.
app/themes/default/ βββ layout.php βββ home.php βββ page.php βββ navigation.php βββ footer.php βββ assets/
- Themes do **presentation only**
- Logic lives in handlers and core
- Assets are served from `public/themes/`
---
### π¨ Author-Controlled Themes
WebholeInk supports multiple visual themes per site.
- Themes are selected by the publisher
- Visitors cannot toggle themes
- Themes are versioned and cache-safe
- No JavaScript required
This ensures predictable rendering and long-term maintainability.
---
## π Contracts (Locked)
Core behavior is defined by explicit contracts:
- `CORE.md` β system architecture
- `ROUTES.md` β routing rules
- `HANDLERS.md` β handler contract
- `CONTENT.md` β content resolution rules
- `VIEW.md` β view rendering rules
- `NAVIGATION.md` β navigation behavior
- `THEMES.md` β theming constraints
If itβs not documented, itβs not supported.
---
## π Stability Guarantee
This release is **core-stable**.
That means:
- No breaking changes without a version bump
- No silent behavior changes
- No scope creep
Future work will build **on top of** this foundation, not rewrite it.
---
## π Requirements
- PHP 8.2+
- Nginx or compatible web server
- No database
- No extensions beyond standard PHP
---
## π¦ Backup & Recovery
WebholeInk is intentionally easy to back up:
- Filesystem snapshot
- Git repository
- No state hidden elsewhere
If you can copy a directory, you can restore the site.
---
## π§ Roadmap
**v0.2.0 (Planned)**
- Collections / posts
- Metadata (optional, explicit)
- Pagination helpers
Core principles will not change.
---
## π Built By
Clifford Webhole
---
**WebholeInk**
_Developer-first publishing, without compromise._
## Documentation
- [Core Architecture](docs/CORE.md)
- [Routing Rules](docs/ROUTER.md)
- [Handler Contract](docs/HANDLERS.md)
- [Content Rules](docs/CONTENT.md)
- [Themes Contract](docs/THEMES.md)
- [View Contract](docs/VIEW.md)
- [Navigation Contract](docs/NAVIGATION.md)
- [Project Status](docs/STATUS.md)
- See [Installation](./INSTALL.md) for first-time setup.
## π License
WebholeInk is open-source software licensed under the MIT License.