Your first app
Build your first Ninox app manually by creating tables, fields, and relationships for an invoice management example.
Explore the essential steps to get started with Ninox by building your first app using a practical invoice management example. Along the way, you will learn how to create tables, add fields, set up relationships, and structure your data for real-world use.
While Ninox offers the AI assistant to help you generate your data model and app structure automatically, this guide walks you through each step manually. Building your app by hand will help you understand how Ninox apps are structured and how your data is organized. This foundation will make it easier to customize your app and use Ninox’s features effectively.
What you will build
With Ninox, you can create apps to store and organize your data and workflows. Each app is based on a database and can be customized to fit your specific needs. A well-structured app, with correctly set up tables, field types, and relationships, makes it easier to build useful and efficient views. You can always adjust your data model as your needs evolve.
In this example, you will build an app that helps you manage invoices, customers, products, and all related data. The app will include the following tables:
Invoices: stores invoices you issue
Invoice items: for line items on each invoice
Products: goods or services you sell
Customers: invoice recipients
You will also:
Set up relationships between these tables.
Use automations to copy flexible data between tables to save them as static ones.
Use logic fields to calculate totals, VAT, and due dates.
Create the app
Create your first app from workspace home, then open it on the app screen.
Open workspace home
Switch to your workspace home screen. This is where you create and open apps in the current workspace.

Start manual app creation
Select Create app manually. This opens the Create app dialog for a manual setup.
Name your app
Enter a Name for your app, such as "Invoice management". Use a clear name that matches the process or team the app supports. Ninox generates the Internal name automatically. You can change it, but this is not recommended.
Choose an icon and color
Click the icon next to the app name.
Pick an icon and color that make the app easy to recognize later. Confirm your icon and color choice.

Create the app
Click Create app. Ninox creates the app and adds it to workspace home as a new tile.
Open the new app
Open your new app from its tile on workspace home.

Ninox takes you directly to the app screen and opens the first table.
Create the tables
Create the core tables for your app before you add fields and relationships.
Start the first table
Click + Create table in the center of the screen to add a table to your app. Start with the “Invoices” table. This will hold the main invoice records.
Name the table
In the Create table diaglog enter "Invoices" in Name. Ninox generates the Internal name automatically. You can change it, but this is not recommended. Feel free to choose an icon for the table.
Turn off AI suggestions
Uncheck AI suggestions. In this guide, you define the table structure manually.
Create the table
Click Create table.
Ninox adds the “Invoices” table to the app navigation and opens it on the app screen.

Add the remaining tables
Click + Create table in the app navigation and repeat the same steps for:
“Invoice items”
“Products”
“Customers”
These four tables form the basis of the invoice management app.
Check the result
Confirm that all four tables appear in the app navigation.
At this point, your app should contain “Invoices”, “Invoice items”, “Products”, and “Customers”.
Add fields to your tables
Add the fields for each table so your app can store the right data. Let's take a look at how it generally works. Afterwards create all the fields mentioned in the following list for each table.
Start adding fields
Click + Add field in the center of the screen to create the first field in the current table. You will repeat this process for each of the four tables.
Define the field
Enter a field Name in the Add field dialog and choose the matching field Type.

Add more fields
Click Add another field to keep adding fields without closing the dialog. Continue until you have added all required fields for the current table.
Review the table columns
When you finish with Create field, Ninox shows the new fields as columns in the table. This gives you a quick check that the structure looks right.

Repeat this until all tables contain the fields listed below. Just add these fields, don’t worry about values for the choice fields or number formats. You will apply these later on.
"Invoices" table:
Invoice number (Text)
Type (Single-choice)
Creation date (Date)
Status (Single-choice)
Payment term (Single-choice)
Notes (Text)
"Invoice items" table:
Item number (Number)
Product description (Text)
Quantity (Number)
Unit price (Number)
VAT rate (Number)
"Products" table:
Product name (Text)
Product number (Text)
Short description (Text)
Detailed info (Text)
VAT (Single-choice)
Purchase price (Number)
Sales price (Number)
"Customers" table:
Customer number (Text)
Full name (Text)
Address (Multi-line text)
Email (Email)
Photo (File)
Add values to your choice fields
After you have created your table and fields, it’s time to add values to your choice fields by following these steps.
Open the form view
Click + Add record to open the form view. You can recognize choice fields by the small arrow at the end of the field, in this example, "Type", "Payment term", and "Status".

Access the quick settings
Click your first choice field, the quick settings menu appears on top of the field.

Open the quick settings
Click the gear icon. to open the quick settings.

Add the first values
Enter your first two values under Options. In this example for the "Type" field enter "Offer" and "Invoice". Optionally pick an icon and color for the options.

Add more values if needed
Click + Add value for every additional option and enter the label you want to use.
Repeat for all choice fields
Continue until all choice fields contain the values listed here:
"Invoices" table:
"Type": Offer, Invoice, Delivered
"Payment term": 1 week, 2 weeks, 30 days, 90 days
"Status": New, Sent, Paid
"Products" table:
"VAT": 0%, 7%, 19%, 20%
Check the options in the table
In the table, click a choice field to show its options.

Set up relationships
At this stage, you are ready to connect your tables so your app can work with related data.
In Ninox, you do not need to define key fields manually. Create Reference (One‑to‑many) fields and point them to the right target table.
Create these relationships:
In "Invoice items", add an "Invoices" field that links to "Invoices".
In "Invoice items", add a "Products" field that links to "Products".
In "Invoices", add a "Customers" field that links to "Customers".
Invoices and products have a many-to-many (M to N) relationship. One invoice can contain many products, and one product can appear on many invoices. Ninox supports one-to-many (1 to N) relationships directly. To represent a many-to-many relationship, use an intermediate table. Here, that table is "Invoice items". Each invoice item links to one invoice and one product, and also stores details for that combination, such as quantity, unit price, and VAT rate.
This design lets you:
Reuse products across many invoices.
Keep invoice records stable, even if product details (name, price, VAT) change later.
Add these reference fields following these steps:
Open "Invoice items"
Navigate to the "Invoice items" table. Click + Add record to open the record drawer.
Open the relationships section
Click the gear icon in the top right to open the settings panel. Select the Form tab, then scroll down and open Relationships.

Add the relationship to "Invoices"
Drag the From-one relationship field into the form view. In the From-one-relationship dialog, select the target table "Invoices".

The reference field "Invoices" appears in the form view.
Add the relationship to "Products"
Drag another From-one relationship field into the form view. In the From-one-relationship dialog, select the target table "Products". The reference field "Products" appears in the form view.
Open "Invoices"
Navigate to the "Invoices" table.
Add the relationship to "Customers"
Open Relationships again in the Form tab. Drag the From-one relationship field into the form view. In the From-one-relationship dialog, select the target table "Customers". The reference field "Customers" appears in the form view.
Now the tables are connected:
Each Invoice is linked to one Customer.
Each Invoice item is linked to one Invoice and one Product.
Double check the data model
Now it’s a good time to review what you’ve built so far in the data model.
Open the data model
Select Data model in the App navigation.
Check the tables and the relationships
Confirm that you see these four tables:
"Invoices"
"Invoice items"
"Products"
"Customers"
Confirm that the lines between the tables match the relationships you created. The arrow always points to the table on the "one" side of a one-to-many relationship.

Last updated
Was this helpful?