|
10 | 10 | <img src="https://raw.githubusercontent.com/RandomCoderTinker/Spindle/refs/heads/master/public_html/cdn/images/logo_spindle.webp" alt="Spindle CMS Logo" width="180" /> |
11 | 11 | </p> |
12 | 12 |
|
13 | | -**Spindle** is a lightweight, developer-friendly CMS framework derived from the core of OpenCart — redesigned for |
14 | | -structured content management instead of e-commerce. |
| 13 | +**Spindle** is a clean, developer-first CMS framework rebuilt from the architectural bones of OpenCart — but with the |
| 14 | +ecommerce layer surgically removed. |
| 15 | +It’s what OpenCart might have become if it had focused on modular content management instead of checkout flows and |
| 16 | +product SKUs. |
15 | 17 |
|
16 | | -It preserves the simplicity of OpenCart’s MVC architecture, but removes e-commerce logic entirely, focusing instead on |
17 | | -speed, clarity, and developer-first modularity. |
| 18 | +> ⌛ *Lightweight. Familiar. No cart required.* |
18 | 19 |
|
19 | | -> 🏗️🚧 This project is in early development. Expect rapid changes and sharp edges. |
| 20 | +--- |
| 21 | + |
| 22 | +## What Makes Spindle Different? |
| 23 | + |
| 24 | +- **No eCommerce bloat** — no carts, no payments, no inventory logic |
| 25 | +- **Dynamic subdomain routing** — serve multi-site content from folders with no config |
| 26 | +- **Familiar MVC structure** — but focused purely on content-first deployments |
| 27 | +- **No Composer required** — works out-of-the-box without external dependencies |
| 28 | +- **Full codebase access** — nothing obfuscated, everything hackable |
20 | 29 |
|
21 | 30 | --- |
22 | 31 |
|
23 | | -## Features |
| 32 | +## ✨ Features |
24 | 33 |
|
25 | | -- **Lightweight MVC core** — no Composer installation required to get started |
26 | | -- **Secure directory separation** — config, logs, and cache stored outside the webroot |
27 | | -- **Modular and override-ready** — drop-in logic, admin modules, and extensions |
28 | | -- **Developer-first** — clean structure, no abstract wrappers |
29 | | -- **Composer-supported** — bundled, but not required |
30 | | -- **No commerce** — no cart, checkout, product logic |
31 | | -- **Open Source (GPLv3)** — modify, extend, redistribute freely |
| 34 | +- Lightweight, override-friendly MVC architecture |
| 35 | +- Secure directory separation (storage outside webroot) |
| 36 | +- Modular extensions (`/extensions/`) without hard bindings |
| 37 | +- Dynamic subdomain mapping (e.g. blog.example.com → `/subDomains/blog/`) |
| 38 | +- Optional Composer support, bundled in `storage/vendor/` |
| 39 | +- No JS frameworks, no React, no headless nonsense |
32 | 40 |
|
33 | 41 | --- |
34 | 42 |
|
35 | 43 | ## Installation |
36 | 44 |
|
37 | | -1. Clone the repository: |
38 | | - ```bash |
39 | | - git clone https://github.com/RandomCoderTinker/Spindle.git |
40 | | - ``` |
| 45 | +```bash |
| 46 | +git clone https://github.com/RandomCoderTinker/Spindle.git |
| 47 | +```` |
41 | 48 |
|
42 | | -2. Set your **webserver document root** to: |
| 49 | +Set your document root to: |
43 | 50 |
|
44 | | - ``` |
45 | | - Spindle/public_html/ |
46 | | - ``` |
| 51 | +``` |
| 52 | +Spindle/public_html/ |
| 53 | +``` |
47 | 54 |
|
48 | | -3. Ensure PHP 8.0+ and required extensions are installed. |
| 55 | +Ensure PHP 8.0+ is installed, and set write permissions on: |
49 | 56 |
|
50 | | -4. Set writable permissions on: |
| 57 | +``` |
| 58 | +/storage/ |
| 59 | +/storage/logs/ |
| 60 | +/storage/cache/ |
| 61 | +/cdn/images/ |
| 62 | +``` |
51 | 63 |
|
52 | | - * `storage/` |
53 | | - * `storage/logs/` |
54 | | - * `storage/cache/` |
55 | | - * `cdn/images/` |
| 64 | +You may optionally run: |
56 | 65 |
|
57 | | -5. (Optional) Run: |
| 66 | +```bash |
| 67 | +composer install |
| 68 | +``` |
58 | 69 |
|
59 | | - ```bash |
60 | | - composer install |
61 | | - ``` |
62 | | - to install or update third-party libraries. All required libraries are already bundled in `storage/vendor/`. |
| 70 | +…but it’s not required. All needed libraries are pre-bundled. |
63 | 71 |
|
64 | 72 | --- |
65 | 73 |
|
66 | | -## Requirements |
| 74 | +## Directory Layout |
67 | 75 |
|
68 | | -* PHP 8.0.2 or higher |
69 | | -* Apache or Nginx (with rewrite support) |
70 | | -* MySQL or MariaDB |
71 | | -* Composer (optional) |
| 76 | +* `public_html/` – public web root |
| 77 | +* `storage/` – configs, logs, cache (outside web root) |
| 78 | +* `extensions/` – custom modules & logic |
| 79 | +* `subDomains/` – folder-based routing for subdomains |
72 | 80 |
|
73 | 81 | --- |
74 | 82 |
|
75 | | -## Documentation |
| 83 | +## � Why Spindle? |
76 | 84 |
|
77 | | -See the [Wiki](https://github.com/RandomCoderTinker/Spindle/wiki) for: |
| 85 | +> "OpenCart Without the Cart." |
78 | 86 |
|
79 | | -* Folder structure & autoloading |
80 | | -* Module development & routing |
81 | | -* Theme override & template structure |
82 | | -* Admin extensions & permissions |
83 | | -* Deployment tips |
| 87 | +Spindle was designed for devs who liked the *simplicity* of OpenCart's architecture… but hated all the ecommerce |
| 88 | +baggage. This is a toolkit for making dashboards, wikis, documentation hubs, and admin UIs — not stores. |
84 | 89 |
|
85 | 90 | --- |
86 | 91 |
|
87 | | -## Philosophy |
88 | | - |
89 | | -> **"Build on something clear. Deploy something lean."** |
90 | | -
|
91 | | -Spindle is for developers who want: |
| 92 | +## Roadmap |
92 | 93 |
|
93 | | -* Full control over the stack |
94 | | -* Simple override logic |
95 | | -* A CMS with *no* plugin lock-in or over-engineering |
96 | | -* Source-readable PHP, not abstracted SDKs |
| 94 | +* [x] Rewrite base routing and MVC to remove cart logic |
| 95 | +* [x] Subdomain-to-folder routing via `.htaccess` |
| 96 | +* [x] Directory security separation |
| 97 | +* [ ] CLI tooling for module generators |
| 98 | +* [ ] Optional flat-file mode (no DB) |
| 99 | +* [ ] Admin UI theming system |
| 100 | +* [ ] Fully API-driven mode (optional headless) |
97 | 101 |
|
98 | 102 | --- |
99 | 103 |
|
100 | | -## Roadmap |
| 104 | +## License |
| 105 | + |
| 106 | +GPLv3 — free to use, fork, modify, and redistribute. |
101 | 107 |
|
102 | | -* [x] Core rewrite of OpenCart for content-first use |
103 | | -* [x] Directory security separation (`storage/` outside webroot) |
104 | | -* [ ] CLI tooling for module & controller generation |
105 | | -* [ ] Starter site template packs |
106 | | -* [ ] Optional flat-file driver for no-DB deployments |
107 | | -* [ ] JSON-based API layer (experimental) |
| 108 | +> Spindle is yours now. Hack it. |
108 | 109 |
|
109 | 110 | --- |
110 | 111 |
|
111 | 112 | ## Credits |
112 | 113 |
|
113 | 114 | Originally based on [OpenCart](https://github.com/opencart/opencart) |
114 | | -Major refactor and CMS transition by [@RandomCoderTinker](https://github.com/RandomCoderTinker) |
| 115 | +Refactored, rebuilt, and unshackled by [@RandomCoderTinker](https://github.com/RandomCoderTinker) |
115 | 116 |
|
116 | 117 | --- |
117 | | - |
118 | | -## License |
119 | | - |
120 | | -Licensed under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html) |
121 | | - |
122 | | -> You are free to use, modify, and redistribute this software under the terms of the GNU General Public License v3. |
| 118 | +Built with ❤️ using PHP 8.1+ |
0 commit comments