Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Issue 28] Back End Framework ADR #121

Merged
merged 8 commits into from
Jul 7, 2023

Conversation

SammySteiner
Copy link
Contributor

@SammySteiner SammySteiner commented Jul 3, 2023

Resolves #28

ADR to discuss 3 python api frameworks, as well as 2 extensions on the flask framework for consideration for the backend api.

@SammySteiner SammySteiner changed the title [ issue 28 ] Framework ADR [ issue 28 ] Back End Framework ADR Jul 3, 2023
@SammySteiner SammySteiner changed the title [ issue 28 ] Back End Framework ADR [ Issue 28 ] Back End Framework ADR Jul 3, 2023
@SammySteiner SammySteiner changed the title [ Issue 28 ] Back End Framework ADR [Issue 28] Back End Framework ADR Jul 3, 2023
@SammySteiner SammySteiner marked this pull request as ready for review July 5, 2023 13:59
@widal001 widal001 added the docs: adr Architecture decision record ticket label Jul 5, 2023
Copy link
Collaborator

@widal001 widal001 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for all of your work on this @SammySteiner!! Flask seems like a great foundational framework and APIFlask adds some nice features on top of it from what I could see.

I say let's move forward with this decision, especially since Nava has a template pre-configured with these options.

As we discussed a bit yesterday, the real test of some of the helper frameworks on top of Flask will be when we actually start building out the endpoints. And I think the most important thing is for us to do is to structure the codebase in such a way that it would be relatively simple to swap out one helper library for another (e.g. separating out schemas, crud operations, and middleware into separate packages, and keeping the logic in the actual routing pretty lightweight)


## Decision Outcome <!-- REQUIRED -->

Chosen option: Flask + APIFlask, because it is well established with a broad community of developers and provides good tooling to move quickly. It has great documentation to help folks contribute quickly. Additionally the Nava Flask template recently adopted it, so we can leverage the template to get going quickly with a well engineered solution.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for adding this!! I was looking at APIFlask yesterday and seems like a sensible library with some cool features.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me! Thanks for the thoughtful consideration here @SammySteiner and others.

- Very well documented
- **Cons**
- Same as Flask
- Relatively young project
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I think this would be my biggest concern with the decision, it looks like it has <1k stars on GH if IIRC, but Flask provides a solid foundation and swapping out RESTful frameworks shouldn't be too hard if we structure the codebase correctly.

@SammySteiner SammySteiner merged commit d96fefd into main Jul 7, 2023
@SammySteiner SammySteiner deleted the sammysteiner/issue-28-api-framework-adr branch July 7, 2023 15:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs: adr Architecture decision record ticket
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[ADR]: Library to use for the API
3 participants