v0.1.0 (MVP) Milestones

v0.0.1

Milestone

Capability to take a basic scalar (being, no foreign keys) TypeScript class and convert it to:

  • Basic SQLite database schema (PKs, real, integer, blob, text)
  • TypeScript workers backend revealing static and instantiated class methods as API endpoints.
  • Frontend Client API identical to that of original TypeScript class, utilizing a Result monad return type.
  • Basic Wrangler configuration generation

Being the first milestone, we will focus on scaffolding out the project for continous development.

v0.0.2

Milestone

Expand on the types available in our grammar: models, arrays, nullability.

Introduce foreign key relationships (1:1, 1:M, M:M), along with navigation properties and data sources.

v0.0.3

Milestone

Work towards a published NPM package capable of orchestrating the compilation process with a single command.

Expand on our types to add "Plain Old Objects", being, objects that are not models but serializable as parameters or return types.

Introduce a dependency injection layer, allowing the wrangler environment to be passed as a parameter to all methods.

Expand on our testing suite to have full E2E tests, regression tests and run-fail tests.

Move hardcoded TypeScript code to WASM such that it can be used in other language implementations.

v0.0.4

Milestone

Create a migrations engine capable of adding, updating, and reverting different states of the model schema.

Support middleware at various points in our request process state machine (global, model, data source, method).

Support middleware for the frontend such that requests can be intercepted and augmented (allowing things like authentication headers).

Create a suite of ORM primitives in WASM, allowing for easy CRUD operations.

Add automatic CRUD endpoints utilizing the ORM primitives.

Marks the end of D1+Workers development

v0.0.5

Milestone

Create a Blob type, which will influence a MediaType for all methods.

Create a new Cloesce Service, essentially a suite of Workers endpoints under a namespace, not tied to a D1 table.

R2 wrangler toml generation

R2 navigation properties and ORM implementation

Allow Cloesce projects to run without any models or databases defined.

v0.0.6

Milestone

Durable Object support. More info to be figured out soon.

v0.0.7

Milestone

Open to community for testing-- squash as many bugs as possible. Investigate feedback and unintended constraints Cloesce imposes, addressing them here, potentially postponing to v0.2.0.

v0.0.8

Milestone

Add Python language support. Analyze and refactor the project to remove language hardcoded areas. Submodulize TS and Py runtimes