August 4, 2021
Let’s start by getting the server code to your local development environment.
There are three options to have a running StaticBackend instance:
No matter which way you prefer, you’ll need to get the latest source code first.
$> git clone git@github.com:staticbackendhq/core.git
$> cd core
If you already have access to Docker, you may execute the following commands to have your backend up and running quickly.
We’ll first need to build the Docker image.
There are two options to do this:
make
Before you can run any make
commands, you’ll need to have an environment file
ready named .env
.
You’ll need that file even if you’re not using the make
comamnd
We provide a sample named .demo.env
, let’s use that one which is all set to
run in local mode:
$> mv .demo.env .env
We can now build the image with make
:
$> make docker
Or with Docker directly:
$> docker build . -t staticbackend:latest
Please refer to our self-hosted getting started guide for all details on how to use pre-built binaries or compiling the source.
The easiest way to run all dependencies and the server itself is by using Docker Compose.
We provide two Docker compose files. One that only includes the dependencies services. The other is a demo that includes dependencies and the backend server.
$> docker-compose -f docker-compose-demo.yml up
If you do not have access to Docker Compose, you’ll need MongoDB and Redis
servers. Inside your .env
file, configure the proper keys to match your
server’s access points.
You should be able to access the web UI via a browser when you navigate to http://localhost:8099.
To start using the backend API inside your application, you’ll need to create an app inside your local StaticBackend instance.
An app has its own database, file storage isolation, and admin portal.
You simply enter an email and click the button. You’ll see the email output in the terminal that started the Docker Compose or the binary.
You’ll need those credentials and tokens in your app to perform any operations.
Let’s create a quick example JavaScript application that uses our self-hosted backend instance.
You’ll need the following installed to follow along:
npm
or yarn
installedLet’s initialize our JavaScript application:
$> npm init -y
Your JavaScript application needs to install our client-side library to performs backend operations.
$> npm install @staticbackend/js
We will only have one file for this sample. Inside the src
directory, we can
create our demo.ts
file with the following code.
$> mkdir src
$> touch src/demo.ts
Note: touch
is used here only to show the creation of the file, not required
you may create this file however you want.
Here’s the code:
import {Backend} from "@staticbackend/js"
let bkn = new Backend("YOUR_PUBLICK_KEY_HERE", "dev");
let token = "";
let login = async () => {
let result = await bkn.login("you@domain.com", "YOUR_ADMIN_PASSWORD");
if (!result.ok) {
console.error(result.content)
return
}
token = result.content;
createTask();
}
let createTask = async () => {
const task = {
desc: "my first task",
done: false
}
let result = await bkn.create(token, "tasks", task)
if (!result.ok) {
console.error(result.content)
return
}
console.log("created", result.content);
listTasks();
}
listTasks = async () => {
let result = await bkn.list(token, "tasks");
if (!result.ok) {
console.error(result.content);
return;
}
console.log("list", result.content);
}
window.onload = () => {
login();
}
To reach the correct database, your client-side library needs to know which app
you’re looking for. You achieve this by using the SB_PUBLIC_KEY
you received
when you created your application.
var bkn = new Backend("Public Key Here", "dev")
We’re using "dev"
for the region, which indicates our client-side library to
target your local instance and not a production one.
We can log in using the credentials we received when we created the app. A valid session token is required for each API call. We store that session token into a global variable so it’s easy to use everywhere.
From there, it’s just a matter of using the database operations on behalf of that
user. We create a document in the tasks
collection, and we list the documents
our user account has access to.
We’ll be using esbuild
to build our JavaScript application. It does not
require any configuration and run fast.
$> npm install esbuild
We create a new build script inside our package.json
file.
"scripts": {
"build": "esbuild --bundle --outfile=dist/demo.js src/demo.ts"
}
We build our bundle:
$> npm run build
We will install a simple HTTP server to serve our application.
$> npm install http-server
And add the script to start the server:
"scripts": {
"start": "http-server",
"build": "esbuild --bundle --outfile=dist/demo.js src/demo.ts"
},
Let’s create a quick index.html
file that references our bundle.
<html>
<head>
</head>
<body>
<script src="/dist/demo.js"></script>
</body>
</html>
We can finally start our application and look in the developer console for the app’s output or errors.
It is how you’d get started with the self-hosted version of StaticBackend.
© 2023 Focus Centric Inc. All rights reserved.