GitXplorerGitXplorer
s

database-build

public
2612 stars
213 forks
40 issues

Commits

List of commits on branch main.
Verified
d63b3f576e6bf94a255062370f3df782f90cf40b

Merge pull request #154 from supabase-community/feat/permanent-redirect-legacy-domain

ggregnr committed a day ago
Unverified
51c1485a5de82fd9c79739b4d7eac4bf64e1463a

feat: permanent redirect from legacy domain

ggregnr committed a day ago
Unverified
532864d81708fb21e1eb3791893ee79ce76ba663

chore: missing project build env in turbo config

ggregnr committed 9 days ago
Unverified
99f937fd6d1a28a277bd5b9058d9b458f0aaf262

feat: remove redirect deadline copy

ggregnr committed 9 days ago
Unverified
6f004a8383d39b344cc455752c93c5b9f8e66670

fix: missing env vars in turbo config

ggregnr committed 9 days ago
Unverified
6add62ae2e2c5875f55b37e867ae6a29adfeeb7b

chore: log redirect during build

ggregnr committed 9 days ago

README

The README file for this repository.

database.build (formerly postgres.new)

In-browser Postgres sandbox with AI assistance.

github-repo-hero

With database.build, you can instantly spin up an unlimited number of Postgres databases that run directly in your browser (and soon, deploy them to S3).

Each database is paired with a large language model (LLM) which opens the door to some interesting use cases:

  • Drag-and-drop CSV import (generate table on the fly)
  • Generate and export reports
  • Generate charts
  • Build database diagrams

How it works

All queries in database.build run directly in your browser. There’s no remote Postgres container or WebSocket proxy.

How is this possible? PGlite, a WASM version of Postgres that can run directly in your browser. Every database that you create spins up a new instance of PGlite that exposes a fully-functional Postgres database. Data is stored in IndexedDB so that changes persist after refresh.

Monorepo

This is a monorepo split into the following projects:

  • Web: The primary web app built with Next.js
  • Browser proxy: Proxies Postgres TCP connections back to the browser using pg-gateway and Web Sockets
  • Deploy worker: Deploys in-browser databases to database platforms (currently Supabase is supported)

Setup

From the monorepo root:

  1. Install dependencies

    npm i
  2. Start local Supabase stack:

    npx supabase start
  3. Store local Supabase URL/anon key in ./apps/web/.env.local:

    npx supabase status -o env \
      --override-name api.url=NEXT_PUBLIC_SUPABASE_URL \
      --override-name auth.anon_key=NEXT_PUBLIC_SUPABASE_ANON_KEY |
        grep NEXT_PUBLIC >> ./apps/web/.env.local
  4. Create an OpenAI API key and save to ./apps/web/.env.local:

    echo 'OPENAI_API_KEY="<openai-api-key>"' >> ./apps/web/.env.local
  5. Store local KV (Redis) vars. Use these exact values:

    echo 'KV_REST_API_URL="http://localhost:8080"' >> ./apps/web/.env.local
    echo 'KV_REST_API_TOKEN="local_token"' >> ./apps/web/.env.local
  6. Start local Redis containers (used for rate limiting). Serves an API on port 8080:

    docker compose -f ./apps/web/docker-compose.yml up -d
  7. Fill in the remaining variables for each app as seen in:

    • ./apps/web/.env.example
    • ./apps/browser-proxy/.env.example
    • ./apps/deploy-worker/.env.example

Development

From the monorepo root:

npm run dev

Important: This command uses turbo under the hood which understands the relationship between dependencies in the monorepo and automatically builds them accordingly (ie. ./packages/*). If you by-pass turbo, you will have to manually build each ./packages/* before each ./app/* can use them.

Why rename postgres.new?

This project is not an official Postgres project and we don’t want to mislead anyone! We’re renaming to database.build because, well, that’s what this does. This will still be 100% Postgres-focused, just with a different URL.

Video

image

License

Apache 2.0