Extract configuration, helpers, content processing, and rendering logic into separate files Refactor router to use modular components |
||
|---|---|---|
| app | ||
| development | ||
| .gitignore | ||
| CLAUDE.md | ||
| README.md | ||
FolderWeb
A minimal, file-based PHP framework for publishing content that will work for decades. Just enough, nothing more. FolderWeb applies minimal PHP to enable modern conveniences while remaining maintainable for years or decades. No frameworks, no build tools, no JavaScript—just HTML, PHP 8.3+, and CSS. This is not a CMS with an admin panel, not a single-page application.
Getting Started
Requirements
- PHP 8.3 or higher
- A web server (Apache, Nginx, or PHP's built-in server)
Quick Start
- Clone or download this repository
- Point your web server's document root to /content
Development
Creating Content
- Create a directory for your content in the document root
- Add one or more content files (
.md,.php, or.html) - Optionally add
metadata.inifor title, date, and summary - Optionally add
cover.jpg|webpfor list view thumbnails
Content is immediately accessible at the URL matching the directory path.
Example structure:
/content/
00-welcome.php
01-introduction.md
about/
00-overview.md
01-philosophy.html
02-technology.php
blog/
2025-11-01-hello-world/
article.md
cover.jpg
metadata.ini
Multi-File Pages
Any folder without subdirectories is a page-type folder. All .md, .html, and .php files in that folder render together as a single page in alphanumerical order.
This allows you to:
- Break long content into manageable sections
- Mix file formats freely (Markdown, HTML, PHP)
- Reorder sections by renaming files
- Include dynamic PHP content alongside static content
Example:
/content/
docs/
00-introduction.md
01-setup.md
02-advanced.html
03-examples.php
All four files render as one page at /docs/, in that order.
Folder Types
FolderWeb automatically determines how to render folders:
- Page-type folder (no subdirectories) → Renders all content files as a single page
- Article-type folder (has subdirectories) → Shows list view with links to subdirectories
Customization
All customization lives in custom/:
- Styles: Place CSS in
custom/styles/base.css - Templates: Override defaults by placing files in
custom/templates/ - Fonts: Add font files to
custom/fonts/ - Configuration: Copy
app/config.initocustom/config.iniand modify
Never modify files in /app/default/—always override them in custom/.
File-Based Routing
The folder hierarchy dictates URL structure:
- Root content files →
yoursite.com/ /about/(with content files) →yoursite.com/about//blog/2025-11-01-post/(with content files) →yoursite.com/blog/2025-11-01-post/- Dates in folder names are automatically extracted and formatted
- Content file names can be anything (not limited to
page.mdorarticle.md)
Metadata
Use metadata.ini files for structured data:
title = "My Page Title"
date = "2025-11-01"
summary = "A brief description of the page"