November 5, 2026
DyskFlow — Laravel CMS.
Backend · FrontendA Laravel CMS with no build step: install through a wizard without a terminal, update from GitHub with one button, and get built-in SEO, two languages, plugins, and freely coded landing pages.
Description
DyskFlow is a Laravel-based CMS in the spirit of WordPress, except that landing pages are coded separately, by hand or with AI, as Blade files in a landing/ folder. There is nothing to build: no Node, no Vite, and the hosting does not need Composer.
Goal
Make a Laravel CMS that installs and updates the way a shared-hosting user expects: upload the files, open the site, follow a wizard, and later press a button to update, all without opening a terminal.
Features
- An install wizard that can also fetch
vendorwithout a terminal. - Articles and pages with SEO built in: meta tags, canonical URLs, Open Graph, JSON-LD, a search-result preview, and a checklist.
- Categories, tags, moderated comments, and media.
- Indonesian and English content with per-language URLs such as
/en/blog/slug, plushreflang, sitemaps, and an RSS feed per language. - Landing pages and custom pages as Blade code, with the home page chosen in settings from a landing page, the article list, or a regular page.
- A dashboard showing what needs attention, key numbers, recent comments, the publishing schedule, and site status, according to each user’s permissions.
- Plugins with hooks and automatically generated settings pages, plus users and roles.
- Settings for general, contact, email, SEO, media, comments, pages, plugins, activity log, backup, import and export, and updates.
- Two-factor authentication (TOTP) with recovery codes.
- A trash for articles, pages, and comments, so deletions can be undone.
- Cookie-free view counts, a privacy guide with a draft policy, and a site health page.
- Global search (
⌘KorCtrl+K), notifications in the header, and dark mode.
Technologies
- Laravel 13 on PHP 8.3+ with Blade templates
- MySQL or SQLite through
pdo_mysqlorpdo_sqlite - Plain CSS and JavaScript, with no build step
- GitHub Actions to publish each release with its
vendor.zip
How to Run
For local development, run composer install, then php artisan serve, and php artisan test for the tests. On hosting, upload the files without vendor, open the site, press Pasang sekarang, and follow the wizard. The repository’s SETUP.md covers both in full.
Technical Decisions
Sites download vendor from a GitHub Release, so neither Composer nor a terminal is needed on the server. An update takes a database backup first, pulls the code from the latest release, replaces vendor only when composer.lock has changed, and runs the migrations. It never overwrites .env, storage, landing, plugins, public/uploads, or cms.json, so a site’s own content and code survive every update.
Notes
Part of the DyskLab organization and released under the MIT license. A screenshot may be added later.

Hey! I’m Fanny, the software engineer tending to this digital garden. You can read more about me, or subscribe by email.