What is JAMstack - an introduction

by Knut Martin Tornes
 - 
|User|

JAMstack introduction

The JAMstack architecture is gaining popularity among frontend developers for its ability to provide a modern, fast, and secure web development experience.

In order to achieve better performance, developers have had to look at different ways and tools that together could increase speed and at the same time maintain a high level of security. Traditional and dynamic CMS-based websites have the disadvantage that data must be retrieved from a database or similar in order to deliver content on the websites. Using so-called reverse proxies and caches (i.e., "fast storage") such as Varnish and nginx, was one of the few options to increase performance. That is, until the JAMstack architecture (and frameworks) arrived.

(this article was originally published on the codehooks.io blog)

How to automate incoming e-mails with a restdb.io database

by Knut Martin Tornes
 - 
|Integrations| Howto|

incoming-email-automation E-mail is an important and integrated part of many systems. restdb.io has had decent support for automating outbound e-mail for a while now (more details in the restdb.io docs).

One of the new features, inbound email, opens up new possibilities for automation involving e-mail. All databases now get their own e-mail address and incoming e-mails are now stored in a collection for further processing.

In this short article, we will show you how to enable the feature together with an example of how to set up a codehook (trigger function) when the e-mail is received. We will also demonstrate how to use the new console debug output to see what's going on inside the codehook.

React in realtime

by Jon Erik Solheim
 - 
|API| Tutorials|

spash

Single page applications frameworks (SPA) are at the center stage of modern web development. Top notch web applications depends on fast and responsive behaviour in both user interface and data. Hence the popularity of frameworks like React, Angular, Vue and Ember.

This blog post shows how you can get started with React and restdb.io for development of applications with realtime data.

React is an amazing piece of technology. With it's realtime DOM manipulation and component thinking, it's just a perfect match for realtime enabled databases and frameworks like Firebase, RethinkDB, Pusher and RestDB.io.

In this blog post we'll be developing an application for displaying Nasdaq stock information.

Object relations in a NoSQL database

by Jon Erik Solheim
 - 
|User| API|

relations

Compared to a traditional relational database (SQL), a document oriented (NoSQL) database has poor or non-existent support for relations between objects (data schema). A NoSQL datastore persists and retrieves documents (often in JSON format) and any relationships between your documents is something you must implement yourself.

Without any direct support for relations, you’re stuck with the logic and maintenance of objects / relations in your application layer.

This blog post shows how you can leave the job of maintaining object / relations to a database, effectively giving you time to pick from your backlog instead of adding :)

Announcing Azure Cosmos DB support for restdb.io

by Jon Erik Solheim
 - 
|Howto| Features|

restdb love azure

As you might know, restdb.io has support for MongoDB compatible querying using a simple REST based interface. Developers love that complex database specific details are hidden and simplified in one coherent developer experience.

However, in many cases, there are good reasons for developers and data owners to have more control of and access to their own database instance.

This blog post shows how you can connect restdb.io to an Azure Cosmos DB instance.

Tutorial: Create a Google Maps Javascript plugin in restdb.io

by Jon Erik Solheim
 - 
|Tutorials|

RestDB recently announced support for developing client side Javascript plugins. Plugins lets you override and enhance existing functions in your database admin application.

Plugins are perfect tools to enrich and improve your data admin user interface with custom widgets and new functionality.

In this tutorial we'll show how you can create a Google Maps plugin widget. The plugin will display a map of a particular street address in a database.

The final result will look something like the screenshot below: final result of a google maps plugin

Tutorial: Create a multi campaign landing page with Bootstrap 4 and restdb.io

by Jon Erik Solheim
 - 
|Tutorials|

santa christmas card landing page In this blog post we'll show you how to create a multi campaign landing page using Bootstrap v4.0 and restdb.io. With the combination of a content database and campaign templates, you'll be able to quickly create nice-looking landing pages for use in campaigns or whatever.

From Excel-Hell to cloud database heaven

by Jon Erik Solheim
 - 
|Case study| Tutorials|

image

A spreadsheet is a genious invention with many uses. It is often considered the application that turned the microcomputer from a hobby for computer enthusiasts into a serious business tool. It's an awesome way to work with tabular data and to do calculations and visualize data.

