Skip to main content

Build Web3 dApps like Web2

Juno is a zero-knowledge blockchain platform that equips developers with all the essential tools to create any Web3 application, making it as easy as developing serverless Web2.

Embrace Cloud 3.0 with Ease

Blockchainless with minimal carbon impact.

Authentication

Ensure maximum security and privacy by using passwordless authentication to securely and anonymously identify users.

Learn more

Datastore

A simple and convenient programming model for storing data on the blockchain.

Learn more

Storage

Easily store and serve user-generated content, such as files, photos, and videos, on Web3.

Learn more

Hosting

Maintain your brand identity with a custom domain for your decentralized application.

Learn more

Functions

Execute custom code in response to background events, extend Juno's smart contracts, and develop features that run on-chain.

Learn more

Analytics

Gather valuable, anonymous user insights with a simple, lightweight, and open-source web analytics that do not use cookies.

Learn more

Crafted for web devs.

There are numerous ways to develop your projects without compromising on your favorite technologies.

Plug & Play Authentication.

Juno Authentication ensures deep integration with services like Datastore and Storage, offering a cohesive ecosystem.

You can manage your users in an administration console. A new entry is automatically created when a user successfully signs in.

import { signIn } from "@junobuild/core";

<button onClick={signIn}>Sign-in</button>

Efficient Libraries.

Juno offers advanced blockchain capabilities via user-friendly JavaScript libraries, enabling seamless integration into your frontend projects.

import { setDoc } from "@junobuild/core";

await setDoc<Example>({
collection: "my_collection_key",
doc: {
key: "my_document_key",
data: myExample,
},
});

Serverless Functions.

Enhance Juno's capabilities with strongly-typed hooks, automatically triggered to execute custom logic on your smart contract.

#[derive(Serialize, Deserialize)]
struct Person {
hello: String,
amount: DocDataBigInt,
}

#[on_set_doc]
fn on_set_doc(context: OnSetDocContext) -> Result<(), String> {
let data: Person = decode_doc_data(&context.data.data.after.data)?;

print(format!("Caller: {}", context.caller.to_text()));
print(format!("Data: {}", amount.value));
}

Developer-Focused Tools.

Designed by developers for developers, Juno's tools and console empower you to manage your dApps, monitor, and administrate your data.

Utilize the convenient CLI or GitHub Actions to deploy your projects with ease.

npm i -g @junobuild/cli
❯ juno deploy

Develop your next decentralized app in no time.

Start building