A curated ecosystem of zero-dependency, tree-shakeable TypeScript packages. Each one a focused spell — together, magical.
Import what you need. Each package works alone or together.
import { createForm } from '@vielzeug/forge';
import { s } from '@vielzeug/spell';
import { createApi } from '@vielzeug/courier';
import { createLogger } from '@vielzeug/rune';
const log = createLogger('auth');
const api = createApi({ baseUrl: 'https://api.example.com' });
const LoginSchema = s.object({
email: s.string().email(),
password: s.string().min(8),
});
const form = createForm({
defaultValues: { email: '', password: '' },
schema: LoginSchema,
});
form.submit(async (values) => {
const user = await api.post('/auth/login', { body: values });
log.info('Login successful', { user });
});23 packages, each focused on one domain. Pick what you need.
Questions, bugs, or want to contribute? We'd love to hear from you.