Another very common use of spreadsheets is to store business data. "I created a spreadsheet with our customers and suppliers and uploaded it to Sharepoint". "I put the sales leads in a spreadsheet and shared it with you on Google Docs". These types of quick-fix spreadsheets slowly becomes permanent and starts to proliferate quickly, leading to a situation referred to as "Excel-Hell".

In many cases, the remedy for "Excel-Hell" is a database. In this article we provide an easy to follow walkthrough for transferring your spreadsheet "systems" into a modern cloud database.

Working with hierarchies in a NoSQL database

by Knut Martin Tornes
 - 
|User| Tutorials|

Hierarchies in a NoSQL database Organising information in hierarchies is something programmers have to deal with from time to time. Examples are:

  • Threaded discussions/comments
  • Addresses on a map
  • Folders and documents
  • Organisational structures
  • Storage/shelf locations in a warehouse
  • Pages on a web site
  • Link referrals

Using a NoSQL document database (or SQL for that matter), it is quite easy to create a structure to organise this type of information; for each record/document/node, you simply need a reference to the parent (except for the top node).

So what's the problem?

The main problem is that querying and retrieving the whole or parts of the hierarchy will require complex code with recursion and an unknown number of queries which can put a big load on our database. Ouch!

In this blog post we will walk through a simple solution which lets you retrieve any (or all) parts of a hierarchy (a threaded discussion) using only ONE efficient database query in restdb.io. To follow along, you can just create a new restdb database yourself. Everything is done online, you only need a modern browser.

How we created a developer friendly email campaign tool using serverless only

by Knut Martin Tornes
 - 
|Tutorials| Howto|

Serverless is more There are tons of email marketing tools on the market, the most well-known being perhaps MailChimp and Campaign Monitor. These tools have varying prices and flexibility and each one has its own fanbase and target group.

