i have a hard time choosing a framework/technology, therefore decided to explore realworld.
- old ones are boring
- new ones are promising but rough around the edges
- the balance between widespread usage, adoptation, features & performance is difficult to find.
- a good resource of arguably non-trivial reference implementations of the same functionality.
- code readability. subjective!
- terseness. lines of code
- reasonable extensibility, feature-wise
- integration to 3rd party services
- ease of development with client-side
- dogma. functional vs. procedure
- ease of development
- hot reaload, built in debugger
- tests are excluded for loc comparison. more “static” and “pure” languages arguably require less tests, as compilation provides some of that.
implementation | persistence | orm | framework | db |
---|---|---|---|---|
node-express-realworld-example-app | mongodb | mongoose | express | |
flask-realworld-example-app | sqlite/postgres | sqlalchemy | flask | |
rails-realworld-example-app | activerecord | mysql | ||
django-realworld-example-app | django-model | sqlite |
- server side implementations list
- server-side-repos.txt
- client side implementations list
- client-side-repos.txt
- install cloc
- $ npm install
- clone server repos
- $ ./fetch.sh server
- clone client repos
- $ ./fetch.sh client
- analyze fetched server side implementations
- $ ./cloc.sh server
- analyze fetched client side implementations
- $ ./cloc.sh client
- breakup of server side LOC by implementation, language
- server-results/bylang.tsv
- breakup of client side LOC by implementation, language
- client-results/bylang.tsv
cloc results are put into client-results/ and server-results/, respectively.