APP DEVELOPMENT / GUIDED PRACTICE

Create the app database

Define persistent request records and their ownership.

Written by Ray / SETLYUpdated 1 October 2026

THE RESULT YOU'RE WORKING TOWARD

Done means it works.

Valid records persist and the second account cannot read or change the first account's requests.

Practice project: Harbor request board

01 / GET READY

Before you start.

Platform / editor
React + JavaScript + Supabase for the connected path; plain JavaScript local demo
Access & plan
The supplied local demo needs only a browser. The connected path requires Node, a React project, a Supabase development project and approved test accounts.
Starting point
Complete the previous lesson or use an equivalent prepared demo project.

Keep a note of the exact account, project and version you use. Work with demo data and record the expected result before making changes. Never place passwords, verification codes or private customer records in your evidence.

Download local interface example ↘ Try the local request board ↗

The local example demonstrates the interface and browser storage. It has no server authentication or shared database. The connected-app lessons use the linked React/Supabase documentation.

02 / LEARN THE TOOL

Open the official walkthrough.

Use the publisher's instructions and available screenshots to locate the current controls. Then return here for the SETLY exercise and its result checks. These links open on the publisher's website.

Source credit belongs to the named publisher. These are external references, not SETLY recordings or a claim of affiliation. Screen names and plan availability can change.

03 / PUT IT INTO PRACTICE

Your task, step by step.

Use one labelled demo record or project so you can find your work again. Finish each action before continuing; if the screen differs, consult the matching official source rather than guessing.

  1. 01

    Step 1

    Create a development project with the chosen database provider. Define requests with id, owner_id, title, service, status and created_at.

  2. 02

    Step 2

    Make required fields non-null and constrain status to the allowed values. Use server-generated identifiers and creation timestamps.

  3. 03

    Step 3

    Enable row-level access controls and specify that signed-in users may access only records whose owner_id matches their identity.

  4. 04

    Step 4

    Insert a demo row through the authenticated client and read it back. Test with a second account to check isolation, using the provider's documented workflow.

04 / GET UNSTUCK

If something goes wrong.

Start with the likely cause

If all users can read all rows, fix database policies before adding interface filters. Hiding rows in JavaScript is not authorization.

My screen is different from the guide

Check the product, editor, account role and selected project first. Open the credited official instructions for your version. Record the difference and pause any action whose effect you cannot verify.

The screen looks correct, but the result is missing

Inspect the saved record, published page or execution log that should prove the action. A preview, success message or draft is not always evidence that data was stored or a message was delivered. Retest with one unique demo value.

05 / PROVE THE RESULT

Check it before you call it done.

Valid records persist and the second account cannot read or change the first account's requests.

Keep useful evidence

Record the test date, project/version, expected result, observed result and a non-sensitive screenshot or record reference. Mark anything you did not test as untested. Your checkmarks do not certify an untested result.

Download the editable verification checklist ↓

Guide status: original written practice exercise with credited external references. SETLY screen recording and independent learner reproduction are not yet complete.

KEEP BUILDING

Next / 05Add authentication ↗