# Eternity Project TODO - [x] Dockerized Flask publishing service with persistent storage. - [x] Local accounts, administrator approval, and TOTP MFA. - [x] QR-based MFA enrollment for iPhone and Android authenticators. - [x] Email addresses, member password changes, and expiring password-reset links. - [x] Configure production SMTP credentials and verify outgoing email delivery. - [x] Rotate the initial `admin` password and enroll its authenticator. - [x] Add CSRF protection to all state-changing forms. - [x] Add automated database backups and test restoration. - [x] Configure TLS reverse proxy and production domain for `eternityproject.fi`. - [x] Add validated post image uploads with an in-article preview and click-to-expand view. - [x] Add ordered inline step images with captions for long-form repair and engineering posts. - [x] Add code snippets to long-form stories. - [x] Allow users to change their email addresses. - [x] Add user email verification for registration and email-address changes. - [x] Add user real names and use them as the published-by name. - [ ] Add ability to hide posts from unregistered users.