Operating system and programming languages
Python is Trounceflow's main programming language. That's because our developers are experts in it. Had founder
Mike met different developers on day one, we might have started out with (and carried on using) another
language, e.g. C++, C#, Java, Ruby or PHP.
Debian 9 is Trounceflow's operating system. It's a Linux-based operating system. Many popular Linux
distributions,(e.g. Ubuntu) are based on Debian. Stretch is the development codename for Debian 9. Stretch is an
old but stable distribution (precisely, it is oldstable).
Servers and load balancing
We use IaaS approach for organizing our servers and software.
Here is detailed information about it - Cloud Infrastructure.
Data storage and querying
Postgres is Trounceflow's SQL database. There are SQL alternatives such as MySQL, and there are NoSQL
alternatives such as MongoDB, but for various reasons Postgres is the default choice for Python
developers.
We do use Redis, a NoSQL database which helps our software communicate and which removes pressure on Postgres.
Redis Cache is a tool (a service) that allows us to store data 'in memory' for high-performance data retrieval and storage purposes - helping the website display data in seconds (from Redis) rather than tens of seconds (from Postgres). When we update the database (Postgres), we need to update what is in the Redis Cache, so we 'drop Redis Cache'.
Backend Framework
A web framework, or web application development framework, is a set of resources and tools to build web
applications, including web services, web API's and (most importantly) web resources (e.g. websites!).
Django, built on top of the programming language Python, is used at Trounceflow to make the set of webpages (the
website) that we call "the App".
Moreover, Django is for the parts of "the App" that users don't see such as authentication, database design, and
server interactions.
Django uses Jinja templates to make writing flexible, reusable webpages a straightforward task.
Django Constance allows an editor/analyst (even not a developer) to adjust the site parameters 'on the
fly'.
One of the most important parts of our automatic production process is the running of periodic (regularly
repeating) tasks, and much of this can be controlled within the administration area of Django by an analyst (not
a developer), without having to alter the code in GitHub.
There are good alternative web frameworks such as Flask but Django is the most popular choice when the starting
point is Python and PostgreSQL.
Frontend Framework
Like for many others web applications frontend of our App is developed using HTML, CSS and JavaScript.
Here is detailed information about it - The Web App.
Monitoring and performance tools
We use several powerful tools for issue tracking, source control, monitoring and deployment.
Here is detailed information about it - Devops Toolchain.
Requirements
Requirements.txt in GitHub