A lightweight, open-source PHP application for managing comments. Jamstack-friendly and easy to self-host.
- Start a simple PHP server for local testing:
php -S 127.0.0.1:8000
# then open http://localhost:8000 in your browser- Ensure you have a running MySQL instance. You can use Docker:
# MySQL 5.7
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:5.7.29
# or an ARM-compatible image
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d arm64v8/mysql:8- Import the schema and (optionally) dummy data:
# Run the schema first (be careful not to overwrite an existing DB)
mysql -u root -p < sql/acme-db.sql
# Optional: import dummy data
mysql -u root -p < sql/acme-data.sqlNotes:
- If your schema doesn't match, update table columns manually.
- Tables used include:
users,comments,pages,contactForms,configuration.
- Copy the connections template and edit database/mail/JWT settings:
cp ./config/connections-backup.php ./config/connections.php
# edit ./config/connections.php with your DB and mail settings- verify db connection working http://localhost:8000/?action=bootstrap
- Mail provider
- Copy
mailConfig-back.phptomailConfig.phpinmail/and configure. - If you use SendGrid, you can copy
library/mailFunctions-sendGrid.phptolibrary/mailFunctions.php.
- Files to deploy
Copy the project files to your host, excluding the assets, rest, and mail folders if you plan different deployment strategies. Adjust file ownership and permissions for your web server.
- Admin access
Register a new account or use an existing one. To grant admin access, set clientLevel >= 2 for the user in the users table.
Install dependencies and run tests:
composer install
php tests/initialize.php # uncomment resetDb() when you want tests to reset the DB
./vendor/bin/phpunit
# or on Windows: .\vendor\bin\phpunitTo run a single test class or filter:
./vendor/bin/phpunit --filter testPageCommentsSee the rest/ folder for API endpoints (comments, registration, contact forms).
- PHP 7+
- MySQL (or compatible)
- Composer (for running the unit tests)
- Mail provider account (SendGrid, SMTP, etc.)
- ✅ JWT authentication (uses adhocore/php-jwt)
- ✅ Configuration flags
- ✅ Comment moderation (approve/require moderation)
- ✅ Contact form support (send/view messages)
- ✅ API endpoints for comments and forms
- User management:
- ✅ Register
- ✅ Login
- ✅ Change password
- ✅ Update display name
- ✅ View own comments
Planned:
- SSO integrations (Google, Facebook)
- Comment filtering / flagging system
- Be careful when running SQL files against existing databases — these can overwrite data.
- The example Docker commands are helpful for local development but evaluate security and persistence for production use.
