2.6 KiB
2.6 KiB
Development plan
- Basic Player Definition
- Basic Deck Definition
- Figure out how to return JSON or html (
render_template
) - Basic testing
- ruff
- GitHub Actions for tests and linters
- Basic List pages for entities
- Swagger API
- Local development tool to clear/seed database
- CRUD APIs for Games
- HTML Page to Create Game
- Mostly done, just need to implement actual submission, (if desired) deck-creation in-page, and non-deck metadata (who won, turn count, etc.).
- Load Game-history from file
- Favicon
- Configuration per-stage (including different welcome screen)
- More content on Home Page
- About Page
- "Display components" like "a tables of games" that can be inserted into multiple pages
- Oh no, did I just re-invent React? :P
- Data presentation methods like "translating a list of Deck IDs into Deck Names"
- Externalize datastorage (currently) ...
- Authentication (will need to link
user
table toplayer
) ... - Helm chart including an initContainer to create the database if it doesn't exist already
- GroupId (i.e. so I can host other people's data? That's probably a YAGNI - see if there's demand!) ...
- Comments/chats on Games?
Database Migrations
https://flask-sqlalchemy.palletsprojects.com/en/3.1.x/quickstart/#create-the-tables
Authentication
Things to learn/fix/understand
How to use an existing Python class as the spec in a Swagger API definition? (See, for instance,responses.200.content.application/json.schema.id
underget_player
). Perhaps it's not possible just by name, which would be understandable (the context of a Docstring probably doesn't include the context of imported code) - but, in that case, at least I'd like to be able to specify `definitions`` in a way that is independent of a method.How to specify the content-type that should be sent with a Swagger request without needing to userequestBody
(and thus, implying that there should be a body)?- Fixed by using FastApi instead of Flask
- How to abstract out the standard-definitions of
routers/*
andsql/crud.py
?
Known bugs/QA issues
- It's possible to select the same player twice for a game
- Can submit a game in the future
- ELO calculation assumes that games are submitted in chronological order
- "Turn First Player Out" can be more than "Number Of Turns"
- No validation that you've actually selected a deck for a player.
- 404 pages are not friendly