Features

Privacy and Data Protection

Bazaar is basically an identity provider on steroids. In addition to your identity, it also provides data storage that can be used within the context of an app. This means, a user’s data is stored in their Bazaar account instead of an app’s backend.

The right Incentives

When using a free or paid app, such as Google maps, Instagram, or Amazon Prime, it is never entirely clear what role the value of our data plays in our interactions with the app. For a Bazaar app the incentive is always to provide you a service, as it can never be to get your data, simply because your data is not stored with the application.

Benefits for Users

  • Privacy: With any app you use, you have to hope the owner takes your privacy seriously. However, when using a Bazaar app, you do not have to trust the application itself. Your data’s privacy is taken care of by Bazaar.
  • Control Over Data: Your Bazaar account lets you see and manage all data that is used by your apps. You can easily delete all data for any app without interacting with the app or their owner.
  • Data Ownership We believe your data should belong to you and with all Bazaar apps this is the case. You can download the data and do with it what you see fit.

Benefits for Developers

  • No Policy Worries: Create the app you want to create without worrying about privacy compliance. Ensuring compliance with GDPR and other policies can be complicated and intimidating. With Bazaar all backend data is under the user’s control which makes your app automatically compliant.
  • Transparency & Trust: Creating a Bazaar app signals transparency. A user knows you will not take advantage of their data which fosters trust.
  • Portability: The decoupling of apps from their data, allows you to easily import data from other apps to offer a related or better service (coming soon).

Truly Backendless

In recent years, Backend-as-a-service providers such as Firebase and Supabase have become popular. One of their main innovation was to allow direct access to the database from the frontend. This makes the development of apps feel backend-less, as all logic to access data resides in the frontend. However, since all users using the app share the same database, the developer has to set access policies in order to determine which user can access what data. With Bazaar, the backend database is not only scoped to the app, but also to the user. This makes data access policies obsolete.

Benefits for Developers

  • Simplicity: Create and deploy an app without any backend config. The only configuration you require is for the identity provider.
  • Portability: Never worry about any backend config. All your code is self-contained in the frontend/app. It can live anywhere and will just work.

Zero Running Costs

Bazaar introduces a groundbreaking approach to app development empowering developers to create without running costs. This unique offering enables developers to pursue their creative ideas, from personal hobby projects to large-scale applications, without worrying about escalating expenses.

How It Works

The key to Bazaar’s innovative model lies in its user-centric approach. When users first sign up for a Bazaar-powered app, they create a Bazaar account. Their free Bazaar plan includes generous bandwidth and data storage so users can explore any Bazaar-powered app. Users’ usage is based on their bandwidth and data storage consumption rather than the amount of apps they use. When a user wants more resources, they can upgrade to a flexible paid plan.

Benefits for Developers

  • Focus on Innovation: With running costs off the table, developers can concentrate on what they do best – creating remarkable apps.
  • Seamless Scalability: If an app gains popularity, it can scale effortlessly. The cost of scaling is borne by the users who find value in the app, making the model sustainable and fair.
  • Sustainable Hobby Projects: Developers can build and maintain their hobby projects indefinitely, without the pressure of running costs.

Benefits for Users

  • Control Over Costs: Users only pay for what they use, ensuring they invest in apps that provide the most value.
  • Transparency in Usage: The precise structure of free and paid plans offers transparency, allowing users to manage their app usage and costs effectively.
  • Data Ownership The Bazaar database-per-user-per-app architecture gives users ownership and control over their data. Users can view, export, and delete any app-associated data from their Bazaar Dashboard. They can even revoke app authorization while retaining their data.

Powerful Social Fabric

Bazaar is social from the ground up. It has a built-in notion of users and contacts which is akin to people you add to your address book. Contacts can then be connected, requiring both sides to acknowledged the status. Connected contacts can have extra permissions.

One social graph for all apps

Contacts and connected contacts can be queried by any app. This allows for meaningful features where you can share and interact with the people you care about. Since Bazaar apps only run in your Browser, your social information is not used for anything other then the apps functionality.

You are in control

Managing your contacts can only be done via the Bazaar dashboard. This means no Bazaar app can tamper with your social network.

A simple API

The social API is as simple as it gets.

// Get user info for a given handle
const user = await bzr.social.getUser({ handle: "somebody" });
// List all contacts
const contacts = await bzr.social.contacts.list();

All advanced social features like searching for users, adding or connecting a contact can only be done via a modal:

bzr.social.openModal((userId) => {
/**do something */
});
Screenshot of the Bazaar social modal with user search and contact management

NoSQL Realtime Databases

Bazaar realtime databases are document-orientated, with no need to create or enforce schemas. Database collections are lazily created, enabling you to get your apps up and running quicker.

Simple SDK

Insert a doc:

const tasksCollection = bzr.collection("tasks");
const task = { name: "Make dream apps with Bazaar" };
tasksCollection.insertOne({ task });

Read a doc:

const task = await tasksCollection.getOne("task-id");

Read the Collections docs.

Database-per-user Architecture

Bazaar employs a database architecture where each user is assigned an individual database for your app through their Bazaar account. This approach allows users manage their authorized apps, and handle their app-specific data including viewing, exporting, or deleting, through their Bazaar dashboard, thereby supporting better data privacy and ownership practices.

The per-user-per-app database model provides simplified access management. It eliminates the need for configuring access policies, as users have automatic access to their databases.

Granting access to an another user’s data can be done conveniently with the Permissions API.

Simple Authentication

Bazaar Authentication offers a straightforward and secure solution right out of the box.

Bazaar OAuth Process

Bazaar-powered apps require users to have a Bazaar account. Authentication is done via a user’s account, where they authorize their chosen apps. The authentication flow takes place in a Bazaar pop-up. Users can then manage app authorization from their Bazaar Dashboard.

Simple SDK

Create a sign-up or login request:

bzr.login();

The login method opens a login pop-up window. A user first creates a Bazaar account (or logs in to their existing Bazaar account), then authorizes your app. After authorizing your app, the pop-up window closes, and the SDK stores an access token in local storage. The user is now logged in, and a connection to the Data API is made.

Verify user login status:

bzr.isLoggedIn();

Customize your login flow by setting a callback:

bzr.onLogin(async () => {
// Custom login handling
});

Read the Auth docs.

Simplified Permissions

Leveraging Bazaar’s database-per-user architecture, users gain immediate access to their databases, bypassing the need for complex access policies. For more refined control, the Permissions API allows assigning permissions with precision.

Technical Backbone

Underneath, Bazaar Authentication utilizes the OAuth2 Authorization Code Flow with PKCE extension, ensuring enhanced security. After authorization, a JWT access token is issued. Our SDK simplifies the process, managing login requests, auth code exchanges for access tokens, token storage, and integration with users’ realtime database, creating a cohesive and secure user experience.