What is Bever?
Bever is an open-source language and framework for business applications. You describe the business in .bev files: the entities it tracks, their fields and relationships, and who may create, read, change, or delete them. Bever turns that description into a running application:
- a validated, authorized HTTP API, served by an ASP.NET Core library, and
- a web app built with Nuxt that lists, shows, creates, and edits records, with sign-in when you want it.
Entity Customer
Field Name Text(200)
Field Email Email
Field Tier Enum(Free, Pro, Enterprise) = Free
Action Crud Customer
By AuthenticatedThese seven lines produce GET, POST, PATCH, and DELETE routes under /api/v1/customers, server-side validation of every value (Email must look like an email address, Tier must be one of three names), a sign-in requirement on every route, and pages to manage customers.
How it fits together
bev/*.bev ──bever compile──▶ bev/.output/model.json ──▶ server/ (Bever.AspNetCore)
└─▶ client/ (@bever/sdk + Nuxt)- The compiler (
bever compile, also run bybever dev) checks your.bevfiles and reports problems with file, line, and column. It writes a JSON semantic model. - The server loads the model and maps the HTTP API. It is the authority: it validates values, checks permissions, filters lists, and stores records in SQLite.
- The client reads the same model to decide which pages, columns, fields, and buttons to show. It never decides what is allowed; the server does.
Both server/ and client/ are ordinary projects in your repository. Bever provides libraries and conventions, not generated source you are told not to touch.
What Bever is good for
Bever fits applications whose core is structured records and rules about who may change them: internal tools, back offices, CRMs, ticketing, inventories, approval desks, and the admin side of products.
Today the language covers entities, typed fields, enums, relationships with delete behavior, defaults, validation rules, CRUD actions with permissions (Anyone, Authenticated, or the account in an owner field), relationship pickers, list ordering, sign-in with email and password, and presentation of the generated app. Workflow features such as state machines, computed fields, and notifications are on the roadmap; the compiler reports them as "not supported yet" instead of ignoring them.
Principles
- Business meaning first. The
.bevfile names business concepts. Framework details live inclient/andserver/. - Secure by default. Every action must say who may perform it. There is no implicit access.
- Explicit over clever. Destructive database changes need consent; IDs are never shown to people; missing values are never guessed.
- You own the code. Customization means editing normal Vue and C#, not fighting a generator.
Status
Bever is pre-alpha. Releases are numbered 0.1.0-prealpha.N and are published as prerelease packages, so you install them with --prerelease.
- The language will change. Syntax, defaults, and validation rules can change between releases, and a model that compiles today may not compile with the next release.
- The semantic model, HTTP API, SDK, and CLI will change with it, in ways that break generated clients and code you write against them.
- Upgrades are not supported yet. There is no upgrade path between releases for models, migrations, or projects created by
bever new.
Use Bever to evaluate it and to give feedback, not for production data. Pin exact versions, and read the changelog before you update. The roadmap lists what is planned.
License
The language, compiler, runtime, CLI, SDK, and VS Code extension are licensed under the Apache License 2.0. Templates and examples are licensed under MIT No Attribution, so a project created with bever new is entirely yours, with no notice to keep. "Bever" and the Bever logo are trademarks.
Next steps
- Getting started: install the CLI and run your first app.
- Tutorial: build an order desk with customers, products, orders, and permissions.
- Language reference: every construct, precisely.