* ♻️ Refactor backend, update DB session handling
* ✨ Add mypy config and plugins
* ➕ Use Python-jose instead of PyJWT
as it has some extra functionalities and features
* ✨ Add/update scripts for test, lint, format
* 🔧 Update lint and format configs
* 🎨 Update import format, comments, and types
* 🎨 Add types to config
* ✨ Add types for all the code, and small fixes
* 🎨 Use global imports to simplify exploring with Jupyter
* ♻️ Import schemas and models, instead of each class
* 🚚 Rename db_session to db for simplicity
* 📌 Update dependencies installation for testing
* Update CRUD utils to use types better.
* Simplify Pydantic model names, from `UserInCreate` to `UserCreate`, etc.
* Upgrade packages.
* Add new generic "Items" models, crud utils, endpoints, and tests. To facilitate re-using them to create new functionality. As they are simple and generic (not like Users), it's easier to copy-paste and adapt them to each use case.
* Update endpoints/*path operations* to simplify code and use new utilities, prefix and tags in `include_router`.
* Update testing utils.
* Update linting rules, relax vulture to reduce false positives.
* Update migrations to include new Items.
* Update project README.md with tips about how to start with backend.