This repository attempts to create the same API in different web-frameworks across different programming languages.
The goal is to explore what a "web-framework" is, how different frameworks implement and expose common design concepts/functionality, inherent benefits provided to the framework by its programming language, and to explore each language's ecosystem to develop a minimal prod-adjacent server.
For information about the technical aspects of the project click here.
For information about which language/frameworks are/may be implemented click here.
For a breakdown of what a framework is click here.
For a web-framework tier-list click here.
This repository is incomplete and thus a work-in-progress. The stages are:
- Stage 1: Rough implementation of many frameworks and surface level writeups
- Stage 2: Refinement, larger refactoring and API parity
- Stage 3: Further reading into each framework for deeper understanding, idiomatic paradigms and refinement of writeups
The repo is currently mostly in Stage 1.
You may run the project and click around in Grafana's local dashboards to see what the system is doing.
When the project is running give it 1-2 minutes to generate some activity and collect telemetry before exploring the dashboards otherwise missing data may make panels and filters unpopulated (clicking out of the dashboard, waiting a bit and returning fixes it).
The project is run through docker/docker-compose and optionally you may install just or run the docker commands manually which are in the justfile.
Building for the first time takes a while because there are a lot of services.
Build everything in 1 command
justTo build a specific service read the commands in the justfile.
This will start the services (and pull additional images from DockerHub when running the command for the first time).
just runOnce everything is running click the following link to open Grafana in your browser and explore the dashboards: http://localhost:3000/dashboards
Stop everything and retain telemetry state
just stopStop everything and delete all previous telemetry
just cleanYou may alter the behaviour of the generator through its config.
After making a change to the config you must rebuild the generator before running it.
just build-generator