What you need
- PHP 8.2+ with HTTPS access to
memehcms.com. - An Institution ID (UUID) from the selected MemehCMS workspace's dashboard header.
- At least one published article or page to confirm the connection.
- A web host whose document root can point to the package's
public_htmldirectory.
No Composer install is required. The package has its own small PHP runtime. It does not install or host the MemehCMS admin application.
1. Run the starter locally
Extract the downloaded ZIP, enter its folder, and start PHP:
unzip memeh-web-engine-starter.zip
cd memeh-web-engine-starter
php -S 127.0.0.1:8083 -t public_html public_html/router.php
Open http://127.0.0.1:8083. The unconfigured starter shows local sample content; that only proves PHP and routing work. It does not prove the CMS is connected.
2. Connect your institution
Check the API first. Replace the UUID with your Institution ID:
export MEMEH_TENANT_ID="YOUR-INSTITUTION-UUID"
curl -fsS --get 'https://memehcms.com/api/articles' \
--data-urlencode "tenant_id=$MEMEH_TENANT_ID"
Then restart the local server with the API settings:
MEMEH_API_BASE="https://memehcms.com" \
MEMEH_TENANT_ID="$MEMEH_TENANT_ID" \
php -S 127.0.0.1:8083 -t public_html public_html/router.php
View /news, /articles/{slug}, and /pages/{slug} for published CMS content. Standard page-builder sections (hero, content, feature grid, CTA, FAQ, embed link) are rendered too. Custom section designs need their own template mapping. The starter calls the public API with tenant_id automatically. No API token is needed.
Important: the starter falls back to content/*.php when an API collection is empty or unavailable. Seeing a populated homepage is not connection proof. Compare a known published title or slug against the API response before launch.
3. Make it your site
| Change | File |
|---|---|
| Institution name, logo, contact details | content/site.php |
| Homepage structure | resources/views/home.html |
| News list and article detail | resources/views/news-index.html, resources/views/article.html |
| Page layout and navigation | resources/views/page.html, resources/views/partials/header.html |
| Colors and spacing | public_html/assets/css/app.css |
| API base, tenant and menu locations | app/config/config.php |
Request flow: public_html/index.php → routes/web.php → controller → ViewModel → HTML template. Add a new route and ViewModel when you need a new page type. Keep API parsing out of templates.
The sample home and news content is demonstration content. Replace or remove it before publishing. Create primary and footer menu locations in MemehCMS if you want CMS-managed navigation.
4. Deploy
Point the public domain's document root to the package's public_html. Keep app/, content/, resources/, and routes/ outside the public web root, beside it. The ZIP includes an Apache .htaccess for clean URLs; on Nginx, configure requests to fall through to public_html/index.php.
Set MEMEH_API_BASE=https://memehcms.com and MEMEH_TENANT_ID as hosting environment variables, or set the corresponding values in app/config/config.php. Leave require_tenant_id enabled. Do not put CMS passwords or admin tokens in this public package.
Replacing WordPress on the same host? Back up the site and database, import content and media into MemehCMS, verify URLs, then stage the Web Engine cutover. Keep old media paths or redirects until you know all links resolve. See the WordPress migration steps before deleting WordPress files.
5. Verify before launch
- Compare a published CMS article with the website's
/newslisting and its/articles/{slug}detail page. - Check a published CMS page at
/pages/{slug}, including body content. - Confirm menu links, featured images, and HTTPS on the real domain.
- Open an unknown slug and confirm a real 404, then test mobile navigation.
- Replace the sample institution branding, contact details, homepage copy, and sample news.
| Symptom | Check |
|---|---|
| Only sample content appears | Confirm environment variables reach PHP, Institution ID is correct, and the API returns published rows. |
| API returns nothing | Confirm the content is published in the selected workspace. |
| API request fails in PHP | Confirm outbound HTTPS, TLS support and allow_url_fopen on the host. |
| Clean URLs fail | Check Apache rewrite support or the Nginx front-controller rule. |
For every public endpoint and query parameter, use the API reference. For a custom frontend, start with the developer quickstart.