We wanted to create a simple, developer friendly email campaign tool that we could use internally for our monthly newsletter at restdb.io (it's available as a database template you can play around with).

The requirements were these:

  • Edit the emails in Markdown syntax (to save time)
  • Possibility to upload email addresses using CSV/Excel or using an API
  • Ignore duplicate emails when uploading
  • Have an unsubscribe feature
  • Track emails sent and opens in realtime

And last, but not least: Everything should be written using serverless Javascript, HTML and NoSQL.

Difficult? Yes. Doable? Certainly! Read on.

The classic Northwind database converted to the NoSQL world

by Jon Erik Solheim
 - 
|Case study| Tutorials|

northwind

This blog post uses the classical Northwind example from Microsoft to show how you can migrate from a traditional relational database to a NoSQL cloud database.

Northwind Traders Access database is a sample database that shipped with Microsoft Office suite. The Northwind database contains the sales data for a fictitious company called Northwind Traders, which imports and exports specialty foods from around the world. Developers (back in the 90's 🙌) used it to learn the MS Access product.

In the following example we will show how to:

  • Import the original SQL data files
  • Map relations between tables (collections)
  • Use the REST API to the new Northwind NoSQL database

Announcing MongoDB Atlas support for restdb.io

by Jon Erik Solheim
 - 
|User| Howto|

love-Mongodb In case you didn't know it, restdb.io is designed for use with the leading NoSQL database engine MongoDB.

restdb.io does not expose any of the details from the underlying database, hence the simplicity and speed of development that many developers love.

However, in many cases, there are good reasons for developers and data owners to control their own MongoDB instance.

We are therefore proud to announce support for external MongoDB databases.

This blog post shows how you can connect restdb.io to a MongoDB Atlas Cluster.

Email from JavaScript with Gmail and database triggers

by Jon Erik Solheim
 - 
|Tutorials| API|

gmail

This blog post shows you how restdb.io simplifies sending emails via the Gmail mail service. We'll walk through a simple code example with a database trigger (serverless codehook) and a JavaScript that uses the mail API to send an email to a user.

How to automate transactional emails with restdb.io

by Jon Erik Solheim
 - 
|Tutorials| API|

mailimage

Engaging your audience is good for business. Whether your audience are users, subscribers, companies or hot leads, you should have an automated system for keeping them happy.

Sending personal emails based on user actions is an important tool in this aspect.

You can choose from a bunch of excellent email services (APIs) today, e.g. Sendgrid, Mailchimp, Mandrill, Mailgun, Amazon and Mailjet. But there are major challenges in first grasping, and then integrate and automate these services into your application.

This blog post shows how you can automate sending of transactional email directly from a restdb.io application. No need to setup or integrate anything. There is a link to an installable template at the end of the article to get you up to speed quickly.

Host your project docs in a dynamic web database

by Knut Martin Tornes
 - 
|Howto| Tutorials|

Dynamic documentation template database

In your career as developer you've probably at some time felt guilty when the project manager asked you where the documentation is. "It's a self-documenting system", you say, trying to be smart.

What if there was a fun and simple way to write and share those docs? For all your (development) projects?

In this blogpost we'll show you how the DocHUB database template was created. It provides an easy way to create dynamic project documentation with Markdown using a restdb.io database as the content engine and the amazing Flatdoc for displaying and navigating the docs with a little Javascript magic.

The template has been very popular and has been installed many times by our users. If you're not into coding, you can of course just install it and use it as is. Otherwise, read on (and learn).

Send mail from your application

by Jon Erik Solheim
 - 
|Howto| Features| API|

mail Yes, your restdb.io database can now send email.

A simple REST endpoint on your database makes sending email from your application a breeze. A nice responsive HTML email template makes your application emails look great, even on mobile devices.

Chop your logs with capped collections

by Jon Erik Solheim
 - 
|User| Howto| Tutorials|

log Your database size is out of control, and collections are growing crazy fast.

You desperately need some automagical way to limit collection sizes to contain only relevant data, and chop off garbage data.

Relax, this is exactly what you can accomplish with a background JavaScript that caps collection data to a specific limit.

This blog post will show you how.

Hook up with Mailgun

by Jon Erik Solheim
 - 
|Tutorials| API|

We'll soon be entering 2017. And Email is still around.

This blog post shows how you can use a "serverless" Javascript Codehook to send email to people from a web page.

In this example you’ll learn how to use:

  • Mailgun API to send the actual email message
  • Handlebars HTML email template
  • Pages and Codehooks

Are you ready to learn some fun and useful stuff?

Taking reuse to a new level - introducing the restdb.io database template catalog

by Knut Martin Tornes
 - 
|User| Features|


Boiler plates and HTML templates are very popular among developers. With restdb.io database/app templates, we want to take reuse to a completely new level.

A few months ago, we introduced the snapshot functionality for restdb.io databases. A simple click and a complete clone of a database with schema, REST API, HTML pages and setup would be created. Perfect for development staging, testing, reuse and sharing.

We are now introducing a template catalog where we are sharing various types of database applications you can install directly into your account. You can use these templates to learn from, as a starting point for a new solution or just use them right out of the “box”.

Serverless "cron" jobs with JavaScript Codehooks

by Jon Erik Solheim
 - 
|Tutorials| API|

Crontab is a well known workhorse from the Unix and Linux world. 

The crontab is a system that lets you run commands on a regular schedule. Crontab stands for “cron table”, because it uses the job scheduler cron to execute tasks; cron itself is named after “chronos,” the Greek word for time.

Using the Crontab system, restdb.io can invoke a Codehook. A Codehook is a JavaScript function that can access your database or any other network resource.

Combining Crontab and Codehooks puts you in control. It lets you build a more versatile and advanced data backend for your application.

This blog post shows how to get started creating your own Crontab jobs in restdb.io.

Next on your TODO: Go React native with restdb.io and Auth0

by Jørgen Tvedt
 - 
|Howto| Integrations| Tutorials|


Native apps for IOS and Android provide developers with options, performance and styling beyond the capabilities of the browsers. Up until recently, however, this meant learning and dealing with bespoke programming languages and SDKs. Fortunately, react-native have come to the rescue, offering a familiar JavaScript programming and standardized components for the major platforms.

Building a fully functional react-native app with persistence and authentication is surprisingly easy. Using restdb.io for cloud hosted data and Auth0 for user authentication, you get lots of features right out of the box. Follow the steps in this post and you’ll be up and running in no time.

Stay in the loop with Codehooks and Slack

by Jon Erik Solheim
 - 
|Integrations| Features| Tutorials| API|

The new restdb.io feature, Codehooks,  lets you execute JavaScripts directly in your database.

This feature opens up an array of cool scenarios for your application.  One of them is to integrate your database with slack.com.

Slack seems to be every team’s favorite collaboration platform now. If you’re not using this great tool already, I would suggest you give it a try. It can practically eliminate the need for sending internal (non-important) emails, and introduces a more human touch to your team information flow.

That’s why it makes sense to let your database talk to Slack, instead of you logging on to your database admin, all the time, to see what’s going on.

This blog post shows you how you can create a JavaScript Codehook to feed your Slack with important stuff that happens inside your database.

You shall not pass - without a JSON Web Token

by Jon Erik Solheim
 - 
|User| Howto| API|


Accessing cloud data sources from JavaScript using AJAX and JSON is at the core of so many applications. There are several complicated approaches and there is JSON Web Tokens.

Thousands of developers have chosen to run their Authentication and Backends from cloud providers for one reason. Simplicity.

Enter JSON Web Tokens, Auth0 and restdb.io. Auth0 lets you set up a world class authentication system in front of your application - in 10 minutes. By using the JSON Web Tokens and the JavaScript API from restdb.io, your data API is easily protected.

After all, your application needs 100% of your attention on the core features, which is everything that happens between authentication and the data store.

You'll find a link to a working application example at the end of this article.

DevOps nirvana: Roll your own low-cost realtime server monitoring with Bash, Javascript and NoSQL

by Jon Erik Solheim
 - 
|Howto| Tutorials| API|

There are plenty of excellent tools to monitor servers in real-time (New Relic, LogicMonitor). These products have tons of features and often costs more than you are (eagerly) willing to pay. Maybe you just need something simple or something custom that you want to keep an eye on in a dashboard. Perhaps the Dev in you is bigger than the Ops? In any of those cases, this article is for you.

We will show how you can use a pre-made restdb.io database template to create your own DevOps server monitoring dashboard with JavaScript, Google Charts and Bash shell scripts. The setup is simple and will only take you a few minutes to try out.

Instant cloud apps with Snapp templates

by Knut Martin Tornes
 - 
|User| Howto| Features|


We have previously written blog posts with source code and plenty of examples of how to set up backends, web sites and blogs using a restdb.io database (see restdb.site).  

However, even though we provided detailed steps on how to set everything up, we felt the barriers was still there for developers to get going. We needed a way to share our examples without requiring people to set everything up themselves, a kind of snapshot or clone of a complete solution.

Meet our latest feature:  Snapps

Create a technical blog with Markdown and restdb.io in 39 lines of code

by Knut Martin Tornes
 - 
|Howto| Features| Tutorials|


We've just added two-way support for using Markdown. Any text field in a restdb.io database record can now easily be edited using the integrated Markdown editor and the built-in webserver of every restdb.io database can render the text as perfect HTML using the #markdown helper tag.

In this blog post we describe how we set up a restdb.io database to power a simple blog site using just a tiny amount of code.
 

REST API Inspector

by Jon Erik Solheim
 - 
|User| Features| API|


Cloud service APIs can often feel like black boxes. Applications send information in and get responses back, but you feel like being in the dark and don't really see what's going on.  

The new restdb.io REST API Inspector  (  ) will help you to shed more light onto your APIs.

A picture is worth a 1000 lines of code

by Jon Erik Solheim
 - 
|Howto| API|

restdb.io comes with a helpful media archive for documents and images. The media archive also has an API with full CORS support. This is really handy for providing your web application with dynamic content.

In this blog post we'll look at the media archive API and go through a JavaScript code example for a simple (ugly) web page showing the basics of the API.

Simple user authentication for web apps

by Jon Erik Solheim
 - 
|Howto| Integrations| Authentication|

User authentication is an important ingredient in application development. It both protects important data (i.e. APIs) and enables development of a personalised user experience.

It can, however, be a complicated and time-consuming process if you want to roll your own and it often requires a skilled backend developer to do it right.

This blog post shows how you can use Auth0.com and a restdb.io database to develop an application where users can sign up with your app and get access to their own data.

Please share this article with your developer friends :-)

Password protected Pages

by Jon Erik Solheim
 - 
|User| Howto|

Restdb Pages lets you create any content from your database and deliver it on a custom route. However, sensitive content must be protected. That's why we made it simple to include user authentication in any Page. All you have to do is to add the #auth tag to the Page source code.


The #auth tag instructs the server to require an authenticated user before serving the Page content. The example below shows how to protect a page with a simple username and password.

{{#auth}}
{"password": "secret", "user": "jane"}
{{/auth}}

My sensitive content here ...

How to create a dynamic site with HTML and CSS only (almost)

by Knut Martin Tornes
 - 
|User| Howto|

Do you dream of a simpler world where you could create a website with HTML and CSS only? The kind of site that web designers and SEO-experts love?

With the addition of Pages to restdb.io, it is now entirely possible and easy to create complete dynamic web sites with only HTML and CSS (almost). 

How to create an RSS feed with restdb.io

by Knut Martin Tornes
 - 
|User| Howto|


RSS (Rich Site Summary) is a widely used standard format to deliver regularly changing web content. Many sites and blogs syndicate their content as RSS feeds. People subscribing to feeds saves time, stays informed and enjoys greater privacy (no ads, no cookies).

In this blog post we show you how we created the RSS feed for our own blog (yep, this blog), using a restdb.io database and just a few lines of code in a restdb.io Page.

Introducing realtime REST events

by Jon Erik Solheim
 - 
|Features| Howto|


A brand new feature of restdb.io is support for really simple realtime messaging. 

Now, with only a few lines of code, you can update web pages dynamically whenever some data are created, updated or deleted in your database (POST,PUT,DELETE). We have also added custom events, so you can for example publish "GOAL" events or whatever.

Announcing restdb.io access roles

by Knut Martin Tornes
 - 
|Features|


We are pleased to tell you that restdb.io now support access roles. No need to worry about letting other users into your database again. Roles are particularly useful when you need to restrict access to what users can see and do in your database.

Draft records makes publishing database content simpler

by Knut Martin Tornes
 - 
|User| Features|


We are pleased to announce drafts for restdb.io. This makes it much easier to use the database service for content management or for example product information management.

Make children with the JavaScript API

by Jon Erik Solheim
 - 
|API|

In this blog post we'll show how to create parent-child relations using restdb.io and the JavaScript API. Full source code avaliable at the end.

New restdb.io JavaScript API makes databases more fun for webdevs

by Jon Erik Solheim
 - 
|API|


restdb.io can now autogenerate a complete JavaScript API* for your database. This makes it easy for developers to create web applications with dynamic content. The API also ensures that your code follows the schema for your database. 

Read on for a simple example on how to use the JavaScript API.

Web Form Generator now support file and image uploads

by Knut Martin Tornes
 - 
|User| Howto| Features|


Great news! We have now released a new version of the Web Form Generator that will generate HTML and Javascript code for uploading files and images into your restdb.io database collections.

Simple real-time chat with streamdata.io and restdb.io

by Knut Martin Tornes
 - 
|Howto| Integrations| API|

restdb.io makes it simple to create a user-friendly, manageable database with a REST-API. For some types of applications, however, you need real-time updates delivered to your front-end web page or mobile app. 

Polling the API from the client could be an option, but often induces too much traffic. Services like Firebase has real-time data, but then you don't get the powerful data manager or the possibility to host web pages in your database like you can in restdb.io. This is where streamdata.io can add to the power of restdb.io. Streamdata.io let's you take any API and create a real-time data source for it!

Real-time is useful for many scenarios like chat, live financial data, games and live maps to mention a few. In this blog post we will show you how easy it is to use streamdata.io with restdb.io by creating a real-time chat running in a restdb.io HTML Page. 

Automated email response with restdb.io web forms and webhooks using Zapier

by Knut Martin Tornes
 - 
|Howto| Integrations|


With restdb.io's Web Form Generator, you can quickly generate a web form you can use to collect input from users on your site directly into a restdb.io database collection. Great!

However, it would be nice to be able to respond the users by email that the "application" or whatever information they submitted has been received. 

This blog post details all the steps necessary to do just that using restdb.io Webhooks with a Zapier Webhooks-to-Gmail Zap.

NoSQL aggregations made simpler

by Jon Erik Solheim
 - 
|Howto| API|


An aggregation processes data records and return computed results. With aggregation, you can group values from multiple documents together, and then perform a variety of operations on the grouped data to return a single result. It's perfect for creating reports or gaining more insight from your data.

If you've used MongoDB aggregations, you probably think this is difficult right? 

We'll show you how simple it can be with restdb.io.

How to create a Dashboard with RestDB

by Jon Erik Solheim
 - 
|User| Howto|

A Dashboard is a helpful tool for keeping people in the loop and quickly communicate important information.
This blog post will show you how to create a Dashboard with RestDB.
Our example is a database with Job applications from a web site.

Let (the) Postman deliver your REST-API code

by Knut Martin Tornes
 - 
|User| Howto| API|


At restdb.io we have created code examples for various platforms. It's often quite time consuming to find the right library and approach, especially if the programming language is new to you.

But did you know there exists a powerful tool which lets you generate client code for calling REST APIs for many popular languages? Meet (the) Postman.

Using Highcharts with RestDB

by Jon Erik Solheim
 - 
|User| Howto|


This simple example shows how you can use Highcharts to visualize data from a RestDB datasource.

In this example we'll create a database for a simple Time management application. 
Our database contains the following Collections: Customers, Projects and Hours.

If you got the numbers, RestDB will do the math

by Knut Martin Tornes
 - 
|User| Howto|

From spreadsheets you might be familiar with formulas and calculations. RestDB supports calculations (for example adding a field that includes price + VAT) and aggregation functions like sum, average, minimum, maximum and count. It's quite easy to set up.

Database Driven Web sites and Pages

by Jon Erik Solheim
 - 
|User| Howto|

Pages let you create dynamic HTML (and other) content inside restdb.io. This is a great way to develop unique user experiences driven by data from your database.

This blog post shows you how to get started. We will create a simple web page and publish it to the world.

Prototyping with Framer Studio and random data from restdb.io

by Jon Erik Solheim
 - 
|Howto| Prototyping| API|

In this blogpost we'll demonstrate how you can use restdb.io as a Data Generator for your Framerjs prototype.

I am no expert in how to create prototypes in Framer Studio, and the example is probably amateurish. However, my main goal is to show you how easy it is to connect and work with restdb.io and Framer Studio, almost in real time.

Generating good test data

by Jon Erik Solheim
 - 
|Howto|

Testing is a big thing in the prototype and development cycle. Creating and maintaining good test-data sets can be a cumbersome process. RestDB has an integrated Random Data generator that makes test-data a snap, and a natural part of your development toolbox.

Scoped REST-calls directly from web-pages using CORS

by Knut Martin Tornes
 - 
|API|

Nowadays, most web services offers some form of API-keys to access and update data programmatically. But there's usually a little catch: API-keys are full access and thus only usable from server to server. Some services has started to offer OAuth-access, but that involves some sort of authentication first.


In addition to a full-access API-key, restdb.io lets you add multiple keys with CORS-support. CORS enables javascript-calls directly from a web-page to a server other than the server hosting the page. 

Visualising IoT data with restdb.io pages

by Jon Erik Solheim
 - 
|Howto| API|

We are pleased to share some insights from a project that uses restdb.io as a backend to measure Air quality.

This blogpost shows how you can connect a BeagleBone Black device to restdb.io and how you can visualise the temperature curve on a page served directly from restdb.io. The BeagleBone is a low-cost, community-supported development platform for developers and hobbyists

Parent/child relations made simple

by Knut Martin Tornes
 - 
|Howto| API|

A parent/child-relation is a convenient way of organizing and viewing information in a one-to-many relationship. If you think about it, we use it all the time: 

  • Folders and files on your computer
  • Comments on a blog post
  • Activities on a project
  • Interactions with a customer
Creating this form of relation is very simple in restdb.io. In this blog post we will show you how to add some "Notes" to a "Lead" in a simple CRM system.

Database apps on the go

by Knut Martin Tornes
 - 
|User|

Today we released a fully responsive, mobile friendly version of restdb.io. It's perfect for accessing and updating important data on the go.

Welcome to our Blog - created in restdb.io

by Knut Martin Tornes
 - 
|User| API|

This is our first blog post on restdb.io.
When we started to think about our blog, we had to pick some blog framework or CMS.

But wait, restdb.io is great for serving dynamic content into a web page. Creating a blog is actually a good example that shows the power and flexibility of restdb.io. It's that thing about eating your own dogfood.