etechflow / module-faq

etechflow/module-faq

Help-Centre / FAQ module for Magento 2 with categories, slug-based detail pages, search, related articles, REST API, and admin management. Theme-agnostic — works on Hyvä, Luma, and any custom theme.

magento2-module Compatibility: Not yet tested Code Quality: Pending Tests: N/A Security: Pending MIT
Viewing version 1.0.0. Latest version is 1.2.1. Switch to latest

Etechflow_Faq — Help-Centre / FAQ Module for Magento 2

A self-contained FAQ / knowledge-base module with public detail pages,
admin management, REST API, and full theme/branding configurability.
Works on Magento Open Source, Adobe Commerce, with Hyvä or
Luma themes — no Tailwind, no Alpine, no PageBuilder dependencies.

┌─────────────────────────────────────────────────────────────┐
│   Help Centre & FAQs                                        │
│                                                             │
│   [Search articles...] [Search]                             │
│                                                             │
│   ┌──────────┐ ┌──────────┐ ┌──────────┐                    │
│   │ ORDERS   │ │ RETURNS  │ │ DELIVERY │   …                │
│   │ ▸ q1     │ │ ▸ q1     │ │ ▸ q1     │                    │
│   │ ▸ q2     │ │ ▸ q2     │ │ ▸ q2     │                    │
│   └──────────┘ └──────────┘ └──────────┘                    │
└─────────────────────────────────────────────────────────────┘

/faqs                            → listing of all categories
/faqs/orders/can-i-return-x      → detail page with related articles
/rest/V1/etechflow/faq          → REST: all categories with items

Features

  • Categories with display label, URL identifier, icon, sort order, active toggle.
  • Q&A items with auto-generated slugs (unique per category), subtitle, rich answer body, SEO meta title + description.
  • Slug-based detail pages at /faqs/{category}/{slug} — breadcrumb, left-rail category navigation, main content card, right-rail (search/helpful/contact), related articles grid.
  • Listing page at /faqs — categories grid (desktop) + mobile accordion, in-page search filter, per-category modal showing all questions.
  • REST API — three read-only public endpoints returning JSON, no auth required.
  • System Configuration for branding (colours, font), hero (image + copy), contact details, and display toggles — no template hacking needed.
  • Theme-agnostic — vanilla CSS scoped under .kfaq-*, vanilla JS (no framework). Renders identically on Hyvä and Luma.
  • Demo data (opt-in) seeds 9 categories + 36 sample questions for a working out-of-the-box page.

Requirements

Requirement Version
Magento 2.4.4 → 2.4.8 (Open Source or Adobe Commerce)
PHP 8.1, 8.2, or 8.3
Frontend theme Any (Hyvä, Luma, blank, custom)

Quick start

Manual install (no Composer)

cd <magento-root>
mkdir -p app/code/Etechflow/Faq
# unzip the package into the directory above (so registration.php sits at app/code/Etechflow/Faq/registration.php)
unzip Etechflow_Faq-v1.0.0.zip -d app/code/Etechflow/Faq

bin/magento module:enable Etechflow_Faq
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento setup:static-content:deploy -f
bin/magento cache:flush

Composer install (path repository)

# In <magento-root>/composer.json add:
#   "repositories": [{ "type": "path", "url": "../Etechflow_Faq" }]
composer require etechflow/module-faq:^1.0
bin/magento setup:upgrade && bin/magento setup:di:compile && bin/magento cache:flush

Verify

  • Admin → Content → FAQs → Categories — lists 0 rows (or 9 if demo data enabled).
  • Admin → Stores → Configuration → EtechFlow → FAQ — defaults are populated.
  • Storefront → /faqs — renders the listing page.

Documentation

File What's inside
INSTALL.md Manual + Composer install, troubleshooting, post-install cleanup, demo data toggle
USAGE.md Admin walkthrough, REST API, system-config reference, customising the look, layout extension points
CHANGELOG.md Version history
LICENSE MIT

Module structure

