DEV Community

Web Application Boring Stack

Mischa Spiegelmock on July 18, 2019

At JetBridge we enjoy developing software applications with our clients that we can take pride in while expanding our areas of knowledge and expert...
Collapse
 
aurelio profile image
Aurelio • Edited

Very interesting post. Regarding picking Python for the backend and since you mention the lack of good type annotations as a big disadvantage (I agree), did you consider picking another language?

NOTE: this is NOT a criticism to the choice of choosing Python or to Python itself, which I really like btw. I just agree with your statement "This is the biggest drawback to Python in my opinion" and I find it interesting to see if that made you consider other languages, and if so, which ones were on your radar.

ps - I am totally onboard with the Boring stack, so much that I actually use the same definition when picking a new tool for a commercial project.

Collapse
 
cybermischa profile image
Mischa Spiegelmock

We've been trying to make use of Python type annotations and Mypy but it is pretty underwhelming. We are in all likelihood going to start using Go for some new projects mostly because of the wonderful strictness at compile time.

Collapse
 
aurelio profile image
Aurelio

Yes, that's really hard to cope with the fact that types are an afterthought in some domains. Especially when the library ecosystem is not on the same page.

Collapse
 
sobolevn profile image
Nikita Sobolev • Edited

Solid stack! I share 90% of it.

And since you are already using eslint, don't forget to add a linter for your Python project as well!

I recommend to use wemake-python-styleguide. It is the strictest Python linter out there. It will help you to find possible errors in your code early, show you possible refactoring opportunities, and enforce consistency across the project's codebase.

Check it out:

GitHub logo wemake-services / wemake-python-styleguide

The strictest and most opinionated python linter ever!

wemake-python-styleguide

wemake.services Supporters Build Status Coverage Status Python Version wemake-python-styleguide


Welcome to the strictest and most opinionated python linter ever.

wemake-python-styleguide logo

wemake-python-styleguide is actually a flake8 plugin with some other plugins as dependencies.

Quickstart

pip install wemake-python-styleguide

You will also need to create a setup.cfg file with the configuration.

We highly recommend to also use:

  • flakehell for easy integration into a legacy codebase
  • nitpick for sharing and validating configuration across multiple projects

Running

flake8 your_module.py

This app is still just good old flake8 And it won't change your existing workflow.

invocation resuts

See "Usage" section in the docs for examples and integrations.

We also support Github Actions as first class-citizens Try it out!

What we are about

The ultimate goal of this project is to make all people write exactly the same python code.

flake8 pylint black mypy wemake-python-styleguide
Formats code?
Finds style issues? 🤔 🤔
Finds bugs? 🤔
Collapse
 
steelwolf180 profile image
Max Ong Zong Bao

Awesome post :) It's quite unusual to have a python backend for web development. May I know how do you train and hire developers onboard your team.

Collapse
 
cybermischa profile image
Mischa Spiegelmock

I do not think it is at all unusual - Flask and Django are extremely popular projects.
Doing the Flask and SQLAlchemy tutorials is mostly enough to get anyone up to speed. There isn't a lot of voodoo or crazy complicated things going on.

Collapse
 
zed_m profile image
Amine Hammou

great post I love the frontend part!!

Collapse
 
tremainebuchanan profile image
Tremaine Buchanan

Great post! Looking to do the same with my projects. Too often I'm between stacks when I really need to build the project!

Collapse
 
megazear7 profile image
megazear7

Thanks for the discussion, I think the "boring" stack (aka yesterday's exciting stack) is often a good place to be. A team is powerful when they have an evolving yet standardized approach.

Collapse
 
sobomabo profile image
sobomabo

This is a very interesting read, thanks for sharing. I'm in a situation where I need to define a software development stack for a new team, and this gave me really good options to consider.

Collapse
 
yaron profile image
Yaron Levi

Nice read 🙂
Thank you for sharing.
Python for backend is an interesting choice. Why not go with Node as a default choice?

Collapse
 
cybermischa profile image
Mischa Spiegelmock

No particular reason. Maybe when you can use MJS in node without experimental flags it will be getting close to ready for production.