While getting Docturist ready for launch, I decided the project should have some kind of news feed after all. Before that I had made the most primitive version: a list of headlines and text posts with dates.
I decided that this was of course not enough, and that I needed at least a basic gentleman's set of publishing features. At the very least:
— an editor with formatting and image uploads
— categories and/or tags
— editable page URLs
— a minimal admin area that you can get to from the Orchid panel
Of course, I didn't want to write all of this myself. Well, maybe I would have wanted to, but every day I was trying to cut down the number of tasks left before launch, not add to it. So I started looking at ready-made options.
Search and Chat gee pee tea suggested the Canvas package for Laravel, so that's what I took. It has the Quill editor inside, a small Vue.js admin area with a dark theme, a few extra gadgets like a view counter, basic SEO, topics and tags. All in all, enough not to build it myself.
I hooked up SSO so I wouldn't have to log in to this admin area separately. I was a bit worried that the package hasn't been maintained lately. But for limited use — a news feed and documentation pages — it'll do. So I started using it.
Along the way, though, it turned out that for some reason the admin area doesn't get along with transliteration and doesn't generate slugs from Russian titles. On top of that, it won't let you write slugs for tags and topics yourself: the slug field is locked on the frontend for some reason, even though the backend is happy to accept manual input.
So I took Claude under my arm and went to fix this misunderstanding. Claude says: look, this thing is frontend-only, we'll patch a couple of controls, hook the patches up through Composer, rebuild, and voilà.
We started doing it — and something doesn't work, the patched controls won't build. And then Claude goes: Je m'en fous, if the sources won't patch, I'll patch the build! And it wrote a Python script that simply sticks transliteration and manual slugs right into the minified JavaScript. And added it to Composer's post-install scripts.
And I mentioned exactly this not long ago in my article about vibe coding. The machine doesn't care whether the code is minified or not, it will read it anyway. It will read it, stick in some more unreadable code with a Python script, which in a month nobody will understand anymore, and off it goes. But for us it's unmaintainable code that you can use situationally, in the short term (and of course I will). In the long term, though, this Canvas needs to be forked. Especially since the Quill editor is built into it so tightly that if I want to add buttons to the toolbar and all sorts of plugins, I'll have to do it anyway.
Otherwise, the package is perfectly usable if you don't want to install a whole CMS or build the entire publishing process by hand in your admin panel. I've already written several documentation pages for the project in Canvas, and I'll keep using it.
P.S. Recently, on another project, I also worked with BookStack, a neat wiki solution for documentation. But it's overkill for my purposes. Besides, it doesn't work as just another dependency: it has to be put on a separate subdomain. And it isn't updated via Composer — the authors suggest installing updates via git pull.