Skip to main content

3 posts tagged with "release"

View All Tags

ยท 2 min read

I'm excited to announce that Juno, the blockchainless platform for Web3 app development, is now open for all developers! That's right, no more waiting for an invitation code to start building your decentralized applications with Juno. We believe that decentralization should be accessible to everyone, and removing this barrier to entry is a crucial step towards achieving that goal.

With Juno, you can build and deploy Web3 apps with just frontend code, making it an easy and accessible choice for developers of all levels. Juno provides powerful tools and services for authentication, simple store for your data, file storage, and hosting, so you can focus on building your app and not worry about the infrastructure.

Whether you're new to Web3 development or a seasoned pro, Juno's user-friendly platform makes it easy to build and deploy decentralized applications that can scale to meet the needs of your users. So why wait? Sign up for Juno today and start building your next-generation Web3 app!

Get startedโ€‹

I can't wait to see what you'll build with Juno.

Happy coding! ๐Ÿ‘‹

ยท 4 min read

A month ago, the first beta for Juno was released to the world. Since then, we have been fixing bugs and gathering feedback on what to tackle next. Today, we are excited to announce the release of some of our most requested features, which include:

Enhanced controller user experienceโ€‹

Controllers play a critical role in Juno, as they are used to grant administrative permissions to mission controls and satellites. They are the cornerstone of the authorization scheme that developers use to sign in and control their segments.

In previous versions, controllers were recorded and displayed only as IDs, which could be confusing. It was difficult to track which controller was granted on which machine and for what purpose.

To address this issue, we have reworked the system to give developers the option to set a "profile" for a controller when they log in.

Login screenshot

These profiles, these hints, will be displayed in the console and saved in the local authorization for easy reference.

Controllers screenshot

This way, developers can also manage multiple profiles locally and always know which identity they used to sign in.

โฏ juno use -p Brave_on_OSX
Now using Brave_on_OSX
โฏ juno whoami
Profile: Brave_on_OSX
Controller: kkh2y-hzkna-bftfj-yodg2-ks26e-nlfe2-...

If you are part of the beta program, it's important to note that this new feature was partially shipped as a breaking change and therefore requires an upgrade.

After installing the latest version of the CLI, we recommend upgrading your mission control first, followed by any satellites.

โฏ npm i -g @junobuil/cli
โฏ juno upgrade -m
โฏ juno upgrade

Custom domains supportโ€‹

With Juno Hosting, maintaining your brand identity is easier than ever thanks to the new support for custom domains. You can now use domain names like "" or "" to reinforce your unique online presence.

Custom domains screenshot

Furthermore, not only are custom domains now supported in Juno Hosting, but you can also easily edit and delete their configurations. To assist with on-boarding, we have improved the documentation and resources available for this feature.

Expanded ordering and filtering optionsโ€‹

During the early beta stage, pagination and filtering based on keys were available for listing assets and documents, but ordering options were limited.

To address this, we have extended the sorting feature to include timestamps, and you can now sort the keys, updated_at, and created_at fields in either ascending or descending order.

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

const myList = await listDocs({
collection: "my_collection_key",
filter: {
order: {
desc: true,
field: "updated_at",

Since the console uses the same technology to present the data to developers, you can also use these options to efficiently manage your data.

Ordering screenshot

These console's filters are now saved in local storage, ensuring that the last options selected are always applied.

New CLI and JS library featuresโ€‹

Of the many new features added to the CLI and JS library, the most useful one is likely the Web Worker that automatically logs out users when their session expires.

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

await initJuno({
satelliteId: "aaaaa-bbbbb-ccccc-ddddd-cai",
workers: {
auth: true, // ----------------------------------|
}, //|
}); //|
authSubscribe((user: User | null) => {
console.log("User:", user); // auto sign-out <-----|
// when session expires

This allows developers to proactively inform their users about the session's state, as it cannot be extended.

To provide a more natural experience, Juno uses now a default behavior of a modal for Internet Identity login, which is commonly done in separate tabs.

Login with II screenshot

Several iterations of the CLI were developed to support the deployment of these new features. Despite adding many of those, we aimed to keep the interface simple and avoid overcomplicating things unnecessarily.

CLI screenshot

Finally, the feedback we received from developers has been positive and motivating, and we believe we are close to making Juno publicly available. We have implemented everything necessary to achieve this goal.


Thank you for reading! Follow us on Twitter to stay up to date.

And, if youโ€™ve read this far, you should definitely join us on Discord. ๐Ÿ˜‰

ยท 3 min read

I am thrilled to introduce Juno, a groundbreaking open-source Blockchain-as-a-Service solution that makes building Web3 applications more accessible to the millions of front-end developers worldwide.

Overview screenshot

What is Juno?โ€‹

Unlike traditional Backend-as-a-Service (BaaS) platforms like Google Firebase or AWS Amplify, Juno runs entirely on the blockchain.

It allows you to forget about all the backend aspects of development, letting focus on what matters: the product your users see.

Our platform operates without controlling your data or work. With Juno, you truly own your creations.

The Juno closed beta program is launching today and is packed with all the essential features you need to start creating Web3 applications.

How It Worksโ€‹

Every project you create on Juno is a "Satellite": a smart contract that you own, running 100% on-chain. ๐Ÿ›ฐ๏ธ

It is a container for your application that holds all your project's state: users' persisted data, asset storage (images or video) and your application bundle.

A satellite lives on its own -- and only you can administrate it, because you own it, exactly like an NFT.


Juno allows developers to securely identify users anonymously and save their data on the blockchain.

Our easy-to-use SDKs support authentication via Internet Identity, a Web3 authentication provider that offers a secure blockchain login experience with a user-friendly Web2 interface, and more providers will be added soon.

Authentication integrates tightly with other Juno services, like datastore and storage:

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

const btn = document.querySelector("#signin");
btn?.addEventListener("click", signIn, { passive: true });

Authentication screenshot


Juno Datastore can be use to add persistence to your application using simple constructs: collections and documents.

Collections specify which users and/or administrators have access to their data. Juno itself does not have access to data in collections (unless you make it public, of course). Juno also gives you the possibility to design your architecture so that even you (the developer of your application) can have no access to the data saved by your users.

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

const collection = "my_collection";
const key = "my_key";

const doc = await getDoc({

await setDoc({
doc: {
data: {
email: myNewEmail,

Datastore screenshot


Juno Storage is the easiest way to let your users upload and manage their files securely on the blockchain. The API we provide is designed to obfuscate any potential complexity. It takes advantage of the same read and write permission concept as the Datastore and automatically makes the file available on the Internet with the help of a built-in query parameters "token" mechanism that can be use to make users files secret.

const input = document.querySelector("input");

const { downloadUrl } = await uploadFile({
data: input.files[0],
collection: "images",

Storage screenshot


Juno Hosting - like our other services - runs on the Internet Computer. It is the only blockchain with canister smart contracts that can serve web assets to browsers straight from the chain -- meaning no dependency on centralized Big Tech.

Therefore, the "Satellites" launched on Juno run entirely on blockchain, which allows for full decentralization.

Custom domain names are fully supported and easily configured, meaning your unique brand identity will be just as visible on chain.

Hosting screenshot

What's next?โ€‹

We are starting our closed beta program today. Contact David on Twitter or fill this form - built with Juno ๐Ÿ˜‰ - to enter the waiting list.

โญ๏ธโญ๏ธโญ๏ธ are also much appreciated: visit the GitHub repo and show your support!