In 2025, we finally made the call — Sails.js is out of our stack.
We’ve used it for nearly 10 years. Back in the day, it was great — built-in ORM, auto-generated APIs, solid project structure. It helped us a lot, especially around 2016.
But times have changed.
We tried hard to keep Sails alive. We added TypeScript, wrote custom types, wrapped controllers, hacked the models, and even considered forking it to modernize the whole thing. But the deeper we went, the more obvious it became — the foundation just isn't made for today. Outdated patterns, broken dependencies, Docker images with critical vulnerabilities... The project is barely maintained — just version bumps for security. It’s no longer a tool for modern development.
Our main project today is RestoApp — an open-source platform for restaurants, food delivery, and retail.
It includes everything:
🔸 A client-facing app
🔸 A full admin panel
🔸 A flexible API
🔸 Works as SaaS or self-hosted
A big part of it is the admin panel. Originally, we started from sails-hook-adminpanel by Kostya Zolotaryov — and we’re genuinely thankful to him for that. It gave us a solid starting point. Over 8 years, we evolved it a lot — changed frontend stacks multiple times — and today, it’s become a fully independent, configurable, and open-source admin system. No longer tied to Sails, no specific ORM, no locked-in logic. Just a single config file — and it works. Meet Adminizer
📌 What’s next?
We’ve already started working on our own framework — written in TypeScript, built with modern architecture and ESM in mind.
Future versions of RestoAPP will be fully migrated to this new stack — no more Sails, no more legacy baggage.
So yeah — this is our goodbye to Sails.
Thanks for everything you’ve given us.
And special thanks to Kostya Zolotaryov for creating sails-hook-adminpanel — that’s where it all began.
Now — we move forward.
Top comments (0)