Loading repository data…
Loading repository data…
ParkPawapon / repository
Production-ready PHP chemistry bingo card game with Docker, CI/CD, analytics logging, and Discord workflow notifications.
Production-ready PHP web application for the KME with SUI chemistry bingo experience.
Create a local environment file from the example and set the database values:
cp .env.example .env
Required environment variables:
APP_PORTAPP_IMAGE_TAGAPP_ENVDB_HOSTDB_PORTDB_USERNAMEDB_PASSWORDDB_DATABASEMYSQL_ROOT_PASSWORDAPP_TIMEZONEAPP_DEMO_MODEAPP_LOGGING_ENABLEDAPP_LOG_HASH_SALTAPP_LOG_RAW_IPAPP_TRUST_PROXYCOPYRIGHT_PAWAPON_URLCOPYRIGHT_RATCHAPOL_URLNever commit real credentials, database dumps, logs, or local environment files.
index.php can connect to the configured database..gitignore.Set APP_DEMO_MODE=true in .env to preview the interface with bundled image assets when a local database is not available. Keep this disabled in production.
The repository includes a production-oriented Docker setup for the PHP web application and MariaDB database.
.env from .env.example and set strong unique passwords.docker compose up -d --build
http://127.0.0.1:${APP_PORT}. The default local port is 8080.The MariaDB container initializes the elements table from docker/mysql/init/001-schema.sql on the first run. Database data is stored in the named Docker volume kmewithsui_mysql_data. The migrate service runs database migrations before the web container starts.
Published release images are available from GitHub Container Registry:
docker pull ghcr.io/parkpawapon/kmewithsui:v1.0.0
Run database migrations before deploying application code that depends on new database objects:
php scripts/migrate.php
Docker Compose runs the same command automatically through the migrate service.
The application records gameplay and navigation actions in the action_logs table for future analytics. Logged events include page views, card modal opens, random card selections, card reveals, game resets, keyboard random actions, and game completion.
Raw IP storage is disabled by default. The application stores ip_hash using APP_LOG_HASH_SALT; set APP_LOG_RAW_IP=true only when there is a documented production need and an approved retention policy.
main require at least one approving review.CODEOWNERS assigns repository ownership to @ParkPawapon.main.GitHub Actions sends Discord channel notifications for branch creation, pushed commits, opened pull requests, reopened pull requests, and merged pull requests.
Configure the repository secret DISCORD_WEBHOOK_URL with the production Discord webhook URL. Do not commit webhook URLs or tokens to the repository.