The higher layer
for modern apps
Framework-agnostic TypeScript packages for the features every app needs. Type-safe, tested, zero lock-in.
Built for production
Built with
Packages
Everything you need,
nothing you don't
Modular packages that work independently or together.
Install only what you need.
More coming soon
Realtime events, waitlist management, webhook handling, and more — all type-safe and framework-agnostic.
Philosophy
Built for the
way you work
Developer tools should adapt to your stack — not the other way around.
Core + Adapters
Business logic is framework-agnostic. Adapters connect to your stack. Switch from Next.js to Remix without rewriting.
Type-safe by default
Full TypeScript coverage with Standard Schema. Validate at runtime with Zod, Valibot, or ArkType — your choice.
Tested extensively
Comprehensive test coverage ensures reliability. Not toy examples — real solutions built for production.
Developer experience
Clean APIs,
powerful results
Intuitive, type-safe APIs that make you productive from day one.
import { $fetch } from '@zap-studio/fetch';
import { UserSchema } from './schemas';
// validated & typed — throws on error
const user = await $fetch('/api/users/1',
UserSchema,
{ method: 'GET' });
// user is fully typed ✓
console.log(user.id, user.name);
// or use api.get() shorthand
import { api } from '@zap-studio/fetch';
const user = await api.get('/api/users/1', UserSchema);
import { $fetch } from '@zap-studio/fetch';
import { UserSchema } from './schemas';
// validated & typed — throws on error
const user = await $fetch('/api/users/1',
UserSchema,
{ method: 'GET' });
// user is fully typed ✓
console.log(user.id, user.name);
// or use api.get() shorthand
import { api } from '@zap-studio/fetch';
const user = await api.get('/api/users/1', UserSchema);
import { createPolicy, allow, when } from '@zap-studio/permit';
const policy = createPolicy<AppContext>({
resources: { post: PostSchema },
actions: { post: ['read', 'write'] },
rules: {
post: {
read: allow(),
write: when(
(ctx, _, post) => ctx.userId === post.authorId
),
},
},
});
// type-safe permission check ✓
policy.can(ctx, 'write', 'post', post);
Full IntelliSense support
Ready to build faster?
Get started in minutes. Fully documented, fully typed, fully tested.
Open Source · Zero Lock-in · TypeScript Native
Standard Schema · Tree-shakeable · ESM First · JSR Compatible