Side project · Prototype 2023

DotBond, two-way code generation for dynamic APIs

Paused

Role

Author

Timeline

2022 – 2023

Client

Side project

Team

Solo · featured by the .NET Foundation

Overview

A GraphQL alternative with LINQ-like syntax in TypeScript.

DotBond is currently in the proof-of-concept stage and is not yet suitable for use in development. Its purpose is to be a GraphQL alternative with LINQ-like syntax in TypeScript.

The most important piece of design in an application is the API. It contains both the performance backend and the application's data. The data, its organization and transfer (payload size, push events, chunked transfer, etc.) affect the application's complexity and scalability. This tool allows client apps to create additional endpoints (additional .NET Actions) on the server, based on original endpoints, which are quick to generate, have relevant context and are probably more tuned to the specific application's behaviour.

Features

Code-first, on the .NET / TypeScript stack.

As a two-way generator, the biggest concern about this tool is handling breaking changes. It provides:

  • End-to-end type safety
  • LINQ + GraphQL-like features (server / client / hybrid execution)
  • Query execution plan using TypeScript's type system
  • Protection from writing bad client queries

It currently supports Angular but can easily be made front-end agnostic, and it will be usable inside a single code repository or across multiple repositories using GitHub Actions.

Stack

C#RoslynTypeScriptAngularGitHub Actions