<?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>Forem: FaynoSync</title>
    <description>The latest articles on Forem by FaynoSync (@faynosync).</description>
    <link>https://forem.com/faynosync</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%2F11512%2F3158ad4f-8755-4a4a-9914-fb98d7430377.png</url>
      <title>Forem: FaynoSync</title>
      <link>https://forem.com/faynosync</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/faynosync"/>
    <language>en</language>
    <item>
      <title>Team-Based Authorization in faynoSync — An Overview for Developers</title>
      <dc:creator>Serhii Kuianov</dc:creator>
      <pubDate>Mon, 08 Sep 2025 07:10:43 +0000</pubDate>
      <link>https://forem.com/faynosync/team-based-authorization-in-faynosync-an-overview-for-developers-48bk</link>
      <guid>https://forem.com/faynosync/team-based-authorization-in-faynosync-an-overview-for-developers-48bk</guid>
      <description>&lt;p&gt;Before we dive into team authorization, a quick word about &lt;strong&gt;faynoSync&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It’s a dynamic update server that lets developers and teams manage app distribution, updates, platforms, architectures, and release channels — all in one place.&lt;/p&gt;




&lt;p&gt;When your project starts growing, you’re no longer the only one deploying, testing, or publishing applications. Suddenly, you need to answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Who can upload builds?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Who can edit applications?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How do I keep different teams isolated?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where &lt;strong&gt;faynoSync’s Team-Based Authorization&lt;/strong&gt; comes into play. It provides a structured way to manage access across multiple users while keeping resources secure and isolated.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔑 Key Concepts
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Administrator
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Manages their own team.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can create, update, delete team users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Full control over passwords and permissions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Access limited to their team’s resources.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Team User
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Belongs to a single administrator.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cannot manage other users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Works only with resources explicitly permitted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Everything created belongs to their admin.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚙️ Resource Permissions
&lt;/h2&gt;

&lt;p&gt;Permissions are defined per resource type:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Applications&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Channels&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Platforms&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Architectures&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Available actions:&lt;br&gt;
&lt;code&gt;create&lt;/code&gt;, &lt;code&gt;edit&lt;/code&gt;, &lt;code&gt;delete&lt;/code&gt;, &lt;code&gt;upload&lt;/code&gt; (apps only), &lt;code&gt;download&lt;/code&gt; (apps only).&lt;/p&gt;
&lt;h2&gt;
  
  
  🧩 Example: Managing Team Users via API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a Team User
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s1"&gt;'http://localhost:9000/user/create'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Authorization: Bearer &amp;lt;jwt_token&amp;gt;'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "username": "teamuser1",
    "password": "password123",
    "permissions": {
      "apps": {
        "create": true,
        "delete": false,
        "edit": true,
        "download": true,
        "upload": false
      }
      // ... other permissions
    }
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Update Permissions
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s1"&gt;'http://localhost:9000/user/update'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Authorization: Bearer &amp;lt;jwt_token&amp;gt;'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "username": "teamuser1",
    "password": "newpassword123",
    "permissions": {
      // ... updated permissions
    }
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  📊 Resource Isolation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Team users only see resources they’re allowed to use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Each admin’s resources are completely isolated.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Admins can always see what their team creates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Different teams can have resources with the same names.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  🖥️ Using the Web Dashboard
&lt;/h2&gt;

&lt;p&gt;For those who prefer UI over API, the &lt;strong&gt;faynoSync Dashboard&lt;/strong&gt; makes team management straightforward.&lt;/p&gt;

&lt;p&gt;Below you’ll also find a few screenshots to better visualize how these features look in action. 👇&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Creating/removing team users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting or auto-generating passwords.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updating usernames and credentials.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvk7tql81cmbacf6gurn3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvk7tql81cmbacf6gurn3.png" alt="User creation" width="800" height="744"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assigning permissions with checkboxes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft4sr0fowzuoe7uaqdf9o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft4sr0fowzuoe7uaqdf9o.png" alt="Team-Based Authorization Matrix" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Team users can log in to see their permissions and available resources at a glance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lygevnrjtzz29kq5dku.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lygevnrjtzz29kq5dku.png" alt="Team user profile" width="800" height="955"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  ✅ Conclusion
&lt;/h2&gt;

