Get notified when a famous person dies. https://fwdekker.com/tools/death-notifier/
Go to file
Florine W. Dekker e024bc4cf8
Update a few strings for clarity
2023-08-29 21:00:09 +02:00
src Update a few strings for clarity 2023-08-29 21:00:09 +02:00
.editorconfig Add Composer and npm to project 2022-08-09 19:20:02 +02:00
.gitattributes Add Composer and npm to project 2022-08-09 19:20:02 +02:00
.gitignore Clean up server-side by, like, a lot 2022-08-29 01:09:33 +02:00
Gruntfile.js Add tests for EmailQueue 2022-12-17 18:05:43 +01:00
LICENSE Add Composer and npm to project 2022-08-09 19:20:02 +02:00
README.md Create separate log for database events 2023-03-20 13:55:31 +01:00
composer.json Update a few strings for clarity 2023-08-29 21:00:09 +02:00
composer.lock Create separate log for database events 2023-03-20 13:55:31 +01:00
package-lock.json Update a few strings for clarity 2023-08-29 21:00:09 +02:00
package.json Update a few strings for clarity 2023-08-29 21:00:09 +02:00
phpstan.neon Add phpstan and resolve almost all issues 2022-08-14 17:47:18 +02:00
tsconfig.json Improve CSRF handling and session management 2022-08-12 17:06:21 +02:00

README.md

Death Notifier

Get notified when a famous person dies.

Wikipedia's editors are known for updating pages as soon as someone has died. Why not turn that into a service? This tool regularly checks if people are still alive according to Wikipedia, and emails you as soon as that changes.

Development

Requirements

  • PHP 8.1+ (i.e. apt install php php-cgi)
  • composer (make sure composer.phar is on your path)
  • npm

Setting up

Install the dependencies. Run this after cloning the repo, and each time after pulling new commits.

composer.phar install
npm ci

Building

  • Build the tool in dist/ for development
    npm run dev
    
  • Same as above, but automatically rebuild whenever source code is changed
    npm run dev:server
    
  • Build the tool in dist/ for deployment
    npm run deploy
    

Pre-commit

If you changed the version number or updated any dependencies, update the lock files:

composer.phar update
npm install

Static analysis

  • Run static analysis
    npm run analyze
    
  • Run all tests
    npm run test
    
  • Run all tests in package
    npm run test -- --test-target=com/fwdekker/deathnotifier/wikipedia/
    
  • Run static analysis and tests
    npm run check
    

Deployment

Build

Build the software and move it to the right directory.

npm run deploy
mv dist/ /var/www/death-notifier/

Configuration

Inside the installation directory, create config.ini.php and use it to override values from config.default.ini.php. Make sure only the user that runs PHP can read/write config.ini.php.

Cron jobs

You should run the process-email-queue and update-all-trackings actions regularly; recommended is every minute and every five minutes, respectively. For example, you can add the following lines to your crontab (e.g. using sudo -u www crontab -e):

* * * * * cd /var/www/death-notifier && php /var/www/death-notifier/api.php action=process-email-queue password=secret_password
*/5 * * * * cd /var/www/death-notifier && php /var/www/death-notifier/api.php action=update-all-trackings password=secret_password

Replace secret_password with the password you configured in config.ini.php.

Logs

It is recommended to also use a tool such as newsyslog to manage log rotation. For example, create the file /etc/newsyslog.conf.d/death-notifier.conf with the following contents:

/var/www/death-notifier/.death-notifier.log    www:www 600 7 * @T00   JE
/var/www/death-notifier/.death-notifier.db.log www:www 600 7 * $W0D23 JpE

Initialize

Open index.html in an interactive browser to initialize the database. Make sure only the user that runs PHP can read/write .death-notifier.db.

Inspection

You can use a tool such as VisiData to manually inspect the database contents on the command line.