Skip to content

Backend brainstorming #29

@mohe2015

Description

@mohe2015

From the standpoint of making it easy for contributors, there are basically three choices: node.js / javascript backend, php (but saner) or python. I do like .net core and have some relationship with mono and the .net ecosystem, so I might be biased there. But I also know that it is turning some people off. So my final tradeoff would be python3/django which makes things easier for more contributors but is not statically typed or c# .net core MVC API with Entity Framework which makes all calculations that need to be done on specific types much easier. Or stick to php, but I really, really, really dislike practically all php ORMs.

I'm really against python3 because it's not statically typed and I believe this to be the major advantage when reimplementing the database interactions. I haven't written database code in python3 yet though so maybe it's not that bad.
For node.js I only found one ORM that I think I would like: https://typeorm.io/#/ also because types are really important in my opinion.
For PHP I didn't find one that I liked.
For c# .net core MVC API with Entity Framework I've never used it before but if it's https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro?view=aspnetcore-5.0 (and following pages) it seems to look okay but i'm not a particular fan of "forcing" us into one vendor.
Still this might be the best option especially if you know it already.

But in all reality: Before attempting to fundamentally change the backend, we need to document and understand the current database schema, and all API endpoints. I really want to avoid changing existing API endpoints while re-doing the frontend, and even if we redo the core at some point, I don't really want to throw away the current API all at once. At some point it would be sensible to re-do some of the endpoints, but that will include versioning the new api to /api/v2/<endpoints>. So, I think we should open a discussion outside of the PR of what to do with the backend (it's a bit off topic here), because I'm sure there are more things to consider that I don't think of right now.

Originally posted by @mistressofjellyfish in #25 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions