Hacker News

andrewww-dev
Show HN: Typebase – A single-folder back end you write in TypeScript typebase.io

Hey HN!

I built Typebase, a library that gives you Convex's DX with Supabase's openness.

After trying Supabase I liked how fast it is to spin up a DB and auth, but really didn't like using RLS and SQL for authorization. With Convex I loved how your server "lives" in your code, but disliked the DB model and the realtime-first defaults.

With Typebase you just write TS files inside a typebase/ folder in your existing repo. You can define your DB tables inside a schema.ts file and export server functions that your frontend calls like local functions, fully typed. Auth is built in.

Then one CLI command uploads your server to any of the available providers (Vercel, Cloudflare Workers or Deno Deploy for the servera and Neon for the DB), or generates the code so you can deploy it wherever you want.

Built on top of oRPC, Drizzle, and better-auth.

Happy to answer any questions or feedback!


stack_framer5 minutes ago

The pronunciation of "Vercel" near the end of the "Typebase in 100s" video was VER-cel, with the emphasis on the first syllable, instead of ver-CEL with the emphasis on the second syllable.

Was the video generated by AI?

pyrolistical6 hours ago

It’s like next.js but for backend.

Personally not for me. These are very productive once you learn the shape they expect.

But the wheel needs to be reinvented on how to do everything.

I ran have straight forward verbose code with no hidden control flow

jodacola3 hours ago

> once you learn the shape they expect

I’m reminded of this essay discussing frameworks versus libraries [0].

[0] https://tomasp.net/blog/2015/library-frameworks/

NoItsDanger3 hours ago

I’ve been saying for years we need CCR (Client Centric Rendering).

What we do is have the server just serve the page and let the client handle most of the rendering.

It’s novel and innovative

anon7000an hour ago

Smells like SPA

virgil_disgr4ce5 hours ago

Am I missing something? The entire point of next.js is that it's backend+frontend in one project

apsurd5 hours ago

that’s likely the promise but it’s so confusing and high cognitive overhead to maintain that backend <-> frontend relationship. ‘use client’ - i think the special sauce for why people use nextjs is all frontend based. the frontend that comes from the backend.

nextjs dx is a special kind of hell. disclaimer: im just a simple rails guy.

phren0logy7 hours ago

I love the (well-disclosed) fake testimonials. Hilarious!

adamddev14 hours ago

> “I’ve told four separate therapists about Typebase. Two stopped taking me as a client. The other two are now shipping an app with it.”

So good. I laughed out loud at this.

dsabanin40 minutes ago

Looks useful, congrats

rgbrgb7 hours ago

I’ve been curious about trying the Supabase type of RLS model for an app but haven’t yet. I like the idea of the db defined api like postgraphile and hasura but had trouble with testing and ergonomics. This looks pretty nice though, it’s cool that you’re thinking about ergonomics for working with coding agents. I feel like a hard thing with that rn is that everyone is kind of figuring out different workflows for AI coding right now so it’s hard to optimize DX. Can you talk a little about your personal agent workflow and how this fits it?

k4rli6 hours ago

I've only had experience in one full-stack project with supabase RLS so experience is limited. However it seemed like a mess. Seems much more human-maintainable to have a classic spring/golang backend. For sure in some projects, esp mobile apps, it makes more sense, and fable-level models might also keep it from being full spaghetti.

Also Supabase at that time wasn't reliable and it's not really made for self-hosting. Felt almost as bad as Github stability these days.

Still, based on this limited experience, I've been avoiding RLS and supabase.

NewJazzan hour ago

I thought supabase was mainly for self hosting? Like it was self-hostable firebase... Not too familiar with it though.

xixixao8 hours ago

Very cool!

Note that you can run Convex on top of your own Postgres, and we do this for our internal apps, with very nice performance (plenty for our internal use cases).

catlifeonmars5 hours ago

What, in your opinion, is this not a good fit for?

SillyUsername3 hours ago

Enterprise software, stuff that you expect to scale exactly because it has queues and distributed computing.

bosky1017 hours ago

very cool. though the deploy wasnt clear if i can just run migration on some pg url. and it wasnt clear if i can bind some middleware into my existing app server (like express)

desireco425 hours ago

I was about the ask a question but you just answered how it is built. I guess I will try it out, it sounds really good.

I love your approach, fake testemonials and all.

ramon1566 hours ago

Fake reviews are a hard no-no imo. Really weird addition, but I suppose it wasn't you who got the idea.

Looks an awful lot like a orpc, just built on top of drizzle instead of raw queries. I'm sure some people want this, but it seems like gross duct tape that will bite you in three years

scrollaway6 hours ago

Scratching my head a little bit here, I'm not sure how this differs from NextJS (or Vite) with a layer of drizzle & better-auth.

Not that that layer isn't important. We ended up building something like this at Ingram, nextkit: https://github.com/ingram-technologies/nextkit - but we distribute it as a set of micro libraries that work well together rather than a unified framework. (Auth is nk-auth, built on top of betterauth, and sql is nk-db, built on top of drizzle)

You got to pretty much the same conclusions we did though regarding the "why".

SifatAhmed7 hours ago

This looks great. Question specifically on the Cloudflare Workers target: when you deploy there, does Typebase use D1 for the DB, or does the Postgres/Neon backend stay the same regardless of which server target you pick (Vercel/Workers/Deno) - i.e. is the DB layer decoupled from the server runtime, or does choosing Workers also mean choosing D1? I ask because I've shipped a small Workers+D1 service and the main friction I've hit isn't the server code, it's Workers' constraints around D1 (no long-running connections, HTTP-based driver quirks) - curious whether Typebase abstracts that away or whether you still feel it at the DB layer when targeting Workers specifically.

optimisticedits6 hours ago

I see no code there to automatically pick D1 for the DB when you deploy to Cloudflare.

On Cloudflare, it should use the `@neondatabase/serverless` driver configured here https://github.com/typebase-io/monorepo/blob/fa3af0b71126caa...

mermadicsolutio5 hours ago

[dead]

hn-front (c) 2024 voximity
source