Technology

Web

For more complex web applications we use the web framework Ruby on Rails. Additionally, we use modern frameworks like Bulma, Bootstrap and React when building frontends depending on the project scope. High accessibility on all kind of devices is important for us. At the beginning of each project we weigh up exactly how the application should be conceptualized. Is classic templating with a monolithic app enough? Do we need smaller services with REST APIs? Or does it even make sense to use React and headless Rails? For small services that don’t need the full list of features Rails is offering, we use Sinatra. No matter which solution it will be in the end, coverage through automated testing by Rspec is a clear priority for us.

We use PostgreSQL for storing complex data and SQLite for simple cases. For job queuing, Sidekiq is our first choice.

Ruby on Rails logo

Sinatra logo

Bulma logo

Bootstrap logo

React logo

PostgreSQL logo

Sidekiq logo



Jamstack

When creating more simple presentation websites with or without CMS we follow the jamstack idea. We use jekyll together with Netlify CMS JS and webpacker. The page is hosted via the Gitlab Pages and CMS records get commit as markdown files via Netlify. Through the Gitlab pipeline new content is rendered and commited. There is no backend needed which makes this small projects easy to maintain and to hand over.

Jekyll logo

Netlify CMS logo

Webpack logo

Gitlab logo



Deployment

Our self-hosted services are running on Ubuntu Linux VPS servers. We use Ansible to deploy custom configs, services helping our work process and our builded web applications. This applications are containerized in Docker style and running with Podman and Systemd. Via Gitlab pipelines we are building new Docker images and using the Gitlab Registry to organize them.

For our productive applications errors are monitored via Sentry and uptime via Cabot.

Ansible logo

Ubuntu logo

Docker logo

Podman logo

Sentry logo



Beyond web development

We are also have experience and fun of building Android Apps, Java and Python applications and making GIS analysis.

Android logo

java logo

Python logo

QGIS logo



Development process

When beginning a new project we first go through a concentrated conception phase. With user stories we isolate the most important features the minimal version of the app needs and collect ideas for optional and comfort features. Taking enough time to develop a suitable concept and architecture without over-engineering is important to us. Entity–relationship, component and architecture diagrams help us documenting our ideas before we start with the project.

Our working cycles are influences by agile concepts like Scrum. Since code quality and security are most important for us, we use tools like pair programming and code reviews.