{"repo":"ryanrasti/typegres","free":true,"listed":false,"github":"https://github.com/ryanrasti/typegres","clone":"git clone https://github.com/ryanrasti/typegres.git","description":"SQL over RPC, safely","language":"TypeScript","stars":54,"topics":["capability-security","capnweb","orm","postgres","postgresql","query-builder","rpc","sqlite"],"license":"MIT","category":"databases-storage","readme_excerpt":"Typegres - Methods on your tables = your API. No routes. No GraphQL. No auto-CRUD. - Every Postgres/SQLite function, fully typed. All base types, every operator, nullability tracked at the type level. - Clients compose typed SQL across the wire. Server validates the surface area you expose. - Live by default. .live() re-queries when the underlying data changes — pushed directly to clients. typegres.com/play · demo.mp4 · docs/ARCHITECTURE.md Usage Developer preview — surface is settled, edges still being filed. Not yet recommended for production. For a complete scaffold with migrations + codegen, see the examples. Or try it interactively at typegres.com/play. Clients compose the queries The class surface is the contract. A client composes against @expose -marked members, the closure is serialized, and the server evaluates it under a constrained interpreter — so a client can write any query it likes, and still reach only what you exposed. The client-authored \"top posters\" query compiles to plain SQL, with fullName() expanded in both the select list and the GROUP BY — which is what \"used exactly like a column\" means in practice. The team scoping the client never wrote is in the WHERE : Note what the client never does: name a table. Posts and Users are server-side identifiers, and a closure that references one won't serialize. A client starts from a capability it was handed and narrows — which is why feedFor 's join and its team scoping can't be composed away. Swap the MessagePor","default_branch":null,"files":null,"tree":[],"storefront":"/r/ryanrasti","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/ryanrasti/typegres/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}