# run once at the start of work
make setup
# run every time migrations changes?
make up
# run server
make run
There are two differences to normal Language A to Language B translation dictionary:
- there is a cell per sense of the word, not a cell per word. Words having multiple meanings have multiple senses.
- there are many variants of translation, and we track the sources of translation. E.g. Oracle and Microsoft can use different translations of some word sense to Russian. We create "Oracle" dialect to store Oracle's translations and "Microsoft" dialect to store Microsoft's.
Pre-alpha, no deployment. Not all features are implemented.
- concept of database error handling
- postgres quoting - sqlx seem to work fine
- genExpiryDate (schedule an expiry of a link)
- genNonce (for registration confirmation links)
- SaltAndHashPassword (safe storing of passwords)
- run postgres as a user
- sending e-mails
- confirm registration
- ssl locally
- deploy locally
- sane page titles (otherwise history is ugly)
- validate e-mails and passwords
- integration test
- deploy on hosting
- fail2ban integration
- captcha
- now cleanup of timed out things is 'lazy'. Implement cleanup goroutine or postgresql service?
- implement keepalive for the service https://www.linux.org.ru/forum/development/14883028
- one connect, pool of connections or what? (now using pool and crashing if something is wrong)