&lt;p&gt;As your team scales, so does the need for granular access control.&lt;br&gt;
faynoSync’s Team-Based Authorization helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Keep teams isolated and secure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Assign precise permissions for every resource.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manage users both via API and Dashboard.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This way, you don’t just share your infrastructure — you control it.&lt;/p&gt;
&lt;h2&gt;
  
  
  How to Try faynoSync
&lt;/h2&gt;

&lt;p&gt;Follow the Getting Started guide:&lt;br&gt;
👉 &lt;a href="https://faynosync.com/docs/getting-started" rel="noopener noreferrer"&gt;https://faynosync.com/docs/getting-started&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can create your app using the REST API or the web dashboard:&lt;/p&gt;

&lt;p&gt;⚡ API source code: &lt;a href="https://github.com/ku9nov/faynoSync" rel="noopener noreferrer"&gt;https://github.com/ku9nov/faynoSync&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📦 API Docs: &lt;a href="https://faynosync.com/docs/api" rel="noopener noreferrer"&gt;https://faynosync.com/docs/api&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🖥️ Dashboard UI: &lt;a href="https://github.com/ku9nov/faynoSync-dashboard" rel="noopener noreferrer"&gt;https://github.com/ku9nov/faynoSync-dashboard&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎬 Dashboard UI demo (video): &lt;a href="https://faynosync.com/demo" rel="noopener noreferrer"&gt;https://faynosync.com/demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upload at least &lt;strong&gt;two versions&lt;/strong&gt; of your application and check for updates with a simple request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; GET &lt;span class="nt"&gt;--location&lt;/span&gt; &lt;span class="s1"&gt;'http://localhost:9000/checkVersion?app_name=appName&amp;amp;version=0.0.1&amp;amp;channel=stable&amp;amp;platform=linux&amp;amp;arch=amd64&amp;amp;owner=admin'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or in Javascript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node-fetch&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;checkUpdate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://localhost:9000/checkVersion?app_name=appName&amp;amp;version=0.0.1&amp;amp;channel=stable&amp;amp;platform=linux&amp;amp;arch=amd64&amp;amp;owner=admin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;checkUpdate&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will return information about the latest version, available updates, and changelogs for your app.&lt;/p&gt;




&lt;p&gt;If you try faynoSync, I’d love to hear your feedback — &lt;strong&gt;open an issue, suggest a feature, or star the project on GitHub&lt;/strong&gt;. Your support keeps it alive and growing 💚&lt;/p&gt;

</description>
      <category>go</category>
      <category>api</category>
      <category>opensource</category>
      <category>development</category>
    </item>
    <item>
      <title>I Built faynoSync: A Self-Hosted API for Automatic App Updates</title>
      <dc:creator>Serhii Kuianov</dc:creator>
      <pubDate>Mon, 01 Sep 2025 10:58:24 +0000</pubDate>
      <link>https://forem.com/faynosync/i-built-faynosync-a-self-hosted-api-for-automatic-app-updates-4ocg</link>
      <guid>https://forem.com/faynosync/i-built-faynosync-a-self-hosted-api-for-automatic-app-updates-4ocg</guid>
      <description>&lt;p&gt;In today’s fast-paced world of AI and software development, more and more people and companies are creating their own applications. You might publish them on platforms like Google Play, the App Store, or use GitHub Releases for desktop apps. These platforms handle versioned updates automatically—but there’s a catch: bureaucracy, registrations, and endless hoops before your app goes live.&lt;/p&gt;

