Change backend to use Django Rest Framework #179
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This feels like we are going backward in time, but developing with FastAPI and other options have resulted in too much bespoke code and development is too slow for many of the boilerplate features we need like CRUD endpoints, URL routing, pagination, filtering, authentication, database migrations, management commands, and so on. The Django Rest Framework is bullet tested for security, trusted by large organizations (e.g. Google) and has 1000s of implementation examples. This especially useful for woking on a team of developers with mixed skill levels. The long history of Django and DRF also means that GitHub Copilot works quite well for suggesting common patterns. Performance may be slower when using the ORM & dynamic viewsets, but I believe we can overcome this identifying the endpoints and queries that need to be optimized once the MVP is usable and the application design is more solidified. We can leverage background tasks, materialized views and caching to ensure the final experience is fast and efficient, while also keeping maintenance and expansion of the app easy and enjoyable.