Monstarrrr / rebutify

Where activists improve their advocacy by building, refining and using strong rebuttals to counter the objections to their movement.
https://rebutify.org
10 stars 4 forks source link

Choice of backend framework #183

Closed seporterfield closed 5 months ago

seporterfield commented 5 months ago

Choice of backend framework

Context

Rebutify's backend will primarily serve API endpoints. What framework will we use for Rebutify's backend?

Decision Drivers

Considered Options

Ruby on Rails

Ruby on Rails

Django

Django

Next.js

Next.js

Decision Outcome

Chosen option: Django Reason: Django was chosen due to its strong compatibility with the team's existing skills, its robust API functionality through the Django Rest Framework, and the extensive community and support available, ensuring ease of onboarding and long-term project viability. The fact that something other than Django is more suitable for the frontend gives us the opportunity to choose Django for the backend and split the architecture in a more scalable way.

Monstarrrr commented 5 months ago

I'd add nextjs as an option and scalability as a decision driver

seporterfield commented 5 months ago

Done. Does it look correct?

Monstarrrr commented 5 months ago

What i'd update

Django

Maybe no need to mention frontend as this is only about backend?

Nextjs

seporterfield commented 5 months ago

Not sure about the workload claim. Especially for a website that we can scale horizontally.

Default python is strongly typed and dynamic. Using mypy, python is statically typed.

seporterfield commented 5 months ago

Maybe no need to mention frontend as this is only about backend?

How our choice of backend plays into the overarching architecture is important.

I don't see how we can avoid talking about other components in that architecture and how they would be affected and the restrictions they set on our choice of backend framework.

Monstarrrr commented 5 months ago

Maybe no need to mention frontend as this is only about backend?

How our choice of backend plays into the overarching architecture is important.

I don't see how we can avoid talking about other components in that architecture and how they would be affected and the restrictions they set on our choice of backend framework.

You're right, should we reference the dependencies and impact then?

Example

File for Decision-B in the case where Decision-C & Decision-D are dependent on Decision-B and Decision-B is dependent on Decision-A :

Decision-B.md (Frontend framework)

## Impacts
- #42 (Decision-C): API fetching method
- #55 (Decision-D): State management
## Dependencies  
- #30 (Decision-A): Backend framework

How maintainable would that be though?

Monstarrrr commented 5 months ago

^ Moved discussion on dependencies to #187

Monstarrrr commented 5 months ago

Added my confidence level