app/code/Etechflow/Faq/
├── Api/                                 service contracts
│   ├── Data/{Category,Item}Interface.php
│   └── FaqRepositoryInterface.php
├── Block/                               view blocks
│   ├── Config.php                       — reads Stores → Configuration values
│   ├── Listing.php                      — /faqs landing
│   └── View.php                         — /faqs/{cat}/{slug} detail
├── Controller/
│   ├── Adminhtml/{Category,Item}/*.php  — admin CRUD
│   ├── Index/Index.php                  — /faqs route
│   ├── Router.php                       — matches /faqs/{cat}/{slug}
│   └── View/Index.php                   — detail-page controller
├── Model/                               models, resource models, source models, repository
├── Setup/Patch/Data/
│   ├── BackfillUrlKeys.php              — populates slugs for legacy rows
│   └── InstallDemoData.php              — opt-in seed (9 cats + 36 items)
├── Ui/                                  admin form/listing data providers + action columns
├── etc/                                 module config (acl, di, db_schema, system.xml, etc.)
├── view/
│   ├── adminhtml/                       admin layouts + UI components
│   └── frontend/                        layouts + templates (listing.phtml, view.phtml)
├── composer.json
├── registration.php
└── *.md, LICENSE

Support

Open an issue or reach the maintainer at the email in composer.json.

Changelog

All notable changes to Etechflow_Faq will be documented in this file. The
format is based on Keep a Changelog and
this project adheres to Semantic Versioning.

[1.0.0] — 2026-05-16

Added

  • Initial public release.
  • Admin: Categories CRUD (label, identifier/slug, icon, sort order, active flag).
  • Admin: Q&A items CRUD (question, url_key, subtitle, answer, SEO meta, sort, active).
  • Slug auto-generation on save with per-category uniqueness (-2, -3, … suffix).
  • Schema-version backfill patch (BackfillUrlKeys) populates slugs for legacy rows.
  • Storefront listing at /faqs — categories grid, mobile accordion, search filter,
    modal "all questions in category", contact cards, trust bar.
  • Storefront detail at /faqs/{category}/{slug} — breadcrumb, left categories
    sidebar with active state, main card (eyebrow + H1 + subtitle + rich answer),
    right rail (search, helpful Y/N, contact card), related articles grid.
  • Custom Controller/Router.php handles the /faqs/{cat}/{slug} URL pattern
    without colliding with the /faqs listing.
  • REST API endpoints: GET /V1/etechflow/faq, GET /V1/etechflow/faq/categories,
    GET /V1/etechflow/faq/categories/:id/items.
  • System Configuration section Stores → Configuration → EtechFlow → FAQ for
    branding (primary/secondary/text colors, font), hero (image + title + subtitle),
    contact (phone, email, contact-form URL, store-finder URL), and display toggles.
  • CSS custom properties wired to config so any host theme can re-skin without
    forking templates.
  • Optional demo-data patch (InstallDemoData, off by default) seeds 9 categories
    • 36 Q&A items for a new install.
  • Composer manifest (magento2-module, MIT).
  • INSTALL.md, USAGE.md, README.md, CHANGELOG.md.

Compatible with

  • Magento Open Source 2.4.4 → 2.4.8
  • Adobe Commerce 2.4.4 → 2.4.8
  • PHP 8.1, 8.2, 8.3
  • Hyvä Theme 1.3+ (no Hyvä-only code — works on Luma too)
  • Luma / blank / any custom frontend theme
Versions
Version Stability QA Status Compatibility Released
1.2.1 stable Fail Magento 2.4.7-2.4.8 Details 2026-06-22 14:35:28
1.2.0 stable Not tested Not yet tested Details 2026-06-22 14:25:45
1.1.3 stable Not tested Not yet tested Details 2026-06-16 09:02:14
1.1.2 stable Not tested Not yet tested Details 2026-06-15 10:47:16
1.1.1 stable Not tested Not yet tested Details 2026-06-15 09:28:20
1.1.0 stable Not tested Not yet tested Details 2026-06-05 11:05:21
1.0.0 stable Not tested Not yet tested Details 2026-06-05 10:46:30

Requires 6

Package Constraint
magento/framework >=103.0
magento/module-backend >=102.0
magento/module-config >=101.0
magento/module-store >=101.0
magento/module-ui >=101.0
php ~8.1.0||~8.2.0||~8.3.0||~8.4.0

No QA results yet

QA pipelines haven't run for this version. Compatibility and quality results appear here once the vendor publishes a tagged release that gets ingested.

License
MIT

More from etechflow

View vendor
Make it pay

Turn an existing module into recurring revenue.

If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.