Team-Based Authorization in faynoSync — An Overview for Developers



This content originally appeared on DEV Community and was authored by Serhii Kuianov

Before we dive into team authorization, a quick word about faynoSync.

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

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

  • Who can upload builds?

  • Who can edit applications?

  • How do I keep different teams isolated?

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

🔑 Key Concepts

Administrator

  • Manages their own team.

  • Can create, update, delete team users.

  • Full control over passwords and permissions.

  • Access limited to their team’s resources.

Team User

  • Belongs to a single administrator.

  • Cannot manage other users.

  • Works only with resources explicitly permitted.

  • Everything created belongs to their admin.

⚙ Resource Permissions

Permissions are defined per resource type:

  • Applications

  • Channels

  • Platforms

  • Architectures

Available actions:
create, edit, delete, upload (apps only), download (apps only).

🧩 Example: Managing Team Users via API

  • Create a Team User
curl -X POST 'http://localhost:9000/user/create' \
  -H 'Authorization: Bearer <jwt_token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "username": "teamuser1",
    "password": "password123",
    "permissions": {
      "apps": {
        "create": true,
        "delete": false,
        "edit": true,
        "download": true,
        "upload": false
      }
      // ... other permissions
    }
  }'
  • Update Permissions
curl -X POST 'http://localhost:9000/user/update' \
  -H 'Authorization: Bearer <jwt_token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "username": "teamuser1",
    "password": "newpassword123",
    "permissions": {
      // ... updated permissions
    }
  }'

📊 Resource Isolation

  • Team users only see resources they’re allowed to use.

  • Each admin’s resources are completely isolated.

  • Admins can always see what their team creates.

  • Different teams can have resources with the same names.

🖥 Using the Web Dashboard

For those who prefer UI over API, the faynoSync Dashboard makes team management straightforward.

Below you’ll also find a few screenshots to better visualize how these features look in action. 👇

  • Creating/removing team users.

  • Setting or auto-generating passwords.

  • Updating usernames and credentials.

User creation

  • Assigning permissions with checkboxes.

Team-Based Authorization Matrix

Team users can log in to see their permissions and available resources at a glance.

Team user profile

✅ Conclusion

As your team scales, so does the need for granular access control.
faynoSync’s Team-Based Authorization helps you:

  • Keep teams isolated and secure.

  • Assign precise permissions for every resource.

  • Manage users both via API and Dashboard.

This way, you don’t just share your infrastructure — you control it.

How to Try faynoSync

Follow the Getting Started guide:
👉 https://faynosync.com/docs/getting-started

You can create your app using the REST API or the web dashboard:

⚡ API source code: https://github.com/ku9nov/faynoSync

📦 API Docs: https://faynosync.com/docs/api

🖥 Dashboard UI: https://github.com/ku9nov/faynoSync-dashboard

🎬 Dashboard UI demo (video): https://faynosync.com/demo

Upload at least two versions of your application and check for updates with a simple request:

curl -X GET --location 'http://localhost:9000/checkVersion?app_name=appName&version=0.0.1&channel=stable&platform=linux&arch=amd64&owner=admin'

Or in Javascript:

import fetch from "node-fetch";

async function checkUpdate() {
  const response = await fetch(
    "http://localhost:9000/checkVersion?app_name=appName&version=0.0.1&channel=stable&platform=linux&arch=amd64&owner=admin"
  );
  const data = await response.json();
  console.log(data);
}

checkUpdate();

This will return information about the latest version, available updates, and changelogs for your app.

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


This content originally appeared on DEV Community and was authored by Serhii Kuianov