From zero to live backend in 5 minutes

Quickstart Guide

Deploy your backend on Aethelos Base in six steps. Get an isolated PostgreSQL database, REST API, and typed SDK — no infrastructure headaches.

01

Create your account

Sign up in seconds — email and password, no credit card needed.

Sign up free
02

Create a project

Each project gets its own isolated PostgreSQL database, provisioned instantly.

Go to dashboard
03

Get your API key

Generate a project-scoped API key from the project settings. This is how your app authenticates.

# Your API key looks like this:
aeth_sk_9f8e7d6c5b4a3...
04

Connect your app

Use the REST API directly, or generate a typed client SDK for your project.

// ── Option A: REST API ──────────────────────────
const BASE = "http://localhost:3000/api/v1/db";
const KEY  = "aeth_sk_9f8e7d6c5b4a3...";

// List all users
const res = await fetch(`${BASE}/users`, {
  headers: { Authorization: `Bearer ${KEY}` }
});
const { data } = await res.json();

// Insert a new product
await fetch(`${BASE}/products`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    name: "Kente Cloth",
    price: 250.00,
    inventory_count: 45
  })
});

// ── Option B: Auto-generated SDK ────────────────
// GET /api/v1/sdk?project_id=xxx&api_key=aeth_sk_...
// returns a ready-to-import JS client

import { createClient } from "./aethelos-client.js";
const db = createClient();

const users    = await db.users.list();
const product  = await db.products.get("p1");
const newRow   = await db.orders.create({
  user_id: "u1",
  total_amount: 335.00,
  status: "pending"
});
05

Create tables via SQL

Use the built-in query console to define your schema, or push DDL through the API.

-- Run this in the Query Console (Ctrl+K → "Query Console")

CREATE TABLE users (
  id         UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  email      TEXT UNIQUE NOT NULL,
  full_name  TEXT NOT NULL,
  created_at TIMESTAMPTZ DEFAULT now()
);

CREATE TABLE products (
  id              UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name            TEXT NOT NULL,
  price           DECIMAL(10,2) NOT NULL,
  inventory_count INT DEFAULT 0,
  created_at      TIMESTAMPTZ DEFAULT now()
);

CREATE TABLE orders (
  id            UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id       UUID REFERENCES users(id),
  total_amount  DECIMAL(10,2) NOT NULL,
  status        TEXT DEFAULT 'pending',
  ordered_at    TIMESTAMPTZ DEFAULT now()
);
06

Ship it

Your backend is live. Monitor telemetry, manage API keys, and scale.

# Test your live API with curl

curl -X GET http://localhost:3000/api/v1/db/users \
  -H "Authorization: Bearer aeth_sk_9f8e7d6c5b4a3..."

# Response:
{
  "data": [
    { "id": "u1", "email": "kwame@example.com", "full_name": "Kwame Asante" },
    { "id": "u2", "email": "ama@example.com",   "full_name": "Ama Mensah" }
  ],
  "count": 2
}

REST API Endpoints

All endpoints require Authorization: Bearer aeth_sk_...

GET/api/v1/db/:table
POST/api/v1/db/:table
GET/api/v1/db/:table/:id
PUT/api/v1/db/:table/:id
DELETE/api/v1/db/:table/:id
GET/api/v1/sdk?project_id=...&api_key=...

Connect from any framework

Next.js / React

const res = await fetch("/api/v1/db/users", {
  headers: { Authorization: `Bearer ${KEY}` }
});
const { data } = await res.json();

Python

import requests
res = requests.get(
  "http://localhost:3000/api/v1/db/users",
  headers={"Authorization": f"Bearer {KEY}"}
)
data = res.json()["data"]

cURL

curl http://localhost:3000/api/v1/db/users \
  -H "Authorization: Bearer $KEY"

Flutter / Dart

final res = await http.get(
  Uri.parse("$BASE/api/v1/db/users"),
  headers: {"Authorization": "Bearer $KEY"},
);
final data = jsonDecode(res.body);

Ready to build?

Create your free account and deploy your first backend in minutes.

Get started free