jackreichert / over-engineered-todo

building a todo app to keep my skills sharp
0 stars 1 forks source link

Select language and server framework for server #38

Closed jackreichert closed 9 months ago

jackreichert commented 10 months ago

Context As this is an over engineered application it clearly needs more than just a front-end. The easiest thing would be to build it in JavaScript, which I'll consider. However since I'm using this project to show off a diversity of skills, and to keep my skills fresh, perhaps another language would be good.

As an engineer I want the api server to be built in a language fit for an api server So that I can rely on the technology to be performant

Acceptance Criteria

BenBroide commented 10 months ago

A straightforward and contemporary approach would involve utilizing Vercel. This could require transforming your application into a Next.js format, which is fundamentally React-based. Vercel offers the convenience of rendering endpoints from function files (https://vercel.com/docs/concepts/functions/serverless-functions/quickstart).

Another option is to embrace the Amazon Web Services (AWS) platform. You can deploy your application to AWS using a CloudFormation template, with S3 for storage and CloudFront serving as your Content Delivery Network (CDN). And set the API an aws lambda/appSync.

Both these alternatives provide the advantage of allowing the backend and frontend to be written in the same language, TypeScript.

For the backend database:

Elasticsearch could be an interesting option, but might be excessive for your needs. DynamoDB could present a simpler solution. Maybe a combination of DynamoDB and AppSync https://aws.amazon.com/appsync/ which can set graphql API for the front end.

jackreichert commented 10 months ago

I love these suggestions @BenBroide, thanks for hopping in!

I'm not yet sure I want to use JS/TS, I think I want to over-engineer things for myself a little...

I'm leaning towards embracing cloud deployment, and packaging it in a way that it can be deployed to any platform. I haven't decided on a database yet, but I definitely am leaning towards GraphQL.

jackreichert commented 9 months ago

Decided on Python, mainly to use another language for the sake of making this more difficult. In a production scenario, @BenBroide makes a good case.

BenBroide commented 9 months ago

@jackreichert python with Django? Flask?