PHPackages                             soatok/faq-off - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. soatok/faq-off

ActiveProject

soatok/faq-off
==============

Challenge-Response Automation

v0.4.0(6y ago)3521[1 issues](https://github.com/soatok/faq-off/issues)ISCPHPPHP ^7.3CI failing

Since Jul 4Pushed 5y ago3 watchersCompare

[ Source](https://github.com/soatok/faq-off)[ Packagist](https://packagist.org/packages/soatok/faq-off)[ Docs](http://github.com/soatok/faq-off)[ Fund](https://paypal.me/soatok)[ Fund](https://ko-fi.com/soatok)[ RSS](/packages/soatok-faq-off/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (5)Dependencies (16)Versions (8)Used By (0)

FAQ Off
=======

[](#faq-off)

[![Support on Patreon](https://camo.githubusercontent.com/1d8b40362fa2ac72ed481a78f89a027f4cd233ff449dc0be29db4d5a6c8950e6/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e742e7376673f75726c3d6874747073253341253246253246736869656c6473696f2d70617472656f6e2e6865726f6b756170702e636f6d253246736f61746f6b267374796c653d666c6174)](https://patreon.com/soatok)[![Linux Build Status](https://camo.githubusercontent.com/edfc058a76912dbfcd92b2cc70c0467d189dee4fea05755bf8a5cc1d94d6a869/68747470733a2f2f7472617669732d63692e6f72672f736f61746f6b2f6661712d6f66662e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/soatok/faq-off)[![Latest Stable Version](https://camo.githubusercontent.com/a938ea794ad9025ddeefa3fc36270436bc0dacd7077dca327359c590391f44da/68747470733a2f2f706f7365722e707567782e6f72672f736f61746f6b2f6661712d6f66662f762f737461626c65)](https://packagist.org/packages/soatok/faq-off)[![Latest Unstable Version](https://camo.githubusercontent.com/794463ec6506f166fcf418e985d09650fe94b3546e6fd78a3058fe0f83dd02eb/68747470733a2f2f706f7365722e707567782e6f72672f736f61746f6b2f6661712d6f66662f762f756e737461626c65)](https://packagist.org/packages/soatok/faq-off)[![License](https://camo.githubusercontent.com/c13b75ef1f98e2fa36f72d99eece9b0adf6897c4e19c8a30ebf0aef6a7b809e3/68747470733a2f2f706f7365722e707567782e6f72672f736f61746f6b2f6661712d6f66662f6c6963656e7365)](https://packagist.org/packages/soatok/faq-off)

**FAQ Off** lets you build gamebook-style FAQ websites to counteract [sealioning](https://en.wikipedia.org/wiki/Sealioning) and mob harassment on social media.

FAQ Off is a self-hostable microservice based on Slim Framework 3 and [AnthroKit](https://github.com/soatok/anthrokit), developed by [Soatok](https://soatok.com) live on [his Twitch.tv channel](https://twitch.tv/soatok).

> #### Public demo:
>
> [](#public-demo-httpsfaqdholes)
>
> Invite links are given to Patreon supporters at the **Brilliant** tier and higher.

To learn more, please see [the Patreon post that introduced FAQ Off](https://www.patreon.com/posts/tell-sea-lions-24475473).

FAQ Off Features at a Glance
----------------------------

[](#faq-off-features-at-a-glance)

- **Interactive Question and Answer Website**:
    - Guide your readers to the answers to their question.
    - Short-circuit common lines of disruptive discourse.
        *Write once, answer ad nauseum!*
- **HTML and Markdown Support**
- **Troll and Spam Defense**:
    - Administrators can enable "invite only" mode, which requires an invitation code from an existing user to sign up.
    - The invitation tree: Administrators can see who invited who, to identify common entry points of misbehaving users to curate their own community.
- **Collaboration**:
    - Users can share an **Author** profile with colleagues and publish as a group.
    - Users can belong to an unlimited number of **Authors**.
    - Authors can share access to an unlimited number of users, or just one.
- **Security**:
    - Entries are written in HTML / Markdown and processed by [HTML Purifier](http://htmlpurifier.org)to protect against cross-site scripting attacks.
    - Passwords are [stored securely](https://github.com/soatok/dhole-cryptography#password-storage), or you can use Twitter.
    - Your username or Twitter handle is only knowable by *administrators*. A randomly generated `Public ID` is provided to keep your login handle and/or Twitter handle anonymous to everyone else.

Installation
------------

[](#installation)

### Getting the Code and Dependencies

[](#getting-the-code-and-dependencies)

First, clone the git repository.

```
git clone https://github.com/soatok/faq-off target-dir-name

```

Next, run `composer install --no-dev` inside the destination directory.

### Database Setup

[](#database-setup)

Run `bin/create-config.php` to create a local configuration file. You should have valid PostgreSQL database credentials onhand at this stage.

Next, run `bin/install` to finish installing the database tables.

### Webserver Configuration

[](#webserver-configuration)

Make sure you configure your virtual host to use the `public` directory as its document root.

- BAD: `/var/www/faq-off`
- Good: `/var/www/faq-off/public`

General rule: If your users can read this `README.md` file, you've configured your server incorrectly and need to go another layer down.

It's highly recommended that you use HTTPS (TLSv1.3, TLSv1.2). If you cannot afford a TLS certificate, [Let's Encrypt](https://letsencrypt.org) offers free certificates with automatic renewal (via `certbot`).

For example, an nginx configuration might look like this:

```
server {
    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate /etc/letsencrypt/live/faq.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/faq.example.com/privkey.pem;

    include snippets/ssl-params.conf;

    root /var/www/faq-off/public;

    server_name faq.example.com;

    index index.php index.html index.htm;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    }
    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ /.well-known {
        allow all;
    }
}

server {
    listen 80;
    listen [::]:80;

    root /var/www/faq-off/public;
    index index.html index.htm;

    server_name faq.example.com;

    location ~ /.well-known {
        allow all;
    }

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

    # Redirect to HTTPS
    return 301 https://faq.example.com$request_uri;
}
```

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 99.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~48 days

Recently: every ~72 days

Total

7

Last Release

2213d ago

PHP version history (2 changes)v0.1.0PHP ^7.2

v0.2.0PHP ^7.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/62964206396b67fb3a8985b19dc274f74b1a9232374e189577c0f1388fdc73f2?d=identicon)[soatok](/maintainers/soatok)

---

Top Contributors

[![soatok](https://avatars.githubusercontent.com/u/8157726?v=4)](https://github.com/soatok "soatok (179 commits)")[![kddlb](https://avatars.githubusercontent.com/u/115702?v=4)](https://github.com/kddlb "kddlb (1 commits)")

---

Tags

FAQMicroserviceslim-framework

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/soatok-faq-off/health.svg)

```
[![Health](https://phpackages.com/badges/soatok-faq-off/health.svg)](https://phpackages.com/packages/soatok-faq-off)
```

###  Alternatives

[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[contao/core-bundle

Contao Open Source CMS

1231.6M2.3k](/packages/contao-core-bundle)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)[chameleon-system/chameleon-base

The Chameleon System core.

1026.5k3](/packages/chameleon-system-chameleon-base)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