&lt;p&gt;Think about it — where do you actually download apps like &lt;strong&gt;Discord&lt;/strong&gt;, &lt;strong&gt;Brave&lt;/strong&gt;, or &lt;strong&gt;Docker Desktop&lt;/strong&gt;? Usually not through app stores.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;&lt;a href="https://github.com/ku9nov/faynoSync" rel="noopener noreferrer"&gt;faynoSync&lt;/a&gt;&lt;/strong&gt; to make this simple.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is faynoSync?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;faynoSync&lt;/strong&gt; is a lightweight, open-source API server that gives you full control over your application updates. It works for desktop software, mobile apps, browser extensions, or custom binaries for metrics or monitoring.&lt;/p&gt;

&lt;p&gt;No external dependencies. Just your server, your updates, and complete control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built faynoSync
&lt;/h2&gt;

&lt;p&gt;Every language and OS has its own update tools, but they’re often non-transparent, overly complex, or hard to integrate.&lt;/p&gt;

&lt;p&gt;faynoSync is &lt;strong&gt;universal&lt;/strong&gt; — you can check for updates from any language with a centralized API and minimal setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  What faynoSync Can Do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🔓 Create public or private applications&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🔐 Support signed and unsigned builds (perfect for dev environments)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;👥 Manage team users and assign fine-grained permissions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🚀 Publish, roll back, or deactivate specific releases&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;⚠️ Mark applications as critical to notify users immediately&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🌍 Manage channels (dev, prod, nightly, stable), platforms, and architectures&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;📝 Add, edit, and display changelogs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;📊 Optionally collect and display anonymous usage statistics — see which app versions, channels, and platforms are most popular&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🛠️ Support multiple updaters such as &lt;strong&gt;Squirrel&lt;/strong&gt;, &lt;strong&gt;Electron Builder&lt;/strong&gt;, and others&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;⚡ Built with Go — fast, simple, open-source&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…and it’s only the start. More features are coming.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Try faynoSync
&lt;/h2&gt;

&lt;p&gt;Follow the Getting Started guide:&lt;br&gt;
👉 &lt;a href="https://faynosync.com/docs/getting-started" rel="noopener noreferrer"&gt;https://faynosync.com/docs/getting-started&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can create your app using the REST API or the web dashboard:&lt;/p&gt;

&lt;p&gt;⚡ API source code: &lt;a href="https://github.com/ku9nov/faynoSync" rel="noopener noreferrer"&gt;https://github.com/ku9nov/faynoSync&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📦 API Docs: &lt;a href="https://faynosync.com/docs/api" rel="noopener noreferrer"&gt;https://faynosync.com/docs/api&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🖥️ Dashboard UI: &lt;a href="https://github.com/ku9nov/faynoSync-dashboard" rel="noopener noreferrer"&gt;https://github.com/ku9nov/faynoSync-dashboard&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎬 Dashboard UI demo (video): &lt;a href="https://faynosync.com/demo" rel="noopener noreferrer"&gt;https://faynosync.com/demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upload at least &lt;strong&gt;two versions&lt;/strong&gt; of your application and check for updates with a simple request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; GET &lt;span class="nt"&gt;--location&lt;/span&gt; &lt;span class="s1"&gt;'http://localhost:9000/checkVersion?app_name=appName&amp;amp;version=0.0.1&amp;amp;channel=stable&amp;amp;platform=linux&amp;amp;arch=amd64&amp;amp;owner=admin'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or in Javascript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node-fetch&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;checkUpdate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://localhost:9000/checkVersion?app_name=appName&amp;amp;version=0.0.1&amp;amp;channel=stable&amp;amp;platform=linux&amp;amp;arch=amd64&amp;amp;owner=admin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;checkUpdate&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will return information about the latest version, available updates, and changelogs for your app.&lt;/p&gt;




&lt;p&gt;This is just an introduction. In upcoming posts, I’ll cover full functionality, integration examples, and development tips.&lt;/p&gt;

&lt;p&gt;If you try faynoSync, I’d love to hear your feedback — &lt;strong&gt;open an issue, suggest a feature, or star the project on GitHub&lt;/strong&gt;. Your support keeps it alive and growing 💚&lt;/p&gt;

</description>
      <category>go</category>
      <category>api</category>
      <category>opensource</category>
      <category>development</category>
    </item>
  </channel>
</rss>
