Student Database

A database playground for students building their first apps. Just POST JSON to save and GET to retrieve — no setup, no login, no backend. Anonymous databases work instantly with safe defaults. Register for free to get persistent databases with full control over every setting.

Quick Start

1 Create your first document

POST a JSON document to create a database. The database is created automatically on first request!

const response = await fetch('https://tinkr.tech/sdb/my_database', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ name: 'John', age: 25 })
});
const data = await response.json();
console.log(data); // {"id": "...", "name": "John", "age": 25}

2 Retrieve all documents

GET all documents from your database as a JSON array

async function getAll() {
	const response = await fetch('https://tinkr.tech/sdb/my_database');
	const documents = await response.json();
	console.log(documents); // Array of all documents
}

3 Update a document

PATCH a document by its ID to update it

const docId = '550e8400-e29b-41d4-a716-446655440000';
const response = await fetch(`https://tinkr.tech/sdb/my_database/${docId}`, {
  method: 'PATCH',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ name: 'Jane', age: 26 })
});
const updated = await response.json();

4 Delete a document

DELETE a document by its ID

const docId = '550e8400-e29b-41d4-a716-446655440000';
await fetch(`https://tinkr.tech/sdb/my_database/${docId}`, {
  method: 'DELETE'
});

5 Polling for new documents

Use the since parameter to fetch only documents created after a specific ID

const lastId = '550e8400-e29b-41d4-a716-446655440000';
const response = await fetch(`https://tinkr.tech/sdb/my_database?since=${lastId}`);
const newDocuments = await response.json();

API Reference

Method Endpoint Description
POST /sdb/:db_name Create a document (creates database on first request)
GET /sdb/:db_name Get all documents
GET /sdb/:db_name?since=:id Get documents created after the given ID
PATCH /sdb/:db_name/:id Update a document by ID
DELETE /sdb/:db_name/:id Delete a document by ID

Namespaced Databases

Registered users can create persistent databases with namespaces. Just add the namespace before the database name:

POST /sdb/:namespace/:db_name
GET /sdb/:namespace/:db_name
PATCH /sdb/:namespace/:db_name/:id
DELETE /sdb/:namespace/:db_name/:id

Default Settings

Every anonymous database starts with these defaults. Register for free to get persistent databases where you can change everything.

Limits

Rate limit (writes) 10s
Max documents 500
Max document size 10 KB
Auto-delete after 24h

Permissions

Create Public
Read Public
Update Public
Delete Public

Security

HTML sanitization
Block dangerous fields

Schema Validation

Enforce schema
Field Type Required
name String
score Number
active Boolean

Teachers: create a namespaced database and configure it for your class. Build a safe sandbox with API keys and schemas, raise limits for bigger projects, or turn off XSS protection when it's time to teach web security.

API Key Authentication

When a database operation is set to "private", include your API key as a Bearer token:

const response = await fetch('https://tinkr.tech/sdb/my_namespace/my_database', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({ name: 'John', age: 25 })
});

You can find your API key in the database settings page. Each database has its own key.

Perfect For

Learning Projects

Practice building web apps without setting up a backend

Prototypes

Quickly test ideas and build proof-of-concepts

Student Projects

Perfect for classroom assignments and coding bootcamps

CodePen/JSFiddle

Add real database functionality to your demos

Hackathons

Get started fast without backend setup

Data Collection

Simple forms and surveys for small projects