* Use random token for claiming scratches
* Fix migration dep
* Fix claim_token serialization & address PR comments
* Improve error handling
* Update backend tests
* reformat
* Update another test
* Minor update to ClaimableScratchSerializer
* Platform page & preset page
* Fix mypy
* improve styles
* move presetUrl to its own file and fix star import
* oops
* Show number of scratches on platform / preset page
* Remove url field stuff & leftovre ProjectFunction stuff
* Remove more projectfunction stuff
* black
* Attempting to remove most url and html_url
* oops
* mypy
* fixz
* suggz
---------
Co-authored-by: Alex Bates <alex@nanaian.town>
* Organize tests, update settings, backend deps
* Remove project import code from backend
* Remove some frontent project code
* more progress, project cleanup
* more preset work
* .
* upd8z
* Admins can delete scratches & preset migration
* bye, source presets
* fixes & changes
* Preset in admin panel & rename migration
* mypy
* Fix perset viewset & tests
* Change compilers hash files
* test annotations so Windows doesn't run them
* Mark nits
* Preset auto ID field
* scratch as reference (1/?)
* backend fixes to preset (2/3)
* Use preset ID instead of name in frontend
* update frogger preset
* I broke one of the ten commandments of react
* finishing touches (3/3 lol)
* Update serializers.py