Update README with clearer structure and features

This commit is contained in:
Ruben 2025-11-02 14:36:15 +01:00
parent ad516600bb
commit 6647d0c964

123
README.md
View file

@ -1,105 +1,48 @@
# 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.4+, and CSS. This is not a CMS with an admin panel, not a single-page application.
**Just enough, nothing more.** Drop Markdown files in folders, and they become pages. No database, no build process.
## Getting Started
## What is FolderWeb?
### Requirements
FolderWeb is a content publishing framework where your file system is your content management system. Create a folder structure that mirrors your site hierarchy, drop files into folders, and they immediately become pages.
- **PHP 8.4 or higher** (uses property hooks, readonly classes, and modern array functions)
- A web server (Apache, Nginx, or PHP's built-in server)
**Core principle**: Simplicity and longevity over features and complexity.
### Quick Start
## Key Features
1. Clone or download this repository
2. Point your web server's document root to /content
- **File-based routing**: `content/blog/post/``yoursite.com/blog/post/`
- **Multi-language support**: Built-in i18n with URL prefixes
- **Template system**: Override defaults with custom templates
- **Modern CSS**: CSS variables, nesting, OKLCH colors, grid layouts
- **No build process**: Save and refresh—see changes immediately
## 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:**
## 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
project/
├── app/ # App (never modify)
├── content/ # Your website content
│ ├── front.md # Home page
│ ├── about/ # About page
│ │ └── about-me.md
│ └── blog/ # Blog with list view
│ ├── metadata.ini # Configure template
│ ├── 2025-11-01-first-post/
│ │ ├── first-post.md
│ │ ├── cover.jpg
│ │ └── metadata.ini
│ └── 2025-11-02-second-post/
│ └── another-post.md
└── custom/ # Your customizations
├── templates/ # Custom templates
├── styles/ # Custom CSS
└── config.ini # Configuration
```
### Multi-File Pages
## Documentation
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**.
**Complete documentation available in [`docs/`](docs/)**
This allows you to:
## Learn More
- 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"
```
Start with the **[Getting Started Tutorial](docs/tutorial/00-getting-started.md)** or browse the **[complete documentation](docs/)**.