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

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:
    git clone https://git.noorlander.info/E.Noorlander/CodePress.git
    cd CodePress
    
  3. Start server:
    # 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)

# Page Title

Content with **bold** and *italic* text.

[Link to page](?page=other/page)

PHP (.php)

<?php
$title = "Dynamic Page";
$date = date('Y-m-d');
?>

<h1><?php echo $title; ?></h1>
<p>Date: <?php echo $date; ?></p>

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:

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

Description
No description provided
Readme 2.8 MiB
Languages
PHP 60.2%
JavaScript 16.6%
Shell 12.3%
Mustache 8.1%
SCSS 2.4%
Other 0.4%