The format that's super!
https://duper.dev.br
dotnet
duper
encoding
format
json
lsp
nodejs
parser
python
rpc
rust
serde
serialization
toml
tracing
tree-sitter
vs-code
wasm
yaml
zed-extension
- Rust 74.5%
- C# 8%
- HTML 7.4%
- TypeScript 4.8%
- Python 2.5%
- Other 2.7%
| .cargo | ||
| .config | ||
| .github | ||
| .vscode | ||
| axum_duper | ||
| duper | ||
| duper-js-node | ||
| duper-js-wasm | ||
| duper-python | ||
| duper-vs-code | ||
| duper_lsp | ||
| duper_rpc | ||
| duper_uniffi | ||
| duper_website | ||
| duper_zed | ||
| duperfmt | ||
| duperq | ||
| nix | ||
| npins | ||
| serde_duper | ||
| serde_duper_macros | ||
| tracing_duper | ||
| tree-sitter-duper | ||
| .envrc | ||
| .gitignore | ||
| ATTRIBUTIONS.md | ||
| biome.json | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| default.nix | ||
| duper.cow | ||
| flake.lock | ||
| flake.nix | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
| SECURITY.md | ||
| shell.nix | ||
Duper: The format that's super!
Duper aims to be a human-friendly extension of JSON with quality-of-life improvements, extra types, and semantic identifiers.
Check out the official website for examples, quick start guides, and more.
UserProfile({
id: Uuid("f111c275-b4ce-4392-8e5b-19067ce39b53"),
username: "EpicEric",
email: EmailAddress("eric@duper.dev.br"),
settings: {
"dark mode": true,
language: Locale("pt-BR"),
metadata: null,
},
score: 120.25,
// Support for bytes, woohoo!
avatar: Png(b64"iVBORw0KGgoAAAANSUhEUgAAAGQ="),
bio: r#"Hello! I'm a super "duper" user!"#,
last_logins: [
(IPv4Address("192.168.1.100"), Instant('2024-03-20T14:30:00Z')),
],
})
Why Duper?
Duper excels in a variety of use cases:
- In configuration files, where users are expected to swap out values, its explicit types can be a helpful guide.
- Thanks to its extended type support and self-documenting identifiers, Duper feels right at home in REST APIs.
- With a simple and readable syntax for logs, Duper is a breath of fresh air for both manual and tool-assisted debugging.
For implementers
See the specification for more details.
Workspace structure
duper: Core implementation of the Duper parser and serializer in Rust, as well as Serde support. Used by Rust libraries and bindings in other languages.- Libraries
axum_duper: Axum support for Duper requests and responses.duper_rpc: Duper RPC implementation in Rust.serde_duper: Adds Duper-specific support for extra types for use with Serde, including a proc-macro viaserde_duper_macros.tracing_duper: A tracing layer for Duper.
- Bindings
duper-js-node: Node.JS bindings using NAPI-RS.duper-python: Python bindings using PyO3, including Pydantic and FastAPI support.duper_uniffi: Multi-language bindings using UniFFI.duper_uniffi/dotnet: C# / .NET bindings.duper-js-wasm: WebAssembly bindings.
- Libraries
duperq: A fast Duper and JSON filter/processor.duper_lsp: Duper LSP.duper-vs-code: Duper extension for Visual Studio Code.duper_zed: Duper extension for Zed.
duper_website: Official website for Duper, including the specification and WebAssembly-based playground.tree-sitter-duper: tree-sitter implementation of Duper.duperfmt: Duper formatter based on Topiary.