############ Decision Log ############ We capture major decisions about the development here. Similar to `architecture decision log `_, it helps us remember important context and gives us more confidence when revisiting decisions in the future. **** 2021 **** September ========= * There is small enough active users that we'll be using Mailgun even for batch sending * Batch sending is thus decoupled and send using database as a queue as a starter * E-mail list is small enough for blacklisted e-mails to be loaded in memory for every sending. This should be revisited should the userbase grow significantly * Backup is still done by cron on the old EC2 instance with upload to S3 there. This can only be reasonably fixed after InnoDB migration * Beside registration e-mail, no e-mails should be send to unregistered users. This is because we'd have to track unsubscribe tokens for all combinations and it's "complicated" to avoid either spamming or unsubscription attack; not worth it for now June ==== * For URLs, we prefer longer and more expressive URLs that explain the particular resource or resource list. Hence, displaying posts in Tavern is `/tavern/table/id/posts/` as opposed to just `/tavern/table/id/`, especially since we have `/tavern/table/id/notice-board/` etc. In the same fashion, root url `/` redirects to `/news/` instead of being served directly since we may (and actually want) to redo the landing page. * Models missing integer foreign key should have it added (as opposed to working on the character foreign keys). Pattern: * Add nullable column * Write ``migrate$modelname`` management command * Run it upon deploy * Write it to the `data migration ticket `_ for final migration when old version is shut down * See `the detailed writeup `_ * For comments and tavern posts, we are using the same endpoint and POST action. Action is designated by a POST attribute. "Correctly", this would be done better by using different HTTP method, unfortunately `Mike's proposal is not implemented `_ * All attributes for all models are now in English and in accordance with the :ref:`dictionary`. Czech names should be hidden under ``db_column`` attributes and under ``Enum``s