backend logic

- [ ] submit hack (one user could only submit one hack for the same topic and language)
- [ ] authorization checking (only logged-on users can submit hacks)