One command, no ejecting
bun create elvel writes an application that is yours — controllers you can read, pages that are .tsx files, and a welcome screen you will replace.
Twenty-seven packages, an Elysia core, and no facades — because TypeScript erases the types that facades depend on.
bun create elvel writes an application that is yours — controllers you can read, pages that are .tsx files, and a welcome screen you will replace.
--kit=none gets thirteen packages and ten config files; --kit=jsx gets twenty and seventeen. A feature you do not use is not in your node_modules.
Controllers are Elysia instances, so the request context stays inferred inside handlers. The container resolves by token, which is what keeps it.
SQLite, Postgres and MySQL on every push — because a grammar can be plausible and still be rejected — and the whole suite on macOS and Windows besides.
1.0.0-alpha.13 is published with provenance, released by CI over OIDC with no token stored anywhere. The shape is settled; the surface still moves, and a release can rename something.
All twenty-nine packages have a page now — the eight that were missing one arrived over the alphas, which is why this paragraph used to say otherwise. A page still appears only when it has something true to say: fifty placeholders would make this site look finished and be useless.
Three things are worth knowing before you depend on this, and none of them is a missing feature:
tsc compiles their internals. That makes the types exact and it makes our problems yours — @elvel/mail once imported an untyped subpath and applications failed their own typecheck while ours passed. Building each package to a single file would end that class of bug; measured, it also made boot 35–40% slower, so it is not done.