Docs

Welcome to Wappler documentation. Here you can find everything you need to know about the app, its features and how to use them. Please refer to this guide for downloading, installing, and using Wappler and its features.

About the Docs category

Welcome to Wappler documentation. Here you can find everything you need to know about the app, its features and how to use them. Please refer to this guide for downloading, installing, and using Wappl…

Apache Cordova Builder - System Checking Procedure

When it comes to Mobile App development, Wappler has all the built in tools to get you started quickly, so lets start with a System Check! To ensure the smoothest operation when publishing your great …

Apache Cordova Builder - Add or Remove Mobile App Building Platforms

Wappler places unlimited Mobile App building platforms at your fingertips, including the most popular iOS and Android. With Apache Cordova Builder you can select what platform to build your app for, w…

Framework 7 - Including the Framework on your Mobile App

All the features of Framework 7 directly accessed through you favourite visual app design tool, Done the Wappler way! To begin creating amazing mobile apps visually in Wappler using Framework 7 compo…

Framework 7 - Setup a new Mobile Project

Wappler makes it easy to begin your new Mobile Project by offering you an easy setup option to help you on your way to an exciting new Mobile App. Follow the steps outlined below and you will have yo…

Notifications - Adding and General Notifications Usage

Using the Alerts, Notifications component for page visitor event feedback We will show you how to display a notification when a form added on your page is completed and submitted successfully and tri…

Check if a Database Record Already Exists Before Inserting a New Entry

Check the data in your Database before inserting possible duplicate data Using server-side data validation from server connect you can check if a record already exists in the database. This is useful …

Server Side Validation

You can validate your forms on the server-side if you need stronger security. First create a server action, which will use your form and click Globals: In the linked page field browse to your page…

Validation - Apply Client Side Form Validation with User Feedback

Form validation options to offer client side user feedback on your form inputs You can validate your form fields using the validation options available in the properties panel, as well as add multiple…

Getting Details of the Logged In User and Binding them to your page

Personalise your clients browsing experience by knowing who they are. You can get the logged in user details by filtering the user table in your database, by the logged user ID. This gives you access…

Logout - Create a Working User Logout Button

Wappler makes Logging out users a simple step by step process In order to log users out you need to create a server action and link it to a Log Out button, when your button is clicked it performs all…

Security - Secure your Server-Side data

Wappler knows how important and sensitive server data can be and provides simple setup to ensure it can not be accessed by unauthorised users Using the security provider tools you can secure your ser…

Security - Restricting Access to Your Page

Wappler helps you easily restrict access to your pages and redirect users with insufficient privileges After you created your login page, now you will learn how to restrict access to your pages. If …

Login - Create a Working User Login Page

Wappler makes creating a Login page with a Login form simple and secure. Having a Login page is an important part of any website, we strive to make the process completely secure using the most robus…

Setting up Site Security Settings

Using the Security Provider you can define the security settings for the whole project and reuse them on all of your pages. We will go through each of the available options - from single user to dat…

Debugging Server Connect Errors

You can easily debug issues related to server-side processing such as - form not sending email, record not inserting or updating, query not showing data etc. The first thing you need to do is to open…

Sending Form Data to Email

You can send form data to email thanks to the mailer component integrated in Wappler. This is useful for contact forms, inquiry forms, reservation forms or any other form which data needs to be sent t…

Working with JSON Data

You can use JSON files on your server as a data source for your pages. First in app structure select App and add new component: Open Data: And select JSON Data Source: In the properties pane…

Delete Database Records

You can delete database records using the built in Delete Database step in server connect. We will add a delete button to an existing repeat region, which shows the records on our page - so when click…

Get Inserted Record ID

There are some cases where you need to get the inserted record ID, for example - use it in another insert step, filter a query, update some data in another table etc. In our example we will show you …

Insert Database Record

Creating an insert record form with Wappler is an easy task as Wappler generates the form for you. The first thing you need to do is to create a server action, so open the Server Connect panel: Th…

Server Side Includes (SSI)

It is very common in web development that you reuse a component on different pages, so that when you change something it is being updated everywhere. In Wappler you can create and re-use server side i…

Dynamic Sortable Table

With Wappler you can create responsive, sortable data tables. First, you need to create a server action which contains a database query which will be used as a data source. In App connect panel add n…

Applying Dynamic Paging

You can add paging to your dynamic data, using the paging generator included in Wappler. First, you need to create a server action: And add a name for it. We call it - records_paged: Right clic…

Dynamic Select Menu

Creating a dynamic select menu is really easy with Wappler. First you just need to create a server action, which pulls the dynamic action from your database. After you create the query open the App …

Filtering Database Query with an URL Parameter

If you don’t know how to define an URL parameter on your page, please check this tutorial as you will need this later. First, we need to create a server action. Open the server connect panel and clic…

Filtering Database Query with a Text Input

You can create a real-time search with Wappler - so the results will be filtered as you type! We created a database query and displayed the results on our page. You already know how to create a datab…

Formatting Dynamic Data for Client Side Display

There are different data format options, which you can use to format different data types on your page. The format options depend on the data type - text, numbers, dates etc. In order to format a dyn…

Reinstall Wappler from scratch

Sometimes you need to do a completely clean install of Wappler. You won’t be losing anything as Wappler is fully self containing and also your project preferences are stored in the project folders. Y…

Displaying Dynamic Data on your Pages

After you created your database query let’s bind the data on your page. First you need to add the server action containing your database query to your page. Select App in the App Structure and click …

Creating Database Queries

After you created your Database Connection, now it's time to setup a Database Query. The first thing we need to do is to create a new API Action (also known as Server Action). The API Actions are l…

Connecting to a Database

Wappler’s powerful visual server-side tools allow you to easily connect to your Database in a few clicks. Before you create your databse connection, make sure to setup the target(s) for your projec…

Applying a Masonry Grid

You know it can be a real problem to create a layout based on columns when you are using elements with different heights in each row. You can see that the elements are not properly aligned. This is w…

Applying a Page Preloader

You can add a preloader to your page while the page content is still loading. It can be used on both static sites and sites using dynamic data. For example it is really useful for large data sets:

Using Animations

With Wappler you can apply different animation effects to any of the elements on the page. There are two types of anymations included - inview (or onscroll) animations, and enter/leave animations. T…

Using Lightbox

You can show images and videos hosted on your server in a Lightbox. We added App Connect and Bootstrap 4 on our page, so let’s add the lightbox component on the page as well: Click the add new compon…

Slideshow Transitions

App Connect Slideshow includes two sets of transitions, which can be applied to your images - 2D transitions and 3D transitions. they can be applied to the whole slideshow or you can set specific tran…

Responsive Slideshow

We included App Connect and Bootstrap 4 on our page. Then we created a really simple page layout and we are going to insert it inside a Bootstrap 4 column. The App Connect Slideshow is a responsive sl…

Bootstrap 4 Modals

The first thing you need to do is to create the modal on your page. Right click App in the App Structure tree and open the modals category: Then select Modal: In order to be able to see the moda…

Bootstrap 4 Forms

You can quickly design your forms using Bootstrap 4 tools integrated in Wappler. In order to create a form first select where to insert it, in our example this is inside a Bootstrap 4 column: Open …

Bootstrap 4 Cards

A card is a flexible and extensible content container. It includes options for headers and footers, a wide variety of content, contextual background colors, and powerful display options. We will show…

Creating a Navbar

There are two ways of setting up a Bootstrap 4 Navbar on your page. Using the predefined navbar templates. Click the add button in Design View: Open the Headers category: You will find the dif…

Bootstrap 4 Layout Basics

Open your HTML file, and add App Connect and Bootstrap 4 frameworks to your page. Please check the How To Guide of the documentation to see how to include them. First, let’s add a container. Containe…

Removing Projects

As your Wappler project list grows, you may have the need to remove older projects. Please keep in mind that it is very easy to open a removed project from Wappler should you have the need to work on …

Switching between Projects

Once you are working with multiple projects within Wappler you may have the need to quickly switch from one project to another. Just click the project name at the top of Wappler window and the projec…

Creating a New Local Project

Wappler has a powerful project manager allowing you to get started with designing your new website as quickly as possible, from either a blank page to an existing template that might suit your needs. …

Inserting Common HTML Tags

In order to insert common HTML Tags, such as div, span, article, aside etc. you need to switch to DOM Tree panel as App Structure panel is used to display only components. We will show you how add a s…

Drag & Drop Elements

You can drag any of the elements inside App Structure. Just select the element you want to move and start dragging it in the tree: When the element which you are dragging cannot to be placed at spe…

Dynamic Attributes

Dynamic attributes in Wappler give you powerful option for dynamically binding attributes like - image sources, href attributes, names, input values etc., as well as show/hide or disable elements on t…

Defining and Using URL Parameters

Intro With Wappler you can access the values of your URL Parameters. For example you can access and use the value of myparam from the following URL: https://mysite.com/page.html?myparam=123 Definin…

Applying Responsive Images

Adding responsive images in your Bootstrap 4 layout is another easy thing to do with Wappler. First, select the element you want to insert image into, and click the add inside button (1): Click th…

Applying Margin and Padding

You can add margin or padding to any element in your Bootstrap 4 pages. Start by selecting the element (1) and scroll in the properties inspector to the Spacing options: Add the required margin or…

Adding Class or ID

You can add classes or IDs to your elements, using the properties inspector. Just select your element either in Design View (1) or in App Structure (2) and add the ID (3) and Classes (4) you need in t…

Deleting Elements

Deleting an element is really easy. Select the element in Design View and click the delete icon (1):    

Duplicating Elements

In order to duplicate an existing element on the page, just select it and click the duplicate icon (1): This duplicates the element immediately and you customize it as needed. You can see the dupli…

Working with Elements on your pages

Learn how to add, delete or duplicate elements on your page Add Elements to the Page Adding elements to your pages is a matter of couple of clicks. Starting with a blank new page, just click the blu…

Adding Bootstrap 4

Adding the Bootstrap 4 framework to all your pages. The Bootstrap 4 framework was created with rapid development and ease in mind, Wappler takes this concept to the next level by giving you the full B…

Adding App Connect

App Connect Introduction App Connect is a high performance front-end framework just as powerful as React, Angular and VueJS. App Connect however is much easier to use due to it’s custom component str…

Migrating Dreamweaver Site Definitions into Wappler

In this short Wappler tutorial we will show you how to export all your site definitions from Dreamweaver so they can be imported directly into Wappler. Your imported Dreamweaver site definitions will …

Accessing the DOM Tree

Unlimited power to users that might need access to additional attributes and properties Use the DOM Tree to explore the full structure of your pages. Selecting an item in the DOM structure will allow …

Using the CSS Styles Panel

CSS Styles visual editor with instant preview functionality for rapid design. Wappler has multiple ways to style your pages. From the App Structure properties panel using the built in pre-configured B…

Using Dynamic Attributes - Part 1: Disabling Confirm Password Field

Wappler's full potential is realised when we begin using Dynamic Data, Events, and Attributes. For this tutorial we have a form, where users enter their details. We'd like to apply dynamic attributes …

Using Dynamic Attributes - Part 2: Showing Elements Based on Condition

Dynamically show/hide HTML and Bootstrap 4 elements based on Events We'd like to hide the personal details container when the user has not agreed to the terms and conditions by selecting the checkbox.…

Using Dynamic Attributes - Part 3: Toggling Class Based on Condition

In this tutorial, we will toggle a class when a field value is not valid, and we will also show a message to the user. First, select the email field (1). This field type is set to email (2). This way…

Binding Dynamic Values to Form Inputs

In this tutorial, we’re going to look at how to bind dynamic values to your form inputs using App Connect with Wappler. On our form, we have three inputs: An input field (1), a text area (2), and a …

Wappler Shortcut Keys

List of shortcut keys used in Wappler As we develop our weekly updates we will continue to keep this list updated, so check back regularly. General Action Windows MacOS Linux New File CTRL N …

Logged User Session Name

When you setup a log in system, a session is being created by the log in script and it contains the logged user identity. This session and its value can be accessed by any other script by calling it (…

Using Session Variables

In Server Connect you can define, use and re-use Session Variables. Once you define your session variables, they become available to choose in the dynamic data picker. Defining a session variable is …

Register New User and Auto Login on Success

This was implemented in DW version but the same goes for Wappler. We insert user in the database (when he subscribes). We get current user’s data. We create a repeat using the query created in step …

Dynamically check Radio Buttons and Checkboxes

If you are using radio buttons or checkboxes in an update record form, or a details page you can easily check the active ones depending on a dynamic value. This is done thanks to the radio group and c…

Using API Data Source

In this tutorial we will show you the basics of API Data Source. We are going to connect to the popular Unsplash API to retrieve the latest photos in a nice masonry layout. This API requires an api k…

Caching API Data

Sometimes data APIs have restrictions like limits for requests per IP or hourly request limits. In cases like these, it’s useful to have data cached for your user. You can do this by using the state m…

Data Types and Binding

When you have a rich data to bind, specially one retrieved from complex APIs with the API Data Source, it is good to understand the structure of the data. Your Data Structure When you call the Data …

Swiper - Basic Options

The Swiper component in Wappler is a modern, touch-friendly slider which can be used with any content. It includes different options like 2D and 3D transitions, parallax effects, touch interactions, d…

Using Font Awesome

Wappler offers support for Font Awesome 4 and Font Awesome 5. In this tutorial you will learn how to add and use Font Awesome on your pages. Adding the Font Awesome framework Font Awesome is availab…

Using Font Awesome 5 Pro

If you purchased a license for Font Awesome 5 Pro, there are two ways of using it. Font Awesome 5 Pro from CDN First you need to authorize your domain to use the purchased Pro license. You can do thi…

API Connector components, how to use and connect REST/Curl API's

With the API Connector in Wappler, you have gained a lot of power to directly connect to API’s and fetch data or call their actions. The API Connector is based on three components: API Data Source A…

Using Cookie to Show Modal Once

If you want to show modal only on first load, or only once then cookies are the way to go. We added App Connect and Bootstrap 4 frameworks on our page. First let’s setup the cookies. Right click App(…

Filtering Database Query with Multiple Checkboxes

You can use multiple checkboxes in order to filter your database queries. In our example we already created a server action with database query which shows the products in a dynamic table. It shows a…

Dynamically Check Multiple Checkboxes

In this tutorial we will show you how to check multiple checkboxes, based on a database value. This is useful if you are using an update record form, or some details page which show multiple checkboxe…

Show a Message when Query Returns No Results

In some cases your query may return no results so it is useful to be able to show a message, telling the users no results are returned. In Wappler this can be done using the dynamic show/hide attribut…

Show Total Number of Records from a Query

We created a page, which returns records from a database query. We want to show the total number of records in a paragraph below the table: Double click inside the paragraph, to activate the edit m…

Swiper - Responsive Options

You can customize the Swiper component to show different number of slides on different screen sizes. Also you can customize the spacing between slides. We added a Swiper with slides containing images…

Using Shortcut Keys for Dynamic Events

With Wappler you can assign different Keyboard Keys as shortcuts for different dynamic events, like: controlling a slideshow, run server action, refresh data, update record, show modal etc. We will s…

Uploading Single File To Your Server

You can upload files to your server using the server side file upload tools available in Wappler. Let’s start with the upload form. We created a simple Bootstrap 4 Layout and it contains a column, so…

Inserting Uploaded File Names in a Database

Storing the uploaded file name in your database is an easy task in Server Connect. You already know HOW TO UPLOAD A FILE so this will be just an addition to it, showing how to store the uploaded file…

Adding Progress Bar to Upload Form

You already know HOW TO CREATE AN UPLOAD FORM and upload files to your server. Sometimes, for large files it is useful to have some kind of indication, that the file is uploading. The progress bar co…

Using Lazy Load for Image on Your Page

Lazy Load Component offers the so called “lazy loading” for the images on your page. This means, that when your page contains many images, you don’t have to wait for the page load them initially. The …

Lazy Load with Dynamic Data

You can use the Lazy Load Component with dynamic data. We have a dynamic masonry layout on our page, created from a database query. You can use any dynamic source of course - database, API data sourc…

Using Placeholder Image with Lazy Load

In some cases, where your images are huge in size it can be useful to use an image placeholder, while the original image is loading. In this tutorial we will show you how to use a low-quality version…

Uploading Multiple Files To Your Server

You can upload multiple files to your server using the server side file upload tools available in Wappler. Let’s start with the upload form. We created a simple Bootstrap 4 Layout and it contains a c…

Inserting Multiple File Names in a Database

You already know HOW TO UPLOAD MULTIPLE FILES TO YOUR SERVER so now we are going to show you how to insert their names or URLs to a database. Open the Server Connect panel: Select your server acti…

Show Image Preview Before Upload

When uploading images you can display a small preview thumbnail of the selected image. You can use this in two cases: 1. For single image upload You already know how to UPLOAD SINGLE IMAGE TO YOUR SE…

Navigation Align Options

You already know HOW TO CREATE A NAVBAR and in this tutorial we will take a look at the align options for the navbar items. This also applies to the Nav element (in case you are not using a navbar, bu…

Vertical Navigation

In this tutorial we will show you how to create a vertical Navigation for your site, which for example, you can place in your sidebar. We have a really simple layout - two columns, one has a width of…

Sticky Navigation on Scroll

In this tutorial we will show you how create a “sticky” Navbar for your site. What is a Sticky Menu? Sticky, navigation is basically a website menu that is not initially fixed on the top of the page …

Resize Image and Create a Thumbnail on Upload

You already know how to Upload an image to your server. Now we are going to extend the upload action with an image resize and crop functionality. First let’s add a validation to our file field, so it…

Listing Files From a Folder on Your Server

You can use a list of files as a data source on your page, so you can create dynamic lists and tables as well as dynamic slideshows and galleries without complicated database connections. First, open…

Formatting Data in Dynamic Tables

You can easily format the data in your dynamic tables created using the Bootstrap 4 Dynamic Table Generator. We’ve generated a table on our page: The Price column values are not formatted as curre…

Set Table Row Background Color with Dynamic Value

You can change the table row background color, depending on a dynamic value from your database thanks to the dynamic attributes available in Wappler. In this tutorial we will show you how to use the d…

Show Confirmation Popup when Deleting Records

You already know how to delete database records. There are cases where you want to show users a confirmation dialog, asking them to confirm deletion. This can easily be done using Wappler static even…

Responsive Fullscreen Swiper

In this tutorial we will show you how to create a fullscreen Swiper, similar to the one we created in THIS SHOWCASE. This will require us to add 4 lines of CSS through the Styles panel, but everythin…

Password Reset Functionality: Part 1

In Part 1 of Password Reset Functionality we will cover the following: Creating the request new password page User email validation Generating and sending the unique password reset link to user’s em…

Working with Current Date and Time

In Wappler there is a component called Date and Time. As its name suggests, it returns the current date and time. In this tutorial we will show you how to access it, configure and use it on your pages…

App Connect Introduction

Intro Next generation front-end framework for reactive, data-driven web sites and apps App Connect is a high performance front-end framework just as powerful as React, Angular and VueJS. App Connect …

Password Reset Functionality: Part 2

In Part 1 of Password Reset Functionality tutorial you learned how to: Create the request new password page Add user email validation Generate and send the unique password reset link to user’s email …

Nested Repeat Regions

In this tutorial we will show you how to nest database queries. This is useful when you have two separate tables, one containing your categories and another one containing your products. You can nest …

Animation Delay Options

You can create sequential animations using the delay option of the Animate component in Wappler. We added 3 images in a row on our page and we want to animate them sequentially when they enter the vi…

Min/Max Years Relative to the Current Year

You can set Min and Max years for your datepicker as static values, but you can also use dynamic value relative to current year. In our example we will set the Min year to be 5 years before current y…

Show Disabled Button with Spinner on Form Submit

It’s useful to disable the submit button of your form and show a spinner inside it, to indicate the form is being submitted. This way you can prevent duplicate submissions, if a user clicks the button…

Building Multi-Column Forms

You can easily build multi-column form layout with Wappler, using the built-in Bootstrap 4 form tools. First, let’s insert the form. We add the form inside a Bootstrap 4 column. Click the Add Inside …

Passing Values Between your Pages

Sometimes you need to pass values between different pages of your site. You can easily do this in Wappler using the State Management Component. There are several ways of doing this - for example usin…

Setting up FTP Connection

Wappler includes advanced FTP manager, which supports FTP, SFTP and FTPS. It allows you to easily connect to your FTP server and publish your files there. NOTE: If you are working locally, on a local…

Repeated... Upload Failed!

As I am going through the documentation, am always receiving an Upload Failed message. Any reasoning as to why or what action is causing?

Overlaying Text on Image

You can overlay any text over your images, using the Design Panel in Wappler. We added a Bootstrap 4 Container on our page and it contains a Row with a Column. We’d like to insert our image inside th…

Framework7 how to enable Flashlight?

Maybe this is a weird question, but is it possible to enable flashlight via Framework7 for iOS? Maybe also then Android?

Styling Bootstrap 4 Buttons

Sometimes the available Bootstrap 4 button styles may not suit your page design, so you need to customize them. That can easily be done using the Design panel in Wappler. We created our page layout a…

URL Rewriting with Wappler

URL Rewriting (also known as Routing) can greatly improve the usability and SEO of your site. It’s really easy to setup URL Rewriting in Wappler visually, without dealing with complicated .htaccess r…

Framework 7 - Create a new Content Page

Step 1: Create a Content Page: Step 2: Add Framework 7 to it: Step 3: Add F7 Page to it: Step 4: Page Content element is added, add more content under it as needed:

Creating Single Page Apps (SPA)

A single page application (SPA) is a website that re-renders its content in response to navigation actions like clicking a link, without reloading the whole page. It consists of main template and diff…

Using the Design Panel

Design panel provides you with visual tools to style your page content. You can design for different screen sizes, which creates the required styles and media queries for the selected device. Addin…

Form submitting even without reCAPTCHA ticked

Hi, I have added a reCaptcha v2 to my form, however, even when I have NOT clicked the reCaptcha my form still submits without showing an error. Am I supposed to add some validation also and if so,…

Using Bootstrap Source Files

Creating a project with Bootstrap source files Update: Although the following will work, this video will show a much easier way to do the same: https://www.youtube.com/watch?v=85tt7KwUMLo We will as…

Stripe Integration Part 1 - Customer Creation

Here is my first part in Stripe Integration These will be a bare bones implementation and I will make the assumption that the user has basic skills in creating forms, using server connect etc I real…

Stripe Integration Part 2 - Listing Customers

The process of retreiving customers from Stripe is a relatively simple process Let us start with the server Action, list_customers The process is very simple Create an API action as below, URL is: h…

Stripe Integration Part 3 - retrieving a customer object

Following on from Part 2. I have made a modification to the table listing customers featured in Part 2 and made the ID field a link as below showcustomer.php?cus=cus_EirxWeBc14NKy6 Where the str…

Stripe Integration Part 4a - The basic Payment Action - App Connect Page

This is a longer tutorial so i have split it into 2 parts dealing with the App connect and server Connect sides separately Most of the required code is available from the stripe APi documentation the…

Stripe Integration Part 4b - The Basic Payment Action - Server Connect Page

Introduction We have covered the creation of the APP connect based payment page and this tutorial follows on from that to deal with the server connect and API parts of the process Before we start, i…

Working with Arrays

The Array component in Wappler allows you to store items in arrays and manage them. Here we will show you a simple example of how to use an array in order to create a tags input, where you enter tags…

Using the Dropzone Component

Dropzone provides you with drag and drop file uploads with image previews. Adding Dropzone on your page We created a basic Bootstrap 4 Layout with a column, where we want to add the Dropzone compone…

Converting File Input to Dropzone

You can convert any file field (single AND multi) in a Bootstrap 4 Form to a Dropzone. Open the page containing your Bootsrap 4 Form with a File Field: Select the file input, then click the Make D…

Stripe Integration Part 5 - Adding shipping Details to your checkout

Introduction In Parts 4a and 4b we learned about the basics of sending an order to out checkout and collecting a Stripe Payment. This module will take this further and add shipping details to the pa…

Introduction to custom checkout module

No e-commerce tutorial can be complete without a shopping basket routine I have therefore developed a custom shopping basket based around a single Server Connect action This can be modified or used …

Custom Checkout Module Pt 2 - Server Connect Action

Welcome to Part 2 of the Custom Basket Series. The basket (empty) and product tables (few sample items) are attached as zipped .sql files at the end of this page as is the server action as a .zip f…

Mass geocoding using API

Introduction At last the long promised method of mass geocoding the wappler way no scripts involved. As this is basically a reply to a post from @mimuk i will base this tutorial around his data tab…

Correct Title and Meta Description for SPA

Loving the routing system, specifically the idea of a SPA, I had a go at being able to dynamically show the page Title and Meta Description tags. This is extremely important for SEO. Firstly, the rea…

Using Session Storage Keyed Array

This example is based on a shopping cart application using Wappler Session Storage. When the add to cart button is pressed the items are added to the storage. When the trash can is clicked, it will re…

Using the File Copy Server Action

We start with a very simple data table containing an primary key (imageid) and and image name (imagename) Each image is stored in a folder called “images1” We wish to move these images into a new …

Applying Parallax Effect to Images

You can apply a parallax effect to the images on your page. The parallax effect applied to each of your images can be different and there are 8 different effects you can choose from. Select your imag…

Adding Background Videos

You can easily add a responsive background video to a section/container of your page. It will auto scale to fill the available space and looks nice on any device. First, select the container you want…

Adding Typing Animation

You can add an animated typing effect to your pages (just as on the Wappler Homepage), using the Typed Component in Wappler. It can be added as a prefix or suffix in your headings, links or paragraphs…

Creating Desktop Apps

You can build standalone Desktop Apps with Wappler, thanks to the Electron integration. Building Desktop Apps is as easy as building a website in Wappler. Electron is a framework for creating native …

Adding Project Default Frameworks

You can select default frameworks to be included on every new page you create in your project. This can be used for Web, Mobile and Desktop Projects. Selecting Default Frameworks Click on the projec…

Creating Custom SQL Queries

You can use the Custom Query component in Server Connect in order to manually add a custom SQL query. You can define your own parameters, edit the schema and metadata and preview the results. Creati…

Creating Multi Steps Forms

Got a long form on your website? Break it up into smaller logical sections and convert it into a multi-step form easily. In this tutorial we will show you a very basic form, but you can extend it as p…

Using Time Picker with Date Picker Component

You can add a time picker in the date picker component, so the users can select the time along with the date. Enable Time Picker First select the date/date range picker on your page: Scroll down …

The recommended / best steps to load API and auto insert it to database

I need advice on the steps how to: Load API data Auto insert the data into database Load the database I don’t want to directly use the API data as output instead I want to use my database which get…

Displaying Record Details with the Data Detail Component

In some cases you don’t need to show all the details of your dynamic records on the page. For example you just want to show the product name, and then when the users click the product - more informa…

Redirecting on Login Based on User Roles

Sometimes you need to redirect users on log in, based on their roles. For example admins go to one page, while regular users go to another one. This can easily be done with a condition in the Browse…

Loop Through Database Records with the Data Iterator Component

Using the Data Iterator component you can display one record at time on your page and loop through all records, using previous, next, first, last, random, or go to specific record dynamic actions. T…

Using Set Value in Server Connect

The Set Value step in Server Connect can be useful in many cases. You can think of it as a variable where you can store any kind of static or dynamic values. These values can then be accessed in any o…

Using the Date Range Picker with Insert and Update Record

You can use the Date Range Picker component with insert or update record forms, and store the start and end dates of the selected range in separate database field. We added a date range picker in a …

Using Date Range Picker with Dynamic Values

With the Date Range Picker you can display date ranges, coming from a dynamic data source, such as a database query. This is useful for Detail Pages or Update Record pages, where you want to edit a re…

How to get an Amadeus Access token for API use

Having recently gone through the process I thought I would share my experience of how to gain a bearer token for the Amadeus API The Amadeus API generally is easy to use with primarily GET requests b…

Using OAuth2 Connector with Facebook

Overview Using the OAuth2 Connector in Wappler you can add a “social login” option to your website, so the users can directly login using their Facebook account. In this tutorial we will show you h…

Wappler's User Interface

We will guide you trough the main UI components of Wappler. Wappler’s UI is minimal, intuitive and easy to use. It consists of several main panels, needed in your workflow. The panels can be opened …

Using the File Manager

With the File Manager integrated in Wappler you can easily explore and manage your project files and folder, located in the local project folder or on the selected target. File Manager Overview To …

Version Control with Git

With the version control options in Wappler you can create a Git repository for every Wappler project you wish to keep track on. Having a repository is great way to have a good backup of all your pr…

Git Branches

Branches are multiple different contexts where work happens. Each feature, bugfix, experiment. Having them separately and easily switchable will make your workflow flexible and still very controlla…

Git Remote Repositories

With remote Repositories you can publish your work to remotes site like GitHub, GitLab, BitBucket or Microsoft Azure DevOps Also you can use Remote Git repositories not only for version control but…

How to download Wappler?

How to download Wappler? We will explain to you how to download Wappler from your profile. After you made your purchase, you can download Wappler from your account page . Navigate to the Downloa…

File Downloads with Server Connect

You can create a file download action in Server Connect, which allows you to download files from your server. You can use static or dynamic file names for the download action, so it can easily be use…

Database Single Query

You can create a database query which returns a single record. That’s really useful in cases where you filter your data and expect a single result to be returned, like retrieving the logged in user in…

Push Footer to bottom of viewport

With this example, I will show how to create a footer which stays at the bottom of the viewport unless the page content pushes it further. We start with a page that contains the normal ingredients: …

Automatic update of copyright date

With this example, I want to show a copyright notice with the year automatically adjusted. Although this is a follow on from the Push Footer to bottom of viewport tutorial, you can apply this techniqu…

Custom File Downloader with Controls and Progress Bar

You can add your own downloaders with custom controls and progress bars on your pages, using the App Connect Download Component. We created a simple page layout, containing a regular button. We wil…

Using the Autocomplete Component

The autocomplete component provides auto suggestion when entering text into a text input. This is useful when you have a dynamic list of products, countries, options etc., so you can offer your users…

Ultra fast web development with Docker in Wappler

What is Docker? You must have heard of Docker. This brand new technology allows you to run any application quickly and easy without any installation hustle. Docker empowers developers to quickly ru…

Help with frst mobile app setup

Hello guys i am testing out Wappler and can’t figure out the mobile app part. I created new project with blank template ,installed git & node and then waited at the screen showing Cordova Connectin…

Show/Hide Password on Registration

I wanted a show/hide password field on my registration form to use up a little less space and improve user experience. We basically just change the input type from password to text when clicking on an…

Web Development with Docker Part 2, Databases and Terminals

If you have not read Part 1, please go here and read it first. We have included more Docker power in the latest Wappler update. Awesome single click Database backup and range of terminals and shel…

Git Powers - Going back in time

With the latest update of Wappler, we have polished our git integration based on your feedback. Now you can more easily go back in time by resetting history or just get an old version by doing che…

wCart Tutorial part 1. Introduction

Welcome to this tutorial in which I will show you how to create a shopping cart using Wappler. Although I have touched on some styling features, most of the effort has gone into using Wappler’s State …

wCart Tutorial part 2. Database Preparation

For the wCart example we will need a database with tables for Products, Users, Orders and Order Details. To make it easier for you, you can copy the following SQL for your database. I used it to cr…

wCart Tutorial part 4. Create a Page Template

A. Introduction For our example we need to create pages for Products, Cart, Checkout and Checkout Success. It is assumed that you have created a new site, which I have called wapplercart , but can be…

wCart Tutorial part 3. Create Server Actions

A. Introduction For our Server Actions we need to prepare for Users, Products and Orders. The first two are very straight forward although for our project we will not be creating the full CRUD to kee…

wCart Tutorial part 6. Create the Products Page

Introduction This is what the Products page will look like when finished. Create Products page from the Template Load the _template.html page (1), click the Menu button (2) and select Save As (…

wCart Tutorial part 5. Add Session and Arrays to the Template

A. Introduction This is where the fun starts. If you have not read the Introduction to this Tutorial, please do so now so that you can be acquainted with Sessions and Arrays. Continuing with our temp…

wCart Tutorial part 7. Apply Add to Cart Functionality

Here we will bind values to 5 hidden text inputs (pid, product, price, qty and subtotal) so that we can update our Arrays and Session when the Add to Cart button is clicked. We will put these hidden f…

Web Development with Docker part 3: Deploy to Remote Hosts

If you have not read Part 2, please go here and read it first. In the latest Wappler update we have added the final piece in the Docker integration - Docker Remote Deploy! Now you can not only ful…

wCart Tutorial part 8. Create the Shopping Cart

This is what our page will look like when we have finished: Load the _template.html page (1), click the Menu button (2) and select Save As (3) In the pop-up, give the new file a name (1), w…

wCart Tutorial part 9. Shopping Cart Quantity Functionality

With cart.html open toggle App Connect Mode (1) , select the cell containing the quantity (2) and remove any text (3) inside the cell With the Cell (1) still selected, remove the Inner Text (2…

wCart Tutorial part 11. Checkout Functionality

For this part of the Tutorial, we need to be able to post the following variables to our database. For the Orders table we need ** OrderUserID ** OrderAmount ** OrderShipping For the OrderDetails…

wCart Tutorial part 12. Create a Printable Invoice

The aim of this part of the wCart Tutorial is to finish up with a PDF/printable invoice such as Load the _template.html page (1), click the Menu button (2) and select Save As (3) In the pop…

Unable to display Server side "API Action" data on my page

Hi Wappler-ions, I have been struggling with this, any help would be greatly appreciated. I have attached a gif for easy reference (click on the gif to see clearly). Here is what I’m doing: Create…

Docker Part 4 - Deploy in Seconds to the Cloud with Docker Machines

If you have not read Part 3, please go here and read it first. So you have built your amazing dynamic site and you need to put it live on the internet? With Docker Machines you create your live se…

wCart Tutorial part 10 Create the Checkout Page

For this part of the wCart Tutorial, we will create a page that will look like Load the _template.html page (1), click the Menu button (2) and select Save As (3) In the pop-up, give the new…

Calculating Age from Date of Birth

Usually we store users dates of birth in our database table, in a DATE field type. You can easily calculate the age of your users, using the App Connect Data Formatter component on your page. We cre…

Creating a Scroll Progress Indicator

Scroll (or Reading) Progress Bar is a nice way to show your users how far have they scrolled on your page. In this tutorial we will create a horizontal progress bar which width changes as we scroll do…

How to receive notifications with location info whenever anyone logs in

I wanted to know whenever anyone logs into a site I’ve built as a security feature (much like Wordfence does for Wordpress sites) and it’s incredibly easy with Wappler so I thought I’d give a bit back…

Problems with step 1 using stripe api and eminence tutorials

I am fairly new with Wappler and am having problems implementing the stripe create customer API step from your documents step 1 eCommerce. I have created several attempts following the steps exactly …

Trouble getting step 1 of the stripe ecommerce tutorial to work

I have followed the steps from this doc: Stripe customer integration part 1 and received this in the error log: POST /v1/customer 12/3/19, 2:01:15 PM Summary ID req_osUhhYYGb82pMs Time 12/3/19, …

Using App Connect with JavaScript Functions

In some cases it's required to read a JavaScript variable or object values and use them in App Connect. In other cases it's required to use a dynamic App Connect expression in your own custom JavaSc…

Docker & Portainer Installation Guide on Centos 7

How to install and setup container with Docker and Portainer.io UI on CentOS 7. STEP 1- we update list of all package updates from repositories. sudo yum check-update STEP 2- Download script fro…

FTP, MySQL, Server and Wappler initial setup, new to websites

The following video was made for the user just starting out, who may need help setting up their initial WHM or cPanel account. Creating an FTP user on the server Creating an initial Database and Dat…

Full Login Procedure

What was meant to be a quick video as usual was not, but this should give you a good idea of the entire creation of a user login system, encompassing Login server action - login form - unauthorised e…

Combining wcart and Stripe integration

Ok, just looking for a bit of direction here. I have setup the wCart from @ben on a site that didn’t require credit card authorization. It worked very well for what I needed. Now I am adding ecommm…

Creating a Shopping Cart with the Data Store Component

The Data Store component allows you to store and edit local data in a simple local storage driven database. You can use this component to create a shopping cart, favorite products list, task lists e…

Free Google Firebase Hosting in Wappler!

What is Google Firebase Hosting We always got many questions about hosting of your web site or app. Specially for new users hosting can be scary in the beginning. There are so many options with diff…

Introduction to App Connect Flow

What is App Connect Flow With App Connect Flow you can create client side workflows with actions to be executed, data to be retrieved and much more! All actions nicely executed one after another. U…

How to Create a Video Gallery

In this tutorial, I will show you how to create a Video Gallery using YouTube videos. When the Play button is clicked, the video will automatically run in a Bootstrap modal and when the modal is close…

Server side API versioning

Background When building a web app, the server side code and the front end code can easily be kept in sync by simply pushing both sets of code into production. However, with mobile apps, the front en…

PDO connection if you prefer not to use a prerender service

I decided for my newly created Africa Collection site that I would rather get the meta tags and other SEO tags filled with my own PDO connection because certain social media platforms and schema provi…

Add anti form spam procedures

I was receiving spam messages, which is quite an issue for my site as the email addresses from the forms get saved into the database and newsletters are sent to subscribers, so all the spam will filli…

Set_time_limit() has been disabled for security reasons

I am getting the following error after following the password reset functionality: part 1 set_time_limit() has been disabled for security reasons Is there a work around? Regards, Dave

Creating a Cookie Consent Alert

You can easily add a “We use cookies” notification to your website using the Cookie Manager and Alerts Component in Wappler. We will create a basic informational notification which tells your users th…

Using Bootstrap 4 Toasts

Toasts are lightweight notifications designed to mimic the push notifications that have been popularized by mobile and desktop operating systems. You can use the Toasts component in order to show so…

Using Argon2 Secure Hashes

Intro Using the Argon2 hashing algorithm requires a little different workflow for creating and validating the users using Security Provider. In this tutorial we will show you what’s different and ho…

Displaying a Confirmation Dialog on Form Submit

You can add a Bootstrap 4 styled confirm dialog when submitting a form, using the Flow Component and Bootbox Dialogs integrated in it. This is useful in cases like for example forms with many inputs, …

Deleting Database Records with Confirmation

You can add a Bootstrap 4 styled confirm dialog when deleting a database record, using the Flow Component and Bootbox Dialogs integrated in it. This way you can avoid accidentally deleting records. O…

Getting Started with App Connect Event Calendar

App Connect Event Calendar is a full-sized event calendar with drag & drop support and lots of customization options. It allows you to add static events or use different data sources for dynamic eve…

App Connect Calendar Dynamic Events

There are multiple dynamic events available in the App Connect Calendar such as - on date click, on event click, on event drop/move and on event resize. Each of the dynamic events returns specific d…

Using Dynamic Data in Desktop and Mobile Apps

As you know the Mobile and Desktop apps cannot run PHP/ASP/ASP.NET files, which are required to create a database connection and get data from your database. You are only allowed to use HTML files i…

SPA and PWA Boilerplate for Wappler

Today I managed to find time to start a tutorial based on the repository The first video titled “Introduction” has now been published I will try to create each of the next parts at a rate of one …

Theme Manager

Intro With the help of the Theme Manager you can fully customize Bootstrap 4 and 5 design as per to your needs. We have integrated a high speed Sass compiler in Wappler so fully theme compilation an…

How to format code in your posts

Code Formatting When pasting code in your posts, please use the following formatting options, in order to be sure your code is readable and well formatted for the rest of the users. Inline code forma…

Using Summernote WYSIWYG Editor

Summernote is a simple to configure and easy to use WYSIWYG Editor available in Wappler. You can use it to format text/content and send it to the server side for example insert/update record. Inser…

Theme Manager - Advanced Options

You already know how to customize the basic styles and appearance of your Bootstrap 4 theme, using the Theme Manager. This week we integrated an Advanced Mode, which allows you to customize every si…

API Data Source & API Action - Different settings?

HI guys, hope you can help me out with that connection problem. Using the same settings for API Datasource and API Action. API Datasource works great but API Action shows: Server returned code: 401 …

Create Record in Table via API

Hi Guys, I´ve watched all tutorials about Wappler (I think) but could not find any where is shown how to work with server side API Action to create a record in a database. Could someone help me out …

Integrating i18next framework. Translations and language detection covered

So I finally finished my i18next integration. It’s not a native integration, but you can basically copy and paste my code and it will work for you. All my i18n needs are now covered within Wappler an…

Creating Database Relations with the Database Manager

With the new Database Manager you can easily setup relations between tables. You can create a reference field and select which other table it references - the relation and foreign keys between the t…

Creating Database Connections with the Database Manager

A lot of new power comes with the new Database Manager in Wappler. You can quickly connect your project to all kind of databases you want to use in it. There is a wide range of databases that you …

Capuring status of serverconnect steps and displaying them through app connect

Hello, I have a complex action that will trigger different server side results that I’d like to capture and display on the app connect side, to the user. If I set a value in Is it possible to capture…

How to use the Amadeus API

Recently a Wappler user was trying to use the Amadeus API for their job and asked a few questions, here is a full guide on how I use the Amadeus API for anyone else in the travel / bookings sector tha…

Node.js Integration in Wappler

One of the most anticipated features is already here! Say hello to Node.js in Wappler! Getting Started To get started we need to create a project and select Node.js as a server technology. Creata …

Looking for a way to display a message when a users security session expires

I have pages secured by a Security Provider Enforcer, but I’ve noticed that a session can expire (no longer technically logged in) but the page remains open and appears normal to the user. If they do …

NodeJS FTP deploy on shared hosting with Plesk and cPanel

NodeJS requires a specific setup on your hosting, which is different than the standard Linux or Windows server where you most likely upload everything in the public_html or www folder. Set Up Site …

Creating a NodeJS project with Docker

With the new Wappler 3.0 support for NodeJS projects it is realy easy to develop and deploy them with Docker. In this guide we will show you how easy is to setup a NodeJS project with Docker in Wapp…

General API Tips & Tricks

I thought I would just add a few little tips and tricks I have found whist working with APIs Fetch Schema: If your API provider has a million security parts you need to jump through first, or if the…

Deploying your Web Sites/Apps to Heroku

With Wappler you can easily deploy your web site and apps to Heroku with a single click. What is Heroku? Heroku is a cloud platform as a service supporting several programming languages. One of the…

Creating template based pages and layout in Wappler with NodeJS

When creating a website usually you want to include common elements like header/menu and a footer on all you pages. This was possible until now using SSI (server side includes) but this technique re…

Understanding Server Connect Sessions and Usage

I was answering a user question and it turned out more informative than planned, so I have made it a doc as I have seen many people including myself initially confused by it. This is one that has caug…

Roll your own PaaS - Heroku alternative (Part 1)

In this tutorial we will create our own Platform as a Service, similar to Heroku, but on a DigitalOcean $5/month droplet. This should be the same for most VPS providers. We will use CapRover to creat…

Roll your own PaaS - Heroku alternative (Part 2)

This is part two of the Roll your own PaaS tutorial. Part 1 - Create a Droplet (VPS) Part 2 - Install & Configure CapRover 1. Setup CapRover Now that most of the hard work is done and we have…

Stripe Checkout Tutorial

The easiest way to integrate with Stripe is to use their hosted Checkout. It’s SCA compliant and regularly update with new features. It supports Apple and Google pay for compatible browsers. 1. Crea…

Sever Side Rendering with NodeJS

In this update you can use full Server Side data rendering for NodeJS! Your NodeJS template based web sites can fully empower now Server Connect for dynamic Server Side Data Rendering! What is Ser…

Applying Security to your NodeJS pages

You can apply security to your pages and redirect users who are not logged in or have no permissions to view a specific page. Security Protection with NodeJS Security Provider setup with NodeJS is …

Editing Database Data with the new Database Manager

The new Database Manager in Wappler just got more great powers! Now you can edit directly your live table data! You can choose between saving the data directly in the database or as a "change" that …

Using Partials with NodeJS

What are Partials Wappler allows you to create and reuse partials in your NodeJS Projects. Partials are useful when you want to create reusable components and include them in some of your pages. Unl…

Server Connect Dynamic Events

Mapping of Server Connect Dynamic Events with HTTP Status codes Dynamic Event Description Start when the SA starts executing. Use case: show a modal or a spinner on the Start event. Done wh…

When I try to use the new database manager I get a time out error

I was playing with the new database manager and when I try to view my data within the tool I get the following error: “Error executing query: connect ETIMEDOUT” Also, I get the following when after …

Using Bootstrap with Custom Paths

Often, when using custom Bootstrap 4 templates purchased or downloaded from a template provider you need to use custom include paths for the Bootstrap 4 css and js files. Local and CDN options availab…

Setup S3 on AWS

What is AWS S3 Amazon Simple Storage Service (Amazon S3) is an object storage service that offers industry-leading scalability, data availability, security, and performance. This means customers of …

Using S3 Connector

What is S3 Connector S3 Connector allows you to connect to AWS and Digital Ocean cloud storage services, create buckets, list/put/get/delete files, create signed URLs and more. Now as you know how …

Setup S3 on Digital Ocean Spaces

What is Digital Ocean Spaces Spaces is an S3-compatible object storage service that lets you store and serve large amounts of data. Each Space is a bucket for you to store and serve files. The free,…

Using App Connect S3 Upload

Intro App Connect S3 Upload component allows you to do client side uploads to S3 cloud storage. Unlike the Server Connect S3 Upload workflow, where it’s required to first upload the files on your se…

Setup AWS hosting with Docker

You can easily create a new server for your hosting on Amazon AWS with just a few clicks. In order to use Docker with AWS you need to have an AWS account. Creating an AWS account If you don’t have…

Adding Transitions to page elements

About Transitions Transitions are used to create a smooth animation between different states of an element. You can customize the duration, delay and the easing for your transitions. In this tutori…

Using Elastic IP with Amazon AWS

About Elastic IP Addresses An Elastic IP address is a reserved public IP address that you can assign to your Amazon AWS Docker Machine (EC2 instance) until you choose to release it. Assigning Ela…

Using Google Places Autocomplete

About Google Places Autocomplete The Place Autocomplete service is a web service that is used to provide autocomplete functionality for text-based geographic searches, by returning places such as bu…

Using Google Places Search

About Google Places Search Google Places Search lets you search for place information using a variety of categories, including establishments, prominent points of interest, and geographic locations.…

Using Server Connect Data for Server Side Rendering in NodeJS

You already know how to setup your pages to use Sever Side Rendering with NodeJS. In this tutorial we will show you how to use Server Connect data in your page meta tags, such as page title and desc…

Building SPA pages with NodeJS

A single page application (SPA) is a web site/app that re-renders its content in response to navigation actions like clicking a link, without reloading the whole page. It consists of main template a…

Creating Custom Formatters (PHP and client-side)

I have been trying to supplement the native formatters in Wappler and found that most things can be added by using custom formatters. What I found, though was the technique for this was hidden in answ…

Creating Dynamic Pages in Framework7

In this tutorial we will show you how to create dynamic pages using Framework 7. This is useful when you have a page listing your records and you want to display the record details in a details page…

Unable to create a database relation

Can someone help me and tell me what am I doing wrong? I am trying to create a very simple relation field with the Wappler DB Manager using this doc - https://docs.wappler.io/t/creating-database-relat…

Connecting to GitHub, Gitlab or BitBucket

With Wappler you can connect seamlessly your Wappler project to Github, Gitlab or BitBucket repositories. You can push and pull your local project to the selected remote repository. Creating a loca…

Creating a Wappler project based on existing Git Repository

Thanks to Wappler integration with GitHub, Gitlab or BitBucket, now It’s really easy to share Wappler projects between multiple computers or when working in a team. You already know how to Create R…

Writing Custom Modules and Formatters (NodeJS)

Writing your own Formatters Location All formatters are being placed in the extensions/server_connect/formatters folder. A single file can contain multiple formatters and you can have multiple fil…

Use a third-party Wysiwyg editor in your forms (TinyMCE Cloud) instead of Medium or Summernote

Hey everyone, I’m just writing this short tutorial to show you that you can use a third-party wysiwyg editor in your projects. Depending on your projects, as it’s not officially integrated into Wapp…

Wappler Extensibility - Writing Custom Modules and Formatters for Server Connect

Wappler opens up its extensibility powers! Now you can define your own custom modules and formatters for Server Connect. You can write your own custom code but also provide a UI definition of your …

Writing Custom Modules and Formatters (PHP)

Sometimes you want to format or transform your data in a way that is not supported with the supplied formatters included with Wappler. This topic will explain you how you can write your own modules …

Writing Custom Modules and Formatters (ASP)

Sometimes you want to format or transform your data in a way that is not supported with the supplied formatters included with Wappler. This topic will explain you how you can write your own modules …

Extending express (NodeJS)

Extending express You want to add extra middleware to express or define your own route endpoints? Here we will explain you how you can do this. Location All custom code extending express are placed…

Stripe Checkout Solution

For those who are interested in an easy and secure solution for working with Stipe that is similar to Stripe checkout, but looks much better and works with multiple products and quantities. There is a…

Google Service Account Authorization with JWT

Some of the Google API libraries require authorization using a Service Account. Thanks to the JWT authorization options added to Oauth2 Provider in Wappler now you can use your Google Service Accoun…

Using Globals in Server Connect

Overview We added new Global options in the Server Connect panel. The Globals allow you to define and re-use Database Connections and other Settings (1), Variables / Input Parameters (2) and API Ac…

Creating Reusable Actions with Server Connect Library

Overview Server Connect Library allows you to create reusable actions, which can be included in any of your API Actions: This way you can define some complex actions once, use input parameters fo…

How to get the query string parameters with NodeJS Routes

I’m trying to get the query string parameter for a Node JS page. I set up my route: I set up a parameter: When I try to select my query string - the query string option isn’t available like it …

Define Database Connection Settings per Target

Intro When working on different targets, for example development and production, they usually have different addresses, database names, usernames and passwords. With Wappler you can easily define di…

Scheduling Actions with NodeJS

Intro The Schedule options allow you to create actions that run at scheduled times. The scheduled actions run without the need of your page to be loaded in your browser. This is useful if you want t…

How to use DataTables.net

Head over to DataTables.net to pick which options you want for your data table. They have a number of configurable options including exporting, responsive tables and more. Select if you want to do…

Employee Card in 2 minutes

Ever wondered how to create a card similar to I have just finished a video where I created the card in about 2 minutes. Please have a look at Even if you do not have use for the car…

Realtime Data Update with NodeJS and WebSockets

Intro Realtime Data Updates are here! Thanks to the NodeJS and Socket.IO integration in Wappler now you can build realtime apps! WebSockets is an advanced technology that makes it possible to open …

Content Caching for Node.js with Redis

Intro Now you can empower Redis caching service with Docker and select which Node.js pages and API Actions to be cached. Then instead of processing them fully on each request, they will be cached in…

Converting Bootstrap 4 pages to Bootstrap 5

With the new integration of Bootstrap 5 (beta 1) in Wappler we also created a converter, which you can use to convert your existing Bootstrap 4 pages to Bootstrap 5. What’s changed in Bootstrap 5 B…

Using the Theme Manager with Bootstrap 5

Intro You already know how to use the Theme Manager to customize your Bootstrap 4 sites. With the integration of Bootstrap 5 in Wappler, we also updated the Theme Manager to support Bootstrap 5 as …

Connecting to Airtable API

Intro You can use the Server API Connector to connect to and pull data from Airtable. We will use this data to populate a Bootstrap table on our page. Airtable Setup There are a couple of steps you…

Start Wappler GPU disabled

On rare occasions old video card drivers or old video cards can cause Wappler to show black screen or not start at all. To fix this, you can start Wappler without GPU usage. On MAC Quit Wappler compl…

WebSockets - Realtime Messaging

Intro Thanks to the NodeJS and Socket.IO integration in Wappler now you can build apps which use real-time messaging, so you can send messages to all users, or only to specific users. Messaging Ba…

API Action Realtime Progress with WebSockets

Intro Thanks to the NodeJS and Socket.IO integration in Wappler now you can show the realtime progress of your server actions to the users. This is really useful for server actions which are doing s…

What is the difference between DB Connection in DB Manager and DB Connection in Target Database section?

I’m looking for clarity on the difference, if any, between the DB Connection in DB Manager and DB Connection in Target Database section. I am using Docker hosting and NodeJS server type. In both Devel…

Building a Real Time Chat Application

Intro Thanks to the WebSockets and NodeJS integration in Wappler you can build real-time apps. One example of what you can build is a real-time chat app. Sockets provide a real-time bi-directional …

Getting Started with Mobile Apps and Framework 7

Intro In this tutorial we will show you how to create a mobile project in Wappler and some of the basics of Framework 7 - the framework used in Wappler to build your Mobile App Layout. Creating a M…

Creating a Login Screen for Mobile Apps

Intro You can easily create a login screen for your mobile app and log users in, using Framework 7 and its components. As you know from our docs, in order to use dynamic data for your mobile apps y…

Using Materialized Views

Hello, now having the ability to use Views within Wappler (at least in Postgres) I’m wondering if adding support for Materialized Views is a viable option… It would help a lot with complex apps. (Cus…

Getting Started with Stripe Integration in Wappler

Intro Stripe is one of the top payment processing providers which allows you to create full e-commerce solutions. Thanks to the client and server-side Stripe integration in Wappler it’s now easier t…

Getting Started with Stripe Webhooks

Webhooks Intro Thanks to webhooks you can listen for events on your Stripe account so you can automatically trigger reactions. Webhooks run on the server-side, so you can run any of the available se…

Stripe Subscriptions

Intro With Stripe you can setup subscriptions and checkout pages, where your users can subscribe for your services or products. Subscriptions and Prices The first step is to setup your subscription…

Stripe Checkout with Custom Products

Intro Sometimes you have your own products database which doesn’t use products and prices defined in Stripe. You already know how to create a shopping cart using the Data Store Component and you ca…

Stripe Custom Checkout Forms

Intro You can create your own custom checkout forms for Stripe. Custom forms allow you to fully customize your checkout, branding and style of the page, while the whole payment is securely handled b…

Join Results of 2 Data Collections

Intro Using the Data Transformations options you can easily join the results of two different data sources such as - a database query and an API response, the results of 2 database queries from 2 di…

Using Data Transformations in Server Connect

Data Transformations Data Transformation options are available in Server Connect. Using them you can easily combine different data sources, add, rename or remove columns from an existing data set. …

Mobile Apps: Routing with Bootstrap

Intro Thanks to the App Connect Client Side Routing it’s possible to use routing for your mobile apps built with Bootstrap. Now you can define a single index.html file and load all your content page…

Creating Offcanvas Sidebar with Bootstrap 5

Intro You can add hidden sidebars for your web sites and apps for navigation, shopping carts, and more which appear from the left, right, or bottom edge of the viewport. You can show and hide them u…

Using Bootstrap Icons

Bootstrap Icons Bootstrap Icons is a free, high quality, open source icon library with over 1,300 icons. You can use them in any of your projects. Include Bootstrap Icons Framework In order to use …

Merge two databases. Migration data considerations

Hi @George, I am moving some of my infrastructure and with that I’ve decided to merge two databases. Any special considerations I need to take regarding the content of: wappler_migrations and wap…

Bootstrap 5 Table Generator - First Attempt

Following the Brian English’s Wappler Unwrapped - which appears to be for version 3 and BS4 - I was able to figure most of the differences of W3 & 4. As this is my first data connection, I figured …

Node newbie question (content/partials/layouts)?

Still a newbie with Node/Content/Partial/Layouts and have some questions… Where do I include items such as the local storage manager? Currently I have them in the layout page but when I try to clear…

Setting Up a Lightweight Dev Environment with NodeJS and SQLite

Intro You don’t need to install and configure any local servers to run your dynamic Wappler web app or site. You can use the powers of the integrated in Wappler NodeJS server in combination with a S…

Show or Hide Elements Conditionally

Intro You can show or hide elements on your page conditionally, i.e. when a specific condition is met. There are two ways of doing in Wappler - using a conditional region and using the dynamic show …

Sending a Value for Unchecked Checkbox on Database Insert / Update

Intro In many cases you need to use checkboxes in the forms used to insert or update data in the database. Due to the nature of the checkboxes and how they work, when a checkbox is not checked it wo…

Using the Toggle Component

Intro The тoggle component is a simple, but quite handy component. It can be used to toggle visibility, styling, classes of the elements on your pages. In this tutorial we will show you a couple of…

Getting Started with App Flows

Intro Empower full client side reusable workflows - with App Flows! Now you can define App Flows, just as you are used to do on the Server Side with Server Connect and enjoy the same powers but on c…

How to easily change the charset of your database tables with Wappler (to save emojis, and more!)

Hello there Here is a little tutorial to show you how you can easily change the charset of your database and your tables by using the terminal available in Wappler. Actually you can use the same me…

Generating an unique UUID identifier

Intro You can quickly generate an unique UUID identifier in Server Connect and use it in your API Action (Server Action) steps, where required. Generating UUID The UUID is available in the global v…

CodeceptJS tutorial - testing your site

Visual testing with CodeceptJS About visual testing How does one test if the UI being rendered appears correctly to the users or how to test if each UI element appears in the right position and siz…

[NodeJS] Real Time Private Message Example

Building Real-Time Private Messaging Service In this post, we are going to create a real-time messaging feature. So, a user can communicate and send a message to other users on the platform. Below i…

Docker Debugging with Real-Time Logs

Intro When using Docker you can view the web and database servers logs in real time. These are useful for finding problems in your app. Accessing Web and Database Servers Logs You can find the real…

Using OAuth2 Connector with Google

Overview Using the OAuth2 Connector in Wappler you can add a “social login” option to your website, so the users can directly log in using their Google account. In this tutorial, we will show you h…

Connect Google Sheets to your page

Overview In this post, we will connect our web application with Google Sheets. So, you can actually use the Sheets as a database replacement, and pull the data written on them. We will use this data…

Creating a Bootstrap 5 Navbar

Intro In this tutorial we will show you how to build a Bootstrap 5 Navbar from scratch. We will build a basic navbar with a logo and the navigation links aligned right. We will also apply a dark the…

Bootstrap Integration

Bootstrap and Wappler’s visual integration Bootstrap does not need an introduction, being the world’s most popular front-end open source toolkit, featuring a responsive grid system and extensive preb…

Updating Project Files

Intro One of the most requested features in our community has been integrated in Wappler - a project files updater. On project open it checks for updated files for all the used frameworks. You can …

Wappler docs sometimes doesn't show images

Hi, This is the 2nd time it happens (in a month), images are a dead end. Your server answers the following while fetching an image: Cannot GET /uploads/default/original/3X/1/2/12e4ee1e57a7ba40d9808f…

Updating Cordova Projects to Capacitor

Intro Wappler provides an easy way to update your existing mobile Cordova based projects to Capacitor. Updating Projects First open your existing Cordova based project: Click the Project Setting…

Setting Up a Mobile Project with Capacitor

Intro Capacitor is an open source project that runs modern Web Apps natively on iOS, Android, Electron, and Web while providing a powerful and easy-to-use interface for accessing native SDKs and nat…

Using Bootstrap 5 Placeholders

Intro Placeholders can be used to enhance the experience of your application. You can display an animated placeholder, having a similar layout to your content, while your data is still loading. The…

Connecting existing servers in Wappler for docker deployments

Introduction It is very convenient to add new production servers in Wappler for deploying your web apps directly to major hosting providers like Digital Ocean, AWS, Hetzner, Linode and Vultr - all w…

Remote File Manager for Docker

Intro You can manage your files and folders - upload, download, remove files from a remote Docker target. This is useful when you want to just upload a single file/several files or a folder with fil…

Creating a Free Server with Oracle Cloud Always Free

With Oracle Cloud you can easily get absolutely free server that can pretty much run everything you need for a basic NodeJS web site with a Database. It can be easily connected with Wappler for ful…

Using Wappler Extensions Channels for Beta Testing

Intro In Wappler Project Updater you can choose between stable and beta extensions channels. This means that by selecting the beta channel you can test Wappler extensions updates, without breaking y…

How to Reset Your Project Default Frameworks

Intro In some cases you may need to reset your project to the default frameworks - due to old files left in your project or just to make sure your project is using the latest versions of the framewo…

Using the Tagify Component

Intro The Tagify component transforms an input field into a Tags component , in an easy, customizable way, with great performance and many customizable options. Tagify provides auto suggestions when…

Custom Content for Tagify Lists

Intro You can add images to the Tagify select lists and tags, also you can add secondary text to the results in the select list. You can specify the images size and customize the secondary text. Cu…

Inserting Tagify Values into a Database

Intro You can insert the value of the Tagify component into a database. In our example we will show you how to store it in a json field. Database Setup We have a products table and each product can…

Creating Sub Tables with Database Manager

Intro NOTE: This option is currently available for NodeJS server model only. Support for other server models is coming next weeks. The sub tables in Wappler provide an easy way to create and access…

Using Nested Queries with the Database Query Builder

Intro You can access the nested data created with the help of sub tables using a single database query in your API Action. This way you don’t need complicated workflows such as using repeats and nes…

Using Multi References in the Database Manager

Intro Thanks to multi references in the Database Manager you can define many-to-many relationship between items in two database tables. With many-to-many relations an item from one collections can …

Using Tagify with Multi References

Intro Thanks to the multi reference support in Wappler you can easily insert and update your data based on many-to-many relations. In our example we created two tables and connected them with multi…

Advanced Multi Level Nested Queries with the Database Query Builder

Intro You already know how to create nested database queries in the database query builder in order to access nested data in a single database query. In this tutorial we will show you a more advanc…

Tagify - Creating New Tags and Storing them in the Database

Intro Sometimes, when using Tagify you want to be able to allow users to create new tags in addition to the ones already created and listed in Tagify. That’s useful when adding a new article or prod…

Inserting Data in Main and Sub Table using App Connect Form Repeat

Intro App Connect Form repeat makes it easy to insert or update nested data in your database tables using a single insert or update action. This way you can easily insert data in your main table as …

Using App Connect Form Repeater with Update Record Forms

Intro Form repeater can be used in update record forms in order to easily update nested data to your database table. Similar to our Insert Data tutorial - we will show you how to update a user and…

Using Global Environment Variables

Intro Environment variables are variables which values change depending on the selected environment - development, staging, production. These are useful as they are defined globally per target and t…

Change the look of input[type="file"]

Just a quick one, code only! To change the file input to something like this: Copy and paste the following codes: HTML: <div class="input-file-button-wrap"> <label for="input1" class="input-f…

Sharing Local URLs with Ngrok

Intro We’ve made it easier to share your local projects with a single click and debug requests by integrating the ngrok service in Wappler. Ngrok is a service that enables you to give external acce…

Managing Cloud Servers with Resource Manager

Intro Resource Manager lets you organize all your project related resource in a single place, from cloud servers, database servers, storage solutions, to local services*. In this tutorial we will s…

Working Modes

Intro Wappler includes several working modes - Components Edit, Text Edit, Inspect, Accessibility and Preview. In this article we will briefly explain how the different modes work and what you can d…

Using Managed Databases with the Resource Manager

Intro Managed Databases are a fully managed, high performance database cluster service. Using managed databases is a powerful alternative to installing, configuring, maintaining, and securing databa…

Using Custom Domains and SSL with Let's Encrypt and Traefik

Intro When you deploy your site you want it to be accessible under your own domain name and also secured with certificate, so that you see the lock icon in your browser and the site is accessible wi…

Managing SSH Keys with Resource Manager

Intro You can manage your SSH Keys in the Resource Manager. You can create and manage keys per cloud provider or import existing keys from the provider. Creating SSH Keys You can find all your ssh …

Purchasing a Wappler License

Purchasing a Wappler license We will explain to you how to purchase a Wappler license of the website. Know that Wappler offers a fully functional 14 days trial for free, which includes all of the f…

Introducing Wappler Wallet

Intro The Wappler Wallet functionality allows you to add money to your account, which can be used for future purchases and upcoming invoices. Using Wappler Wallet You can add money once and not wor…

Date and Time Settings for NodeJS

Intro In this tutorial we will explain the different date and time settings available for NodeJS and how to handle time zone options. Server Time Zone You can set the server time zone settings depe…

Using Local Databases in Mobile and Desktop apps

Intro You can use local SQLite database for your mobile and desktop apps. The database will be created locally on the users device initially on app start. The database will be created as defined in …

Using Capacitor Camera Plugin

Intro The Camera Plugin provides the ability to take a photo with the camera or choose an existing one from the photo album for your mobile and desktop apps. In this tutorial we will show you how to…

Light and Dark mode using bootstrap - super easy guide 🌛

Hey guys, it’s been a while since I last wrote in this amazing community, I’ve been pretty busy with family stuff and developing some complex projects, with and without Wappler. But I’ve been reading…

Bootstrap Cards

About A card is a flexible and extensible content container. It includes options for headers and footers, a wide variety of content, contextual background colors, and powerful display options. Ca…

Bootstrap Layout

Core Concept Bootstrap is a mobile first responsive design framework. This means that any styling - like setting the number of columns - in mobile view, will also apply to larger screens. This can …

Bootstrap Typography and Text

Global Settings Bootstrap sets basic global display, typography, and link styles as follows. 1. body text colour 2. link colour 3. body colour 4. native font stack that selects the best font-fam…

How to access URL params and send to a server action using url rewriting

URL rewriting and accessing the query parameters I’m going to strip away Wappler’s UI first, so you can clearly see what’s happening. Create this route: /:country/:language/product/:product_id Ho…

Working with Server Connect Array Lists

Intro The Server Connect Array List component allows you create and manipulate Array Lists easily with Server Connect actions. You can add items to an array, join multiple sources, remove and set ar…

Adding Pull To Refresh Functionality to your Mobile Apps in Framework 7

Intro Pull to refresh is a special component that can be used to run different actions, for example - refreshing the data on the page. In this tutorial we will show you how to refresh dynamic data c…

Writing Custom Formatters for App Connect

Introduction Writing your own formatters can be easily done if you have common knowledge about JavaScript. We will explain how you register your own formatters and give some samples. Formatters are r…

Writing a Component for App Connect

Introduction Components in App Connect are elements that are placed in the html dom and can be used for different tasks. The following tasks are possible with components: Acts as a data source Rend…

Using Framework7 Components

Intro Framework7 comes with a set of ready to use UI components like dialogs, popup, action sheet, popover, list views, tabs, side panels, layout grid, form elements, cards and many more. You can us…

Resources and Tips for Beginners to Wappler

Intro This Guide This will be about getting started with Wappler when coming from a non-coding background. This isn’t a tutorial on how to make a site or anything (although those are linked), more …

Wappler Extensibility - Build Custom App Connect Extensions

The next level of Wappler extensibility - App Connect for our front-end framework is here! Building custom App Connect custom components with their own dynamic attributes, events and data sources i…

Wappler Extensibility - App Connect UI Controls Reference

There are many attributes for the properties that specify how to display and where to store the chosen value. For each group of UI input options you can have multiple variables with the following s…

Writing Custom Attributes for App Connect

Introduction Custom attributes are used to use expressions to interact with the DOM element. The following attributes are included in the core: dmx-bind: bind a dynamic value dmx-class: toggle class…

Responsive Images with srcset

Intro In most cases using the “Responsive” option for images with Bootstrap works perfectly fine. However, there are some cases where you need to serve different images for different devices - one f…