Journals
The blog. Articles with categories and tags, written in the admin and shown on the storefront.
How this page was verified
Read on 2026-09-15 from the backend journals module, the storefront /journals and the admin /admin/journals.
The model
Tables: journals, journal_categories, journal_tags, journal_products (a journal can link to products), plus image/thumbnail/author-photo models.
Backend
journals module. CMS resolvers: journal (list/get/delete), journal-categories (CRUD), journal-tags (CRUD). Create/update of a journal is REST (journals controller, POST / PUT :id) because it carries images. Storefront resolvers (front*): frontJournals, frontJournal, frontHighlightedJournals, frontFeaturedJournals, frontJournalCategories, frontJournalRecommendations.
Storefront
/journals listing and /journals/[slug] article. Highlighted and featured journals also appear on the home page.
Admin
/admin/journals with add, edit, preview, plus /admin/journal-categories and /admin/journal-tags. The journal form (src/modules/journals/journal-form.tsx) is the only place TinyMCE is used (NEXT_PUBLIC_TINY_EDITOR_API_KEY).
Gotchas
- Journal create/update is REST, like products and vouchers — not a GraphQL mutation.
- TinyMCE needs its key.
NEXT_PUBLIC_TINY_EDITOR_API_KEYis in the admin.envbut missing fromenv.example— set it or the editor degrades.