CodePress/README.md
Edwin Noorlander 494ae7dc3b Restructure project for security and offline capability
- Move content outside public web root for security
- Consolidate all code and assets in engine/ directory
- Download Bootstrap locally for offline functionality
- Update public/ to contain only entry point files
- Add router.php for PHP development server security
- Update README.md with new structure and setup instructions
- Block direct access to content files via URL
- Maintain clean separation between content and code
2025-11-19 17:05:25 +01:00

169 lines
4.6 KiB
Markdown

# CodePress CMS
A lightweight, file-based Content Management System built with PHP and Bootstrap.
## Overview
CodePress is a modern, secure CMS that manages content through files instead of a database. It's designed for simplicity, flexibility, and ease of use while maintaining powerful features for content management.
## Features
### 🎯 Core Features
- **File-based content** - No database required
- **Multi-format support** - Markdown, PHP, HTML files
- **Dynamic navigation** - Auto-generated from directory structure
- **Search functionality** - Full-text search with snippets
- **Breadcrumb navigation** - Clear page hierarchy
- **Responsive design** - Works on all devices
### 🔧 Advanced Features
- **Collapsible folders** - Accordion-style navigation
- **WCAG compliant** - Accessible design with proper contrast
- **File metadata** - Creation and modification dates in footer
- **Progressive styling** - Visual hierarchy with nested levels
- **Security** - Protected PHP files and sensitive directories
## Quick Start
1. **Requirements**: PHP 8.4+
2. **Installation**:
```bash
git clone https://git.noorlander.info/E.Noorlander/CodePress.git
cd CodePress
```
3. **Start server**:
```bash
# For Apache: Set DocumentRoot to public/
# For Development:
php -S localhost:8080 -t public router.php
```
4. **Visit**: `http://localhost:8080`
## Project Structure
```
codepress/
├── public/ # Web-accessible directory (DocumentRoot)
│ ├── index.php # Main entry point
│ ├── .htaccess # Apache security and routing
│ └── router.php # PHP development server router
├── content/ # Content files (MD/PHP/HTML) - outside web root
├── engine/ # CMS engine and assets
│ ├── core/ # PHP application logic
│ │ ├── index.php # CMS class and logic
│ │ └── config.php # Site configuration
│ ├── templates/ # HTML templates
│ └── assets/ # Static assets (CSS, JS, fonts)
│ ├── css/ # Bootstrap and custom CSS
│ ├── js/ # JavaScript files
│ └── fonts/ # Font files
├── .htaccess # Root security
└── README.md # This documentation
```
## Security
CodePress includes built-in security features:
- **Content isolation** - Content files stored outside web root
- **.htaccess protection** for sensitive files and directories
- **Direct access blocking** - Content files not accessible via URL
- **Security headers** for XSS protection
- **PHP file blocking** in content directory
- **Offline capable** - All assets (Bootstrap) stored locally
- **Directory access control**
## Content Management
### Supported File Types
#### Markdown (.md)
```markdown
# Page Title
Content with **bold** and *italic* text.
[Link to page](?page=other/page)
```
#### PHP (.php)
```php
<?php
$title = "Dynamic Page";
$date = date('Y-m-d');
?>
<h1><?php echo $title; ?></h1>
<p>Date: <?php echo $date; ?></p>
```
#### HTML (.html)
```html
<h1>Static HTML Page</h1>
<div class="alert alert-info">
Custom HTML content
</div>
```
### Directory Structure
```
content/
├── home.md # Homepage
├── about/
│ └── company.md # About page
├── blog/
│ ├── tech/
│ │ └── post.md # Blog post
│ └── index.md # Blog overview
└── projects/
└── web-design.md # Project page
```
## Configuration
Edit `config.php` to customize:
```php
return [
'site_title' => 'Your Site Name',
'site_description' => 'Your site description',
'content_dir' => __DIR__ . '/../../content',
'templates_dir' => __DIR__ . '/../templates',
'default_page' => 'home',
'markdown_enabled' => true,
'php_enabled' => true,
];
```
## Branches
- **main**: Clean CodePress CMS with documentation
- **e.noorlander**: Personal blog content and customizations
- **development**: Active development branch
## Development
### Adding Features
1. Create feature branch from `development`
2. Implement changes
3. Test thoroughly
4. Submit merge request
### Contributing
- Follow PSR-12 coding standards
- Test security implications
- Update documentation
- Maintain backward compatibility
## License
This project is developed for specific use cases. Contact the maintainer for licensing information.
## Support
- **Documentation**: See `content/home.md`
- **Issues**: Report on GitLab
- **Community**: Join discussions
---
*Built with ❤️ and PHP*