# 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 1. Clone or download this repository 2. Point your web server's document root to /content ## Development ### Creating Content 1. Create a directory for your content in the document root 2. Add one or more content files (`.md`, `.php`, or `.html`) 3. Optionally add `metadata.ini` for title, date, and summary 4. Optionally add `cover.jpg|webp` for 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.ini` to `custom/config.ini` and 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.md` or `article.md`) ### Metadata Use `metadata.ini` files for structured data: ```ini title = "My Page Title" date = "2025-11-01" summary = "A brief description of the page" ```