INKRAH Wiki Portal — A Wikipedia-Style CMS

PHPSQLitejQueryOpen Source

Scientia potentia est — knowledge is power, and power dispersed among the many is power distrusted by none. This platform is offered in that spirit: a small, unglamorous machine built for a large, unglamorous purpose — helping to educate the life of the world's people, one verified article at a time.

1. What this is, and why it exists

Every legal system worth its salt rests on the presumption that citizens may know the law under which they live — ignorantia juris non excusat, ignorance of the law excuses no one, but that maxim only holds water if knowledge is actually within reach. The same logic, we'd argue, extends well beyond statute books. A society's capacity to reason, to vote sensibly, to bargain fairly in the marketplace, and to hold power to account, rests on a shared, freely accessible stock of reliable information. That is the modest, slightly grandiose ambition behind this CMS: a lightweight, self-hosted, Wikipedia-flavoured knowledge portal that any individual, NGO, newsroom, campus, or local council can stand up on ordinary shared hosting, in their own language, under their own editorial rules.

Sociologically speaking, knowledge portals of this kind function as what Habermas would call a small public sphere — a space where claims can be made, challenged, revised, and eventually settled by something resembling consensus rather than by decree. Economically, the marginal cost of one more reader accessing one more verified fact is close to zero, which is precisely the argument for keeping the gate as open as is responsible. Philosophically, we rather like Bacon's old adage restated above: scientia potentia est. Knowledge, once shared, ceases to be anyone's private property and becomes, rather wonderfully, everyone's.

All that said — let's not get too big for our boots. It's a PHP and SQLite content management system. Nothing more mystical than that. Right, let's get you installed.

2. Feature overview

Frontend

Backend — a genuine four-tier hierarchy of trust

RoleCan do
Super AdminAbsolutely everything below, plus: query the SQLite database directly from the dashboard, rename the site, change its tagline and logo, switch the colour theme, change language and timezone, move the site's URL/path, temporarily suspend the whole site (maintenance mode), and create/suspend/delete Admin, Editor, and Author accounts.
AdminEverything an Editor and Author can do, plus create, suspend, and delete Editor and Author accounts, and issue/revoke API keys.
EditorEdit, approve, reject, or delete any Author's submission; leave revision notes that open a direct line of communication with the Author for the purposes of revision.
AuthorSubmit new entries; edit or delete their own work at any time — even after an Editor has already approved it. Pacta sunt servanda doesn't apply to a manuscript; the author's right of final say over their own words persists.

The golden rule enforced throughout the code is delightfully old-fashioned: nemo dat quod non habet — no one can give what they do not have. A role may only ever create accounts strictly beneath its own level. An Admin cannot mint a fellow Admin; a Super Admin remains, by design, one of a kind (though nothing stops you creating a second one from the database if you're feeling brave).

3. Installation

  1. Upload the entire contents of this package to your web root via FTP/SFTP or your hosting file manager.
  2. Ensure the folder is writable by PHP (chmod -R 755 is typically sufficient; the installer will create its own SQLite storage folder).
  3. Visit https://yourdomain.com/install.php in your browser.
  4. Work through the five short sections of the wizard: Identity (site name, tagline), Locale (default language and timezone from the full 20-language, 18-timezone list), Structure & paths (URL base, the name of your database folder, the name of your admin folder — rename it to anything you like for a little extra obscurity, and your starting colour theme), Super Admin account (username, email, password), and Outgoing mail (SMTP host, credentials, and the "From" address that will be used to verify new authors — port 587 with STARTTLS is assumed throughout).
  5. Submit the form. The installer creates config.php, builds the SQLite schema, and creates your Super Admin account. You'll be redirected straight into the dashboard — and install.php deletes itself automatically the moment setup succeeds, so there's nothing left over to lock down or remember to remove. (If your hosting environment doesn't allow a script to delete itself, it will simply refuse to run again next time — either way, it's covered.)

Server requirements are deliberately modest: PHP 8.0+ with the pdo_sqlite extension (present on almost any shared host by default), and mod_rewrite enabled for the .htaccess file to do its work. No Composer, no Node build step, no database server to provision. Res ipsa loquitur — the whole point is that it should just work.

4. Using the dashboard, day to day

For Authors

Log in at /admin/ (or whatever you renamed that folder to), choose Articles → New article, and write away using the toolbar (bold, italic, underline, a handful of special characters, and inline images). Fill in the excerpt, cover caption, meta description, and meta keywords before saving — these feed directly into search-engine snippets and social-media previews. Submitting sends your work to pending review; approved work can still be revisited and amended whenever you like.

For Editors

Pending review lists everything awaiting your eye. Open an entry to edit it directly, leave a note explaining what needs work (the Author will see it beside the article), or approve/reject outright.

For Admins & the Super Admin

Accounts lets you create new users at any role beneath your own, and suspend or permanently delete existing ones. API keys is where outside integrations are managed (see §6). The Super Admin alone additionally sees Settings (site identity, theme, language, timezone, maintenance mode, SMTP) and Database — a direct SQL console onto the live SQLite file. Use it as you would a scalpel: precisely, and only when you mean to.

5. Languages & timezones

Interface strings are bundled for: English (British and US), Bahasa Indonesia, Basa Jawa Krama, Basa Sunda, Spanish (Spain and Mexico), French, Italian, German, Afrikaans, Arabic, Mandarin Chinese, Japanese, Korean, Portuguese, Turkish, Hindi, Russian, and Slovenian. Missing strings in any file fall back gracefully to British English, so a partially translated locale never shows a blank space — only, at worst, an English word amid its neighbours, which is a good deal better than a broken page. Timezones covering all of the above regions are pre-loaded in Settings.

6. The public API

Only Admins and the Super Admin may generate or revoke an API key (dashboard → API keys). Once you have one, any other website can pull your latest approved entries by pasting the following near the top of its own index.php:

<?php
$inkrahApiKey = 'YOUR_KEY_HERE';
$inkrahEndpoint = 'https://yourdomain.com/api/index.php?action=latest_articles';

$ch = curl_init($inkrahEndpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-Key: ' . $inkrahApiKey]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

foreach ($response['data'] ?? [] as $article) {
    echo '<h3><a href="' . htmlspecialchars($article['url']) . '">'
       . htmlspecialchars($article['title']) . '</a></h3>';
}

A revoked key stops working immediately; there is no grandfathering. Caveat lector — treat the key like a password, because functionally, that's exactly what it is.

7. Security notes, in plain English

No system is bulletproof, and anyone who tells you otherwise is selling something. Keep PHP and your web server patched, take regular backups of your SQLite file, and you'll be in good shape.

8. A word on licensing and this notice

This is an open-source project: INKRAH Web Design Open Source Project for Wiki Portal. You are warmly invited to install it, adapt it, and put it to work. The one thing we ask — and, candidly, the one thing the code itself is built not to let you quietly remove — is the footer credit and the watermark comments embedded in every file:

Powered by INKRAH.com · Developed by INKRAH Web Design
+62.8111345777 · webmaster@inkrah.com

Fair's fair, as we'd say back home — the tool's free, the credit line isn't up for negotiation. That's the whole deal, and it's not a bad one.

Powered by INKRAH.com · Developed by INKRAH Web Design

INKRAH Web Design Open Source Project for Wiki Portal · +62.8111345777 · webmaster@inkrah.com