Image for post
Image for post
Photo by Chris Lawton on Unsplash

As part of our long-term effort to encourage more community contributions, LoopBack is going to participate in this year’s Hacktoberfest.

What is Hacktoberfest?

Hacktoberfest is an annual event encouraging participation in the open source community, open to everyone. Whether you’re new to development, a student, or a long-time contributor, you can help drive the growth of open source and make positive impact on an ever-growing community. All backgrounds and skills levels are encouraged to complete the challenge.

You can learn more about Hacktoberfest values at

Participants completing the challenge (contributing at least 4 valid pull requests) will earn a limited edition T-shirt.

Please note that any prizes are subject to conditions set by Hacktoberfest. …

Image for post
Image for post

When building a LoopBack 4 application, we often need to tweak or improve the default data access behavior provided by the framework. It’s usually desirable to apply the same set of customizations for multiple models, possibly across several microservices. In this post, I’d like to share a few tips and tricks for reusing such repository code.

Using a Repository Base Class

In this approach, you insert a new repository class (the Repository Base Class, e.g. AuditableRepository) between your model-specific repository class (e.g. ProductRepository) and the repository class provided by the framework (typically DefaultCrudRepository). …

Image for post
Image for post
Rust meets Omnia. The Rust logo is owned by Mozilla and licensed under CC BY 4.0.

In my previous blog post, I described how to use LXC containers to run an arbitrary Ubuntu package on Turris Omnia. While easy to configure, I find such setup rather wasteful. I don’t want to run another full Linux distro on my router to be able to run small (home) automation programs.

What other options do we have?

  • Write programs in Python. Turris OS comes with Python version 2.7, a lot of the admin tooling is written in Python too. …

Image for post
Image for post
Turris Omnia meets UniFi Network Controller

My next adventure with the Turris Omnia router was setting up an LXC container to run UniFi Network Controller inside the router. The idea is to (eventually) upgrade my wifi from Omnia’s Qualcomm Atheros QCA9880 to Ubiquiti UniFi access points.

It turns out the process is pretty easy and straightforward if you know what to do. The information is a bit scattered in different places, I am writing this blog post to provide a full and easy-to-follow guide.

Essentially, the process has three steps:

  1. Prepare the router to run LXC
  2. Create a new LXC container to run UniFi Network Controller
  3. Install UniFi Network Controller in the…

Turris Omnia router in silver
Turris Omnia router in silver
Turris Omnia router in silver

I have been sold on the promise of a high-performance extensible home router running open-source firmware and OS all the way back in 2015/2016, when the team behind the Czech national domain registrar (CZ.NIC) announced their Indiegogo campaign for Turris Omnia. The campaign was a big success, it has raised over $1.2M USD. Since then, the team kept working on further improvements of the operating system and in October 2019, they released a new major version Turris OS 4.0. Unfortunately, the migration from 3.x is not automated, which I found a bit disappointing. …

We often face a dilemma around example projects. They are useful learning resources that demonstrate individual features in a runnable application while making it easy to tweak and play with the code. But on the other hand, they can quickly become a maintenance burden. As the framework evolves, significant ongoing efforts are needed to keep these examples up to date with the latest APIs, conventions, and best practices.

Because our CLI tooling makes it so easy to quickly create a new project, we could not resist the temptation and ended up with about 18 example projects. To update them, one has to open 18 pull requests — that’s a lot of tedious work! When work on LoopBack 4 (a.k.a Next) started, maintenance of example projects was off the radar. There was too much more important work in other areas, from figuring out Lerna monorepo with TypeScript builds, to finding the right design and APIs that will enable us to address pain points of LoopBack 3.x …

Originally published at

Recently, I was approached by a LoopBack user running a single-person project powered by LoopBack 2.x, asking for an advice on how to maintain and upgrade his backend. While I could respond directly in an email, I strongly believe in maximizing the value of my keystrokes and posting information potentially useful to the LoopBack community in a public place.

This user runs a website and a REST API powered by LoopBack as the back-end with an angular admin interface, and React as the web client with React Native as the app framework. …

Image for post
Image for post

The history

LoopBack 1.0 was announced on September 18th, 2013 (the announcement). Within the next year, we were able to get more than 20 people to contribute to our new framework (the stats), some of them contributed non-trivial features and were promoted to maintainers (fabien, clarkorz and STRML to name a few). What a great start!

Unfortunately we did not play the midgame similarly well. As the number of users started to grow, there were more questions to answer, more issues to triage and fix, more pull requests to review and land. …


Miroslav Bajtoš

Privacy & decentralisation, sustainable open-source, distributed & remote-first. Currently at StrongLoop/IBM, leading - the Node.js API framework.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store