Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
In this Crash Course, we'll learn the fundamentals of Jet Admin so you can start building your app today.
We'll also dive deeper into advanced concepts to help you get the maximum juice for the squeeze.
Finally, we'll build some of the most popular kinds of apps together, guiding you step by step from the square one to production-ready.
This video might be partially outdated due to product changes - we'll replace it with the fresh one soon. However, you still can use the concepts from it and apply them to the current version
In this section, you'll learn how to connect your Data to Jet Admin.
You can connect as many data sources as you need to create a centralized place for all your operations. You can integrate with anything using native integrations or custom APIs.
Use the submenu to navigate to a particular topic or start with the first one:
Data Editor is a key part of the Jet Admin App Builder. Typically you end up in Data Editor right after you connect your data source(s).
In Data Editor you can audit, edit, and refine your data before using it in the App Builder.
In Jet Academy, you'll be able to learn both the fundamentals of Jet Admin and more advanced topics through a series of short tutorial videos.
To navigate Academy, click on the topic in the menu on the left to open its contents, or get started with the most basic functions:
Glad to have you on board!
Jet Admin is an app builder that allows you to create Client Portals, Business Apps, and Internal Tools with your existing data, whether it's from databases, APIs, or Storages. You can build apps such as Onboarding apps
, Admin Panels
, Vendor portals
, CRMs
, and much more quickly and without code.
This 2-min video will explain what Jet Admin is and what you can build with it:
Connect your data: Connect Databases, business apps (Airtable, Stripe, Zendesk), Data Warehouses, Internal and external REST or GraphQL APIs, and File Storage.
Sync and Blend your data: Create a single source of truth (SSOT) that syncs to your multiple data sources (Stripe, Hubspot, Salesforce, ...).
Build App Interfaces: Drag and drop UI components (Tables, Forms, Charts, Details Images) onto Layouts (Modals, Columns, Tavs) and connect them to your data sources.
Customize your app: Design pixel-perfect components or use 50+ ready-to-use components from Marketplace.
Automate your workflow: Create multi-sequence Automation with over 30+ automation blocks and trigger them by Webhook or Schedule jobs every minute, hour, day, or month.
This 5-min video will walk you through the process of building a client portal from scratch:
This Quickstart Guide will walk you through the necessary steps for building your first app in Jet:
This short video will help you understand how to get around Data Editor and start working with your data more quickly.
Before you start working with your data, it makes sense to organize it so you can easily access the relevant parts.
This video covers the basics of sorting, filtering, working with columns, and more.
In this article, we'll review the integration with Airtable, and its characteristics and will go through the steps necessary to connect it to Jet Admin
API keys are deprecated by the end of January 2024.
Airtable's API keys stopped working and you will have to migrate to personal access tokens. Personal access tokens allow you to more securely grant API access to Airtable data.
You can connect to Airtable from the data tab on the left menu bar or from the data section within a UI component. You'll need to enter a valid personal access token, and choose a base.
To obtain your personal access token on Airtable's Developer Hub, follow the steps below:
Go to Airtable's developer hub page
Click on 'Create token'
Create a new token
Copy and save the token in a safe place.
When creating a new 'personal access token', please make sure you choose the 'data.records:write' scope if you need to view, add, edit, and delete records on Jetadmin's side.
On Jetadmin's builder side, click 'Add Resource' from the data section on the left-side menu
Choose Airtable
Click on 'Sign In to Airtable' button
Click on 'Add a base'
Choose the needed base or workspace
Click 'Grant access'
Choose the base needed
Click the 'Choose tables' button
Select/unselect the needed tables and choose a view for each table
Click the 'Add Resource' button.
After that, you need to choose how you'd like your Airtable to be integrated with Jet Admin. You can either connect directly or sync it with Jet's internal database to get extended functionality.
If you want to be able to combine your Airtable data with data from other data sources, such as Firebase, Google Sheets, or even REST API within the same tables, you should choose the "Sync" connection for Google Sheets. You can learn more about it here:
After having connected your Airtable, you'll be prompted to choose pages you want Jet Admin to generate an admin panel (CRUD pages) for.
On Airtable side, you can create different views for each table. Each view allows you to filter and sort records. In Jetadmin you can choose to use only one view for each table when creating the resource. To view all records in each table, choose the main view 'All'.
The image below will show you the differences between the main view and the filtered views:
To switch to other views for each table, follow the steps below:
Click 'Edit resource' from the resource's settings menu
Click on 'Choose tables'
Select the needed views for each table
Click 'Update resource'.
In this video, we'll learn about the very powerful field types Rollups and Lookups. We'll also go over an example of how to use them to "look into" the related table and get the information you need from there.
In this video, we'll learn about the related data – what this means and why relational databases are such a great concept. We'll also learn how to work with related data in Jet, how to set relations, and what to do with these related data sets later on.
In this video, we'll learn how to edit your data in Data Editor:
Edit particular fields
Add and delete records
Upload and download data
Once you've connected your Data Source to Jet, you can specify its settings, specify the sync intervals, see audit logs, manage collections (tables), and more:
This is the overview video on how to work with files in Jet, whether that means connecting an Airtable with files attached to records, connecting a dedicated storage such as Firebase, or using another data source.
This video explains how to change field types so that you can make sure your data is rendered in the correct format.
UI builder is a part of the App builder and allows you to assemble the UI components on the page using pre-made Drag & Drop UI components
In this video, we'll look behind the "no-code" curtain and explore how you can consolidate data from multiple data sources (Non-SQL included) using custom SQL queries.
Before diving into the features of the builder, it's important to understand the fundamental structural elements of any app you build with Jet: Pages and Overlays.
Any app you'll create with Jet will be built in the Builder mode so it's important to understand what it is and how it interacts with the user mode where your end users will be using the app
In this Crash Course section, we'll learn the fundamentals of the App builder.
App builder is a core part of Jet Admin. It allows you to assemble your UI, and layout as well as bind and transform data to create custom user flows for your app. All this is done through an intuitive Drag & Drop and Point & Click interface.
Go into the submenu to navigate to a particular topic or start with the first one:
To build any app you'll need two things: your UI and the data. But how to link or connect the two in Jet Admin? Learn in this video
In this video, we'll learn about the Field-Table binding use-case: you have an input field component and you want a value from a specific column from in a selected row of a Table to be fetched into this field
In this and the following videos, we'll cover how to bind data and components in various situations. In this video, in particular, we'll learn about the Filter-Table binding use-case: you have a filter component and you want all the inputs in it to be passed over into the Table and used to filter it.
In this video, we'll cover binding UI elements from separate pages:
You have a Table on Page 1 and an input field on Page 2 and you want, when you click on the specific row in the table to drill down into Page 2. Additionally, as you drill down, you want to "pass" a specific value from a selected record in the Table into the input field on Page 2
This video might be partially outdated due to product changes - we'll replace it with the fresh one soon. However, you still can use the concepts from it and apply them to the current version
In this video, we'll cover binding a UI element in the Modal to the UI component on the Page:
You have a Table on a Page and an input in a Modal and you want, when you click on the specific row in the table to open up the Modal. Additionally, as the Modal opens up, you want to "pass" a specific value from a selected record in the Table into the input field in the Modal
Slowly ramping up the complexity of the use-cases, now we'll look at the Table-Table binding:
You have two related tables and want, in the second Table, to dynamically show the records related to the selected (clicked) record in the first Table
In this video, we'll learn about the Form-Table binding use-case:
You have a Form and you want this form to dynamically receive the values from a selected row (a record) of a Table into the fields of this form
This video might be partially outdated due to product changes - we'll replace it with the fresh one soon. However, you still can use the concepts from it and apply them to the current version
Filters for related collections
Nested filters allow you to go through the layers of relations between collections and filter by ANY field from ANY collection (table), that's related to the original one.
In this section, we'll go over specific apps, building each use-case from scratch to the point when it's up and running.
Go to a specific one in the submenu or start from the first one:
This video might be partially outdated due to product changes - we'll replace it with the fresh one soon. However, you still can use the concepts from it and apply them to the current version
This video might be partially outdated due to product changes - we'll replace it with the fresh one soon. However, you still can use the concepts from it and apply them to the current version
This video might be partially outdated due to product changes - we'll replace it with the fresh one soon. However, you still can use the concepts from it and apply them to the current version
This video might be partially outdated due to product changes - we'll replace it with the fresh one soon. However, you still can use the concepts from it and apply them to the current version
Yes, your data is secure and is always stored by you, whether that be with your chosen data resources or on your own servers. We provide Jet Bridge that makes our architecture secure. Jet Bridge is a free and open-source app that generates an API and proxies the requests to databases and business apps. We don’t collect, copy, or host your private data on our side. Jet follows best practices to ensure that important data is only accessed by you and your users. Jet encrypts all data and credentials that go through our servers using an HTTPS connection. Jet Admin offers you the ability to use Jet Tables, which is a PostgreSQL database hosted by Jet. Jet Tables, like other top-tier PostgreSQL databases, uses best practices to keep your data secure. Using Jet Tables is the only case in which your data would be stored on Jet servers, but there is no difference between the way Jet Admin allows you to access data in Jet Tables and the way that Jet allows you to access your data in other PostgreSQL databases, so your data remains secure, regardless of which databases you choose to use. You can learn more about Jet Tables here.
Host Jet Bridge on your servers. You can place it behind your VPN, in your own VPC. We won’t get access to your data, however, you will still receive interfaces updates normally.
If your infrastructure doesn't have access to the internet, you can use on-premise on your own servers and block all network connections. You can place it behind your VPN, in your own VPC.
To prevent bad consequences for your business, Jet Admin automatically creates a backup of your interface, so you can always restore it in case of an incident. Simply push the “Recover” button at the top right corner of your screen and select what you would like to backup.
Since Jet Admin doesn’t require access to your data, you are free to host your admin’s API under DMZ or VPN network. Once you do that, your admin panel will be separated from your public network, leaving no chance for malicious attacks or remote rooting. This might be on a checklist for some large healthcare and financial companies that can be held liable for clients’ personal information. In most cases though, it is not a necessity.
The community is where you can meet, get help & support, share resources and discuss what you're working on. The community is filled with thousands of kind and friendly users – many of them experts – who are willing to help each other out.
We have only a few simple guidelines:
Be polite and kind to other members
Use the search bar to see if your topic has been discussed before
When posting questions, try to be clear and concise and write descriptive titles. If you need help with many different things, try posting them as separate topics.
Where possible, provide links (e.g. to your app), screenshots or even videos that help explain the point you are trying to make
Please be aware that everything you post in the forums is public
If you have questions that others could benefit from – try to post publicly and not privately message other members. Some of our experts and staff get a lot of DMs – bear in mind that there are many other people in the forum that may be able to help you.
Join the community here →
Check out the community’s different
In this section, you'll be able to find answers to common questions as well as more advanced troubleshooting.
To navigate FAQ & Troubleshooting, click on the topic on the left menu to open its contents.
Learn how to join our Slack workspace and access your dedicated channel.
Our Slack channels are available for Pro and Enterprise plan users, including:
Internal Tool Pro
Internal Tool Enterprise
Customer Portal Pro
Customer Portal Enterprise
Joining our workspace gives you direct access to our team. You can ask any questions related to your app in your dedicated channel.
Click the blue question mark button in the bottom-right corner.
Select Slack Channel from the support options.
Follow the instructions to join the workspace.
Your Slack email may differ from your registered email; you can enter a different email if needed.
The default channel name is jetadmin_
, but you can change it.
Once completed, you’ll be added to your specific Slack channel.
If you have any issues joining, reach out via live chat or email us at support@jetadmin.io.
After editing in the structure of the database in the third-party integration source, such as Airtable, Firebase, Xano, Supabase, postgreSQL … etc, the sync with Jetadmin might fail sometimes.
To fix this you need to Recreate Scheme.
1- In Jetadmin, open the resource that is failing to sync;
2- Click on the 3 dots button on top-left near the resource name;
3- Choose ‘recreate scheme’ from the menu;
4- Click the ‘recreate structure’ red button;
5- Wait a few seconds till the data is being imported, then click the ‘Start working with …’ blue button.
Now your resource should be synced and working fine.
If your data is not loading, there might be many potential causes for this. This might as well render differently in the UI component: the infinite load, or the error.
In this article, we'll review the most common causes of this issue and help you identify and fix the problem.
A user supposedly hasn't changed anything but started to get this error:
Solution: Disabling VPN solved the problem - this is the most common reason for such an error. After disabling it, reload the page.
Case 2 - SQL query filters
In this case, a user wanted to display a filtered collection from a custom SQL query but got the "Nothing found" message
Even though the query was correct, it didn't account for the fact that Jet handles filtering automatically, so you should not add the WHERE
clause.
Solution: omit WHERE
and only set up the inputs and reference them in the query.
If you want to duplicate your app, you can save your progress as a backup to a file, create a new app, and restore your app from a backup. Please be aware that created actions won’t be copied, you will need to add them manually.
Go to MyApp in upper right corner -> Environment -> Settings -> Download backup
After that, create a new app and go to the Environment -> Settings to restore your backup.
Please note that Actions from your original app won’t be copied
If you've added new SQL tables to your database, you will need to manually select new tables to load into JetAdmin.
Go to Data -> Your Resource Name -> Three dots -> Edit resource
Scroll down and click on "Choose Tables"
You will see a list of your tables there. You’ll need to click on checkboxes of tables that you want to add and then click on "Update resource".
If you are having trouble connecting Django to JetAdmin, you will need to check a few things:
Make sure there are no network restrictions.
Check whether your Jet Bridge is the latest version.
Check your CORS policies in Django.
If your network with Django is okay, and you are using the latest Jet Bridge version but still getting errors like this:
That means that you need to check your CORS policies in Django.
By default, there is a parameter in Jet Bridge for Django that contains CORS in settings.py called "JET_CORS_HEADERS".
It is enabled by default and filled automatically, but if your Django already has an app called “corsheaders” then it turns off. You can configure your CORS settings in the "corsheaders" app instead.
Alternatively, you can try to force "JET_CORS_HEADERS" to be set to True, but it can lead to strange effects, so we would advise trying it only as a last resort.
If you want to allow an input to only receive a certain number or text format, you can use regular expressions.
After you get your regular expression, you can input it in the validation field of your component. Click on the component in builder -> Display tab -> Validate -> Use Regular expression
You can also mention your field format in the custom validation error field for easier understanding.
Get your first internal app up and running in under 10 minutes
To insert test data into the Jet Database, first download the following provided CSV files:
Once you have downloaded the CSV files, follow the steps:
Create a new project and add Jet Table as your data source, or if you have an existing project, integrate Jet Table by navigating to Data > Add Resource.
Click Import CSV
Select the Companies CSV you downloaded
Click Import file
Follow the same process to import Deals: Data > Jet Tables > Add or Import.
After you've made the changes to your app, you can preview it to test and, if everything's right, publish it. To preview your app, click on the Preview
button at the top.
Great! Now that we're done with the Basics, we can get to the advanced functionality of Jet Admin:
For example, let's say that you want your input to receive an ID number that is structured like this: “010.124.501-55”. If you don’t know how to write regular expressions, you can simply ask any AI bot to do this for you, for example:
Jet allows you to connect and sync with 50+ data sources: business apps (Airtable, Stripe, Zendesk), Data Warehouses, Internal and external REST or GraphQL APIs, and File Storage. Once a is set up, you can utilize your data to create apps.
This guide focuses on using as the data source. Jet Table offers a quick and secure method for storing and modifying data specifically for Jet applications. It integrates the robustness of a PostgreSQL database with the user-friendly aspect of a spreadsheet interface, enabling efficient data management.
Log in to Jet Admin and create a new project. If you don't have an account, for free.
Both Client Portals and the Internal Tools are the same in their essence - they are just web or mobile apps built on Jet Admin. However, they differ from the usage perspective: end-users
of the Portal are external users, e.g. Vendors, Partners, Merchants, or Individuals, whereas end-users
of the Internal App are internal users, i.e. your organization's employees. They also differ in .
If you want to save time building your app, you can apply one of the templates that you can find on the dashboard. You can preview the templates .
For the template to become a functional app, It's crucial to correctly bind your own data and set relations between to UI components composing a template. Learn more about it in the section.
In this section you will learn how to prepare your data for creating a customer portal
You can build Portals with data from pretty much Any Data Source: Firebase, Sheets
, Airtable
, Stripe
, REST API
, and so on. We'll use Airtable in our example.
In our case, we will use two tables: Projects and Tasks. The projects table has the Link to Tasks
column and the Tasks have the Project
column in it.
Projects Table:
Tasks Table:
Next, we generate the app:
In Data, you can set up field types (Number, Text, Select, Date, Rating), define Relations between tables, pull record contents from one linked record into another, perform a calculation on Relation, or calculate the values.
Next, let's set up the field type for the Priority field. We will configure it as a Select type with predefined options: High
, Medium
, and Low
.
Click on Priority header in your table to access its settings
Choose Edit field to modify the field's properties.
Select the field type as Select. This allows you to create a dropdown menu with predefined options.
Click on Display to proceed with the visual setup.
Add predefined options for the 'Priority' field: High
, Medium
, and Low
.
Use the Link to Record field type to establish a relationship between Deals and Companies. This will enable you to link these two tables, effectively associating specific deals with respective companies.
Click on Company id column in your table to access its settings.
Choose Edit field to modify the field's properties.
Select the field type as Link to record. This option allows you to create a link between the current record and another table.
Specify the related table by selecting Company.
Once you've established a Relation using the Link to Record field type, you can pull record contents from one linked record into another, and you can perform calculations on this Relation, enabling more complex data manipulations and analyses based on the interconnected data.
Next, we will focus on extracting and inserting the Company logo into the Deals table.
Click + New Column on the right-top
Select Lookup related field
Select Company_id > Logo
Save
Discover how to utilize components to build your app's user interface
Components are prebuilt UI elements your users engage in, such as Tables
, Forms
, Buttons
. In this example, only a limited number of components are used; you can explore 50+ Components in the UI Component Library. Drag-and-drop components within Layout Columns
, Tabs
, and Modals
, facilitating the building of your app.
You'll be building an app that enables the creation and updating of Deals data. To enable this functionality, you'll add Table
, Forms
, and Modals
. Learn more about Jet UI Concept in our documentation. Additionally, if you want to implement this functionality swiftly (Create, Update, Delete flow), you can generate it in seconds using Page Templates.
Columns
are used to set the horizontal component of the layout. You can add multiple columns and resize them.
When you select the Table component, the right panel automatically updates to display the properties of the component. Components come with a wide range of properties that you can configure. Properties are accessible from other components and queries, allowing for a more integrated and dynamic user interface experience.
Click Data Source – Jet Tables and the Deals collection that you've created.
Modify the Logo column to have a circular frame and position it as the first column.
Component Binding allows the passing of values between components. In this case, we will bind the Table
and Filter
components, enabling users to filter Deals by criteria such as Name
, Priority
, and Amount
.
The final component to add is a Form component. This component will allow you to generate Forms automatically based on your Collections fields.
Every field in the Form is individually configurable: you can add or remove fields from the Form, alter the field type, rearrange the order of the fields, and change appearance.
To update a deal, the user must select the corresponding row in the Table. You can configure the first row to be selected by default in a Table
. To do this, go to the Display tab in the Table
properties and choose Select the first row by default.
Branding, color, typographic and menu
This tutorial will show how to customize the app's primary colors, typography, and menus.
The menu is a great component when you would like to implement navigation between pages.
In this section you will learn how to create a customer portal
Add actions that users can trigger
A helpful way to think about apps is through how users interact. Two elementary levels of interaction are viewing and editing data, which we built on the previous steps. But often, apps need to be able to perform custom actions with specific workflow.
Initiating a Form is a form of action. Actions such as Open Link and Show notification are native functionalities within Jet, triggering specific processes within your app.
In this tutorial, we'll set up a system to automatically send notifications to the user via email and Slack when a deal is marked as Closed Won.
Initiate the workflow when the Deal is updated, which occurs when the associated form is successfully submitted.
Add a conditional step in the workflow that checks whether the deal stage is set to Closed Won. For the conditional step, employ the 'Equals' operation using the Formula EQ({deal_stage}, 'Closed Won')
to verify if the deal stage matches the Closed Won status. The value for {deal_stage} is selected from Formula.
Send email. Add actions to send an email with the content formatted as: "Deal {0} is Closed Won"
. Here, {deal_name}
should be dynamically inserted into the email content, and its value can be selected using a formula that references the {deal_name}
field from the data source.
Show notifications. Use the same logic to implement notifications.
In this section you will learn how to link related tables for creating a customer portal
You can link different tables as long as there's a common field in both of them. In our case, we'll link by the Unit name
field.
In Jet Admin you can link tables from different Bases
Drag the Table
component and change the mock data to your own. Select the data source you've connected and the page you want to display:
Drag and Drop the Table Component to the page
Choose the Resource and the Collection
Each Unit
has many Tasks
and we want to see the list of Tasks
for a given Unit
. To create this flow, follow the steps:
Click on the Table
Click on the Filter
icon
Choose Unit ID -> ID equals
Click on the Formula
icon
Choose Units -> Selected Row -> ID
Now, let's customize our Portal:
In this section you will learn how to link set Users and Permissions for creating a customer portal
The key functionality of any Portal is that any user or group of users see and interact only with their data. In this step, we'll invite our users and set permissions to turn our Airtable app into a secure portal.
Click Share
and add the email of a user. Then we can invite this user to the existing team or create a New Team by clicking Add a new Team
. In our example, we build a portal for corporate clients, so we'll create separate teams for every company we work with.
Click on the Share
button
Paste the Email you want to send an invite to
Click on the Team
Icon
Choose Add a New
Team
Write the Name of the New Team
Click on the Create
button
In Jet Admin, Teams are the groups of users with the same permissions
Then send invites to the users.
Team Properties and User Properties are used to set the data separation in Jet Admin. For each team or user, we add a Property
that uniquely identifies a company or a client, such as domain
or email
. In our case, we use the company name:
Click on the Add Property
Choose the Name of the Property
Click on the Create
button
Set the property of the team
To be able to separate data, we need to have the property value in our data
Next, we need to filter our Portal's data by the property. Select the component you want to separate data for, proceed to filters, and set them Client field
to match Client property
what we've created.
Choose the Table
Click on the Filter
icon
Choose Client -> Client equals
Click on the Formula
icon
Choose Team Properties -> Client
Additionally, we want our Coffee Beans employees to interact only with the portal page we've created. For this, go to the Teams and set page-level permissions to allow access to the Tasks
, Tasks-edit
and the Tasks-create
pages:
Now, let's check how that works: the Beans Coffee employee that we've invited can see only their company's projects:
In this section you will learn how to set the layout for creating a customer portal
Jet Admin provides a library of pre-built UI components, such as Table
, Map
, Gallery
, or Charts
that you can drag and drop to display your data. As well as the Layout
components that are used to assemble other components on the page.
Columns
are used to set the horizontal component of the layout. You can add multiple columns and resize them.
To add columns, follow the steps:
From the Layout menu, drag and drop Columns
Drag and Drop the Tasks Table in the Right Column
Drag and Drop a Form in the Left Column
We also can change the position of the individual fields in the record view. For that, drill down into the record and drag and drop the fields you want to reassemble:
Now, let's add our Project
table and link it to the Tasks
table:
In this section you will learn how to customize your customer portal
In Jet Admin, you can customize the appearance of your Portal for better usability. Let's start with the Units
table.
Let's disable unnecessary columns and rearrange the order.
Click on the Units Table
Disable the unnecessary columns
In Airtable, field types are detected automatically, but for other data sources you might need to configure them by clicking on the column icon
Let's now set the number of displayed rows to 5, and make the first row selected by default. To do that, follow the steps:
Go to the Display Tab
Set 5 in the Rows Per Table section
Enable the Select First Row By Default option
You can change the field types to render different fields differently and customize their appearance. To do so,
Click on the Priority field
Choose Low Option
Click on the Color field
Choose the Color
In Jet Admin, you can configure and customize any component individually on any page. Let's make our record fields non-editable so that the users will be able to change them.
Click on the Unit ID field
From the menu on the right, change it to Editable
Click on the Assign To ID field
From the menu on the right, change it to View-Only
Applying similar edits to the Tasks
table and we're done with the UI customization.
Now, let's invite external users and make them interact only with their data:
In this section you will learn how to generate the app for creating a customer portal
After creating a project, you'll be prompted to start with the Blank app or your Data. Select your chosen Data Source, fill in the credentials, and finish the process.
Click on the Data Source
icon
Click on the Add Resource
icon
Choose Airtable
You can navigate through pages and create new ones in the top left tab. Now, let's pick another page:
Click on the Pages icon
Choose and Navigate to the Page
When you connect a Database, Jet Admin automatically generates an app based on the pages you selected in the previous step
Now let's test how it works by
Clicking on the Table
to select it
Clicking on a Row
to drill down to the record view
Next, let's set up the Layout:
Single relations help you fetch data from the related collections.
To illustrate how it works, let's imagine we have the Transactions
table that doesn't contain a customer's email and the Users
table that contains the customer information including the email:
And we want to display the email in the Transactions
list:
First of all, we identify how our tables are related: for each user, there are several transactions that are related to the users list by the ID and Customer ID fields:
Now, let's create a new custom column in the Transactions
table:
Then change the column type to Link to record
Now, we need to select where we'll get the user email from (a related Users
table), what field in the Users
table is used to set relations with the Transactions
table (the ID
field), and what field from the Users
table we'd like to display (the Email
field):
And the final step is to get our custom field value from the Transactions
table field that sets relations to the Users
table (the Customer ID
field):
Now, let's make UI components dynamically visible based on a rule:
In depth tutorials covering multiple topics
This part focuses on advanced Jet features such as custom HTTP, SQL queries, conditional visibility, and related fields (e.g. single relation). Let's start with the latter:
In Jet Admin, you can make certain components visible or invisible depending on the values or combination of values from your data or user attributes.
Say, we want to show two different status change buttons
depending on the status value of the selected row of the users
table:
To achieve that, let's first drop two buttons: one that changes the status of a user to "active" and the other that changes it to "inactive":
Then, we proceed to the "Activate" button's settings to the "Visible" section:
Next, we type in the condition: IF
the status
value from the selected row equals "inactive", then return true
, otherwise, return false
. Returned true
will make the component visible and false
will make it invisible:
Here's the expression: =IF(EQ(elements.users["0"].selected_item.Status, "inactive"), 1, 0)
Then we do the same for the "Deactivate" button, grabbing the "active" value from the selected row:
=IF(EQ(elements.users["0"].selected_item.Status, "active"), 1, 0)
And we get our buttons being dynamically hidden based on the status value from the selected row:
For instance, you need to make your own API request, just choose Make an HTTP request
as an operation. Let's look at an example of how to get a list of transactions. We are going to display a list of transactions in the table component with the Stripe API (you can use any API).
1. Go to the Component Settings then Add Data Resource
2. Select a resource then choose collection as Make an HTTP request
Now you are in API Query Builder. Specify endpoint
and add new customer
parameter (to return charges for the customer specified by this customer ID)
When you create a new parameter it becomes available as tokens. You can set a value for the parameter to request a list of customer's transactions.
To transform the response, use the Response Nested Keys
to specify the result of your request:
To paginate by the list of pages specify cursor pagination
:
1. Select Cusror Pagination
as Pagination
:
2. In general, Cursor pagination
is specified by next_cursor
, has_more
parameters. To parse the response we use Javascript notation. You can modify your function's return value by adding a transformer. Use the identifier data
for the return value and enter any expressions to modify the result, such as add a property or loop over the data set.
next_cursor
as data['data'][data['data'].length - 1].id
has_more
asdata['has_more']
3. Let's specify the request by providing Query Params
:
Simply click Refresh Data
button to run your request
If standard permissions are not enough and you may want to restrict access on the level of individual UI components, use in the visibility logical expression
Let's say, we need to display order total amount on Customer
table for each customer. All Orders we stored in the separate Orders
table in the SQL database.
The resultCustomers
table contains: customer_id
, photo
, name
, total_amount
columns of data for each customer.
1. Go to the Component Settings then Add Data Resource
2. Select a resource (SQL database) then choose collection as Make an SQL request
Let's write a SQL query that returns customers includes the total amount column:
Here is a list of your available tables, you can see the table columns. You can use them while writing SQL, just click on the table name and the name will be automatically added.
Simply click Update Result
button to run your SQL command.
Just close SQL Query Builder to start to customize the result table.
Explore how to customize background
To add shapes, follow the steps:
Click on the Shape
icon in the Toolbar at the top-left.
Select Rectangle
as a Shape
Drag-and-drop Rectangle
to the Canvas
Customize (resize, reshape, position,...) the Rectangle shape
using the Right sidebar:
Click on Rectangle
Update the positioning of Rectangle
Update the corner radius of Rectangle
Discover how to custmize Cards in Gallery
To customize Cards in the Gallery, follow the steps:
Click on the Gallery
Click on the Property card button in the right panel
From the dropdown menu, choose Customize with Designer
Create documents from your data right in Jet Admin
Generate documents for your Jet Admin applications with the Documint.
Send emails from a Jet app
Jet Email allows you to send emails via Action or Workflow/Automations. All emails will be sent through no-reply@jetadmin.app (unless you have set up a custom From email address in App Settings).
Use the following guide to set up emails, and specify the next operation:
Choose operation -> App built-ins
Action -> Send email
3. Specify inputs:
to – receiver email (allows only email's format)
subject – text field to specify the email subject
text – text field without markups
text (HTML) – text field with markups
The maximum limit number of emails to be sent is 10 emails per 1 minute.
Design your first custom component from scratch using Component Designer
To familiarize yourself with how Customize with Designer
works, let's build a simple design:
We'll go through the whole process of creation step-by-step.
1.1 Choose Component Type
Identify the type of component you want to create, whether a button, card or any other UI element.
1.2 Customization with Designer
Step 1: How to add shapes
Select the shape you want to utilize from the menu on the top left. In the example, we will use Rectangle and Ellipse shapes.
Step 2: How to add parameters
To add a parameter to the card, you need to use the menu on the top left. After adding a parameter you need to specify type and test value.
Step 3: How to add borders
You can add borders to the shapes or reshape them. To add borders or reshape, choose the shape and use the menu on the right.
Step 4: How to locate fields
Use the tutorial below to locate the fields for the parameters.
After creating the design, you need to bind it with the table data.
For changing the visibility of a component please follow the steps as shown below.
To check how your design will respond to different screen sizes, please follow the steps shown below. Ensure that it maintains its integrity and functionality across various devices.
Explore how to do your components responsive
Responsiveness and support of multi-screens refers to the ability of a design to adapt and display optimally across various devices and screen sizes. It ensures a seamless user experience by adjusting layout and content to accommodate different resolutions, promoting accessibility and usability.
To fit your component to different screen sizes, follow the steps:
Click to fix the width for the text component.
Go to the resizing section in the Right Sidebar.
Fix the borders for the text.
Explore how to data from Visual Builder to Component Designer
To pass data of type Image from Visual Builder to Component Designer, use the Parameters:
Click on Parameters
in Toolbar
Click on Add Parameter
in the Parameter sidebar
Click on Edit
button to rename the Parameter
Change the type of the parameter to Image
Drop a test value for the Parameter
Save the test value
To show an image in the design, follow the steps:
Click on the shape you want to add an image to.
Go to the fills on the Right Sidebar.
Click on the Image
button.
Click on the Set up with Formula
button.
Specify the formula.
Select the corresponding parameter.
Discover how to hide elements with Conditional Visibility
Hiding elements is useful for optimization, such as concealing large navigation menus on smaller screens. Conditional visibility improves user experience by showing only relevant content.
Hide elements in Component Designer using Conditional Visibility:
Click on the element you want to set conditional visibility to.
Go to the Right Sidebar.
Click on the Conditional Visibility
button.
Scroll and choose the option that fits the best for your requirements.
Dynamically change elements in Component Designer using Conditional Fill:
Click on the element you want to set the conditional fill to.
Go to the Right Sidebar.
Go to the Fill
section.
Click on the More
button to see more options.
Scroll and choose the option that fits the best for your requirements.
Discover how to pass and bind the data with elements
To pass and bind simple data with the elements, follow the steps:
Click on the Gallery
Click on the Property card
Click on the Change Data Binding
Pass the corresponding Data for each of the Custom Components.
Click Use Selected Binding
for saving.
To pass and bind data with the elements using Functions, follow the steps:
Click on the Gallery
Click on the Property card
Click on the Change Data Binding
Click on the Set up with Formula
button
Click to search for the formula – CONCAT
Choose the fields: first_name
and last_name
– you want to concatenate: CONCAT(first_name
, last_name
)
Click on the Use selected binding
for saving it
Explore how to set up Frame for Image
To set up Frame for Image – add Border
to the Rectangle
:
Select Ellipse
Click on the Add Border
button on the Right sidebar
Set the color of the border
Set the thickness of the border
Discover how to pass values to Designer
To add text to your design, follow the steps:
From the menu on the top left, click on the Text
button.
Locate the field in your design.
Add a test value to the field and save it.
To connect the text field to the parameter using the formula, follow the steps:
Click on the field you want to connect a parameter to.
Click on the Function
button.
Click on the Function
button inside the field to specify the parameter.
Choose the parameter you want to connect.
From MVPs to web apps, Jet helps you to deliver pixel-perfect apps that users will love.
Learn how to generate CRUD interface in seconds
Jet can automatically generate a user interface when creating a new page. There are several use cases that you can cover:
Record Review: allows you to view the details of a record selected from a list.
Record Update: update the data of a record chosen from the list.
Record Create: create new records using a form layout.
Dashboard: visual display of your data, incorporating KPIs and charts for a comprehensive overview.
Easily integrate custom fonts into Jet Admin using Global CSS by uploading font files, linking them, and applying them globally.
Navigate to Storage in Jet Admin.
Create a new folder for your font files (e.g., Fractul
).
Upload all the required font files into this folder.
In the example below, the font files for "Fractul" are uploaded with different styles and weights such as:
Fractul-Black.ttf
Fractul-Bold.ttf
Fractul-Italic.ttf
Fractul-Light.ttf
etc.
To get the correct file path for your font:
Click on the file in Storage.
In the details panel, click on the File Name.
This will open the file in a new tab.
The URL of this new tab is the direct path to the file, which you can use in your custom code.
Now that the font files are uploaded and you have your file paths, you can define them in Global CSS.
Navigate to App Settings in Jet Admin.
Go to Global CSS.
Paste the following CSS, adjusting the links according to the file paths you obtained:
Each font file URL should be copied directly from the file path found in Step 2. For example, if you uploaded your fonts to a folder called Fractul
, the link for Fractul-Black.ttf
would be:
Make sure to replace YOUR_FILE_PATH
with the exact file path copied from your storage.
If the font does not appear correctly, reset it by:
Going to App Settings > Global CSS.
Removing any existing font settings.
Saving and refreshing the page.
For the complete CSS code, download this file below, copy the code, and paste it into your Global CSS. Don't forget to update the file paths for each URL.
If you face any issues or need assistance, feel free to contact our support team.
In this section you will learn about Appearance Settings
In the Appearance section, you can customize the way that your app looks. This includes things like layout, colors, icons, themes, and font.
The font can be changed in the Appearance settings as well. To change it, scroll down to the Fonts section, and choose a Regular and a Headings font. JetAdmin uses Google Fonts and offers an extremely wide range of font options. To view and compare fonts more easily, look at them on the Google Fonts site. If you do want to use your custom font, click on the + Custom font button, and you will be prompted to contact us so that we can help you with your custom font request.
To change your font settings for the Sign In/Sign Up page, you need to have a custom domain set up. If you do, you can simply go to the Sign-Up page menu by clicking on the icon in the left-hand menu, and then changing the font in the menu on the right side of the page. Here you can also make other changes to appearance like customizing the background, adding a logo, or adding a custom welcome message.
Accent Color affects the highlight color for selected rows, the color of various components (e.g. buttons), and the color of the menu bar. To set the Accent Color for your app, simply go to the Appearance section in the App Settings menu and choose the color you would like to use.
The App name is the unique name of each application on Jetadmin. This feature allows you to change the app's unique name.
To change the app name, click on the URL box and rename your app with a unique name and click the "Change App URL" button.
Please note that old App URLs will stop working.
Set up custom branding and configure the menu
App settings allow you to change the look and feel of the app and configure your app's parameters. You can find it in the left black bar in the builder mode.
Click on the App Settings
Hover your mouse over the menu to open it up
You'll see seven different tabs:
Appearance - configure a color scheme and the layout of the app
Menu - configure your app's menu, create sections, and reorder the elements
App info - set up the app's name and service URLs
Custom domain - set up a custom domain for your app
Sign-up - customize the sign-up page, add your logo, favicon, etc
Features - additional features
Scripts & Styles - add global JavaScript and CSS
Most of the settings changes take effect only in the User mode, so to check the result, preview or publish your app (more on different modes here)
Learn how to easily navigate Jet Admin
Jet Admin allows you to build custom business apps such as CRMs, admin panels, and internal tools using templates
Or create the app from scratch using drag-and-drop UI components
After creating a new app, you'll automatically get into the intuitive App Builder, where you can design, build, and deploy an app with drag-and-drop components, integrate resources, manage User & Team permissions, and customize the app appearance.
Here we’ll go over all the key elements and sections that will allow you to navigate Jet much more efficiently:
Canvas
Workspace
Components
Pages
Data
App Settings
Sign in/Sign up
Automation
Preview & Share
The canvas is the main element of the App Builder, the mode you'll use to create the application.
If you need to create a new app or return to a previously created one, you can get back to the workspace from the App Builder by clicking on the button "My Apps" in the top left corner.
Basic components to work with Titles, Text, Images, Button, etс
Advanced tools to create even more custom solutions using:
iFrame - a way to embed another webpage inside of your Jet app
From the top menu of the App Builder, you can duplicate, edit the current page, or manage page settings, parameters, and queries in Page settings.
Or you can work with already connected resources — manage the integration, configure the field types, edit, delete, or create records, import and export data and create virtual collections (functionality varies based on the data source):
You can build apps with your data from pretty much Any Data Source: Firebase, Sheets, Airtable, Stripe, REST API, and so on.
Here you can set permissions, define user roles, and manage members.
You can also use Properties to set up data separation (multi-tenancy) for Client Portal use-cases
Appearance - customize colors and theme for your app
Menu - customize your app's menu in user mode
Custom domain - set up a custom domain for your app
Features - additional features
Sharing - set up the app's name and service
Scripts & Styles - set up global JavaScript and customCSS
There are three operational modes in Jet Admin:
Builder mode, where you add data sources, drag-and-drop UI components, and so on
User mode - this is the option that end users see after the app is published
Preview mode that allows you to see the app preview in a user mode without having to publish an app.
Invite members via email or Public Access, and set permissions for already invited users.
You can always look through the documentation and video tutorials, or get expert support if you find it difficult to understand some issues. We are happy to help:)
are UI elements that allow you to display and interact with data and, eventually, build a custom business app. In the UI Library, you can find pre-built UI types such as:
to organize the page structure
to display data from your collections (tables)
to visualize your data in up to 4 dimensions. It's the fastest way to create analytical reports on your data
to make your app interactive. Whether you need a user to enter an email or select an item from a dropdown, forms will get you covered.
- a pop-up that appears on the screen when an action is performed. An open modal acts like a Page, meaning you can assemble it by drag and dropping other components into it.
to build any component that’s not in the UI Library based on React, Angular, or any other framework and integrate it into the Jet Admin interface.
A is an interface element that is a constituent of an app. On the left menu in the App Builder, you can find all the Pages of the app or create a new one.
In the section of the sidebar, you can add data sources you’ll need to build your app:
From the Data section, you can go to the
You can customize the app’s appearance in the by going to App Settings.
allow you to adjust your business app’s appearance by the following settings:
builder allows you to configure the appearance of sign-in, and sign-up pages separately as well as customize the title, terms of service URL, and customer sign-up flow
The on the top menu of the app builder allows you to switch between modes and eventually publish your app.
With the button you can choose how users will access your application.