<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: RestoApp</title>
    <description>The latest articles on DEV Community by RestoApp (@restoapp).</description>
    <link>https://dev.to/restoapp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F11076%2Fcd572929-3d92-4817-8fc0-b15e95318ee2.png</url>
      <title>DEV Community: RestoApp</title>
      <link>https://dev.to/restoapp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/restoapp"/>
    <language>en</language>
    <item>
      <title>RestoApp: Why We Built an Open-Source Food Delivery Platform</title>
      <dc:creator>Vu xfi</dc:creator>
      <pubDate>Sat, 09 Aug 2025 08:35:30 +0000</pubDate>
      <link>https://dev.to/restoapp/restoapp-why-we-built-an-open-source-food-delivery-platform-2nb8</link>
      <guid>https://dev.to/restoapp/restoapp-why-we-built-an-open-source-food-delivery-platform-2nb8</guid>
      <description>&lt;h2&gt;
  
  
  From WordPress to Node.js
&lt;/h2&gt;

&lt;p&gt;When we first started building food delivery websites, we relied on tried-and-true tools — &lt;strong&gt;WordPress&lt;/strong&gt; and &lt;strong&gt;WooCommerce&lt;/strong&gt;.&lt;br&gt;
For one of our clients, we launched a fully functional delivery site on this stack, and at first glance, it worked. But under the hood, it was almost entirely rewritten: too many modifications, a messy structure, and major maintenance headaches.&lt;/p&gt;

&lt;p&gt;Technologies like &lt;strong&gt;PHP&lt;/strong&gt; were no longer inspiring — we wanted something modern, modular, and flexible. That’s when we decided to switch to &lt;strong&gt;Node.js&lt;/strong&gt; to create solutions that meet today’s web development standards.&lt;/p&gt;

&lt;p&gt;At the time, we chose &lt;strong&gt;Sails.js&lt;/strong&gt; as the framework — it was simple and easy to understand, allowing us to quickly build an MVP. Yes, it’s aging now and we’re considering migrating to a newer stack, but back then it was the optimal choice.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why Food Delivery is Not Just E-commerce
&lt;/h2&gt;

&lt;p&gt;Food delivery is not just an “online store with a cart.” It works differently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The website often serves as an &lt;strong&gt;external storefront&lt;/strong&gt;, while business processes and logistics live inside &lt;strong&gt;ERP systems&lt;/strong&gt; (iiko, r-Keeper, Poster, Loyverse, or any other).&lt;/li&gt;
&lt;li&gt;For an enterprise-grade solution, &lt;strong&gt;synchronization&lt;/strong&gt; with these systems is critical — but the site must also work &lt;strong&gt;autonomously&lt;/strong&gt;, without external dependencies.&lt;/li&gt;
&lt;li&gt;Unlike retail, speed is critical: real-time order processing, live menu updates, delivery zones, and instant delivery cost calculation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our goal was to create a &lt;strong&gt;standalone, enterprise-level delivery site&lt;/strong&gt; that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Works equally well for a small café or a nationwide chain.&lt;/li&gt;
&lt;li&gt;Can easily integrate with &lt;strong&gt;any ERP&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Functions as a fully autonomous system, processing orders without third-party services.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Why We Chose Open Source
&lt;/h2&gt;

&lt;p&gt;Today, our clients range from single restaurants to large chains and franchises. We’ve learned that traditional subscription or “percentage of sales” models often don’t work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For large companies, they create unpredictable costs and vendor lock-in.&lt;/li&gt;
&lt;li&gt;Medium-sized businesses often seek &lt;strong&gt;lifetime licenses&lt;/strong&gt; for closed products.&lt;/li&gt;
&lt;li&gt;For long-term flexibility, &lt;strong&gt;Open Source&lt;/strong&gt; is increasingly the preferred choice.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We went fully &lt;strong&gt;open-source&lt;/strong&gt; for several reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Transparency&lt;/strong&gt; — anyone can review the code, check the architecture, and ensure its reliability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility&lt;/strong&gt; — integrate with any service or make custom changes without waiting for vendor updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community&lt;/strong&gt; — build a network of developers and business owners around the platform.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt; — use RestoApp not only for delivery websites but also to create aggregator-level platforms.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For us, Open Source is not just a philosophy. It’s a strategic decision that gives businesses &lt;strong&gt;control and independence&lt;/strong&gt;, while letting us grow the platform together with the community.&lt;/p&gt;


&lt;h2&gt;
  
  
  Technology Stack
&lt;/h2&gt;

&lt;p&gt;RestoApp is built on modern, high-performance tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt; — fast, scalable server-side runtime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sails.js&lt;/strong&gt; — straightforward, easy-to-learn framework for APIs and business logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PostgreSQL&lt;/strong&gt; — reliable relational database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker&lt;/strong&gt; — deploy in minutes anywhere: locally, on a server, or in the cloud.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Installing RestoApp
&lt;/h2&gt;

&lt;p&gt;We’ve made installation as simple as possible.&lt;/p&gt;
&lt;h3&gt;
  
  
  Quick Start
&lt;/h3&gt;

&lt;p&gt;Run RestoApp in Docker with one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;--name&lt;/span&gt; restoapp &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 webresto/restoapp:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the container starts, open your browser and go to:&lt;br&gt;
&lt;a href="http://localhost:8080" rel="noopener noreferrer"&gt;http://localhost:8080&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s Next
&lt;/h2&gt;

&lt;p&gt;RestoApp is already ready to use as a complete food delivery solution, but we’re moving forward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integration support for &lt;strong&gt;any ERP&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Extended modules for loyalty programs and promotions&lt;/li&gt;
&lt;li&gt;Capability to run delivery aggregators on top of the platform&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the next article, we’ll show you how to connect a restaurant management system and automate menu updates.&lt;/p&gt;




&lt;h2&gt;
  
  
  RestoApp Links
&lt;/h2&gt;

&lt;p&gt;🌐 &lt;a href="https://restoapp.org" rel="noopener noreferrer"&gt;RestoApp.org&lt;/a&gt;&lt;br&gt;
🐦 &lt;a href="https://twitter.com/restoapp_info" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; | 💬 &lt;a href="https://t.me/restoapp_community" rel="noopener noreferrer"&gt;Telegram&lt;/a&gt; | 🇷🇺 &lt;a href="https://vk.com/wall-229576548" rel="noopener noreferrer"&gt;VKontakte&lt;/a&gt; | 🎮 &lt;a href="https://discord.gg/mbT4AeBJZ6" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; | ▶ &lt;a href="https://www.youtube.com/@restoapp_org" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;br&gt;
📘 &lt;a href="https://www.facebook.com/554037384466444" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt; | 📷 &lt;a href="https://www.instagram.com/restoapp_org" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt; | 🧵 &lt;a href="https://www.threads.net/@restoapp_org" rel="noopener noreferrer"&gt;Threads&lt;/a&gt; | 🌐 &lt;a href="https://bsky.app/profile/restoapp.bsky.social" rel="noopener noreferrer"&gt;BlueSky&lt;/a&gt; | 🎵 &lt;a href="https://www.tiktok.com/@restoapp_org" rel="noopener noreferrer"&gt;TikTok&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
