# Juno Juno is your self-contained serverless platform for building full-stack web apps without DevOps or backend boilerplate. Developers use their favorite frontend frameworks like React, SvelteKit, or Next.js, and write backend logic in Rust or TypeScript as serverless functions. Everything is bundled into a single WebAssembly (WASM) artifact that runs in a decentralized, stateful environment — under full user ownership — on the Internet Computer. Juno cannot access or modify your code, data, or infrastructure. It supports GitHub Actions for deploys and upgrades, and provides both a CLI and web Console UI for managing projects. The local development environment closely mirrors production, ensuring smooth transitions from build to deployment — all with the privacy and control developers expect from self-hosting. ## Getting Started - [Introduction to Juno](https://juno.build/docs/intro.md): Explore Juno's serverless functions, hosting, and data capabilities. Start building with Juno today — no DevOps, no setup friction. - [Start a New Project](https://juno.build/docs/start-a-new-project.md): Build a full-stack app with Juno — whether you're using a template, starting from scratch, or adding it to an existing project. - [Setup the SDK](https://juno.build/docs/setup-the-sdk.md): Connect your web app to a Juno Satellite to unlock features like auth, data, storage, and functions. This guide shows how to set up the SDK with or without build plugins. - [Run your project locally](https://juno.build/docs/guides/local-development.md): Run a full local development environment with the Juno emulator using Docker or Podman, complete with Console UI, live reload, and smart contract support. - [Deploy with a Satellite](https://juno.build/docs/create-a-satellite.md): A quick guide to creating a Satellite on Juno in production — the container that powers your app. ## Build - Analytics - [Development](https://juno.build/docs/build/analytics/development.md): Learn how to track page views, custom events, and performance metrics. - [Setup](https://juno.build/docs/build/analytics/setup.md): This section covers how to integrate and configure Juno Analytics in your app or website. ## Build - Authentication - [Google](https://juno.build/docs/build/authentication/google.md): Learn how to integrate Google Sign-In with Juno using OpenID Connect for secure, standards-based authentication. - [Internet Identity](https://juno.build/docs/build/authentication/internet-identity.md): Learn how to integrate Internet Identity with Juno for decentralized, privacy-preserving authentication on the Internet Computer. - [Management](https://juno.build/docs/build/authentication/management.md): This page provides an overview of the administrative functions available in the Juno Console related to user management. - [Passkeys](https://juno.build/docs/build/authentication/passkeys.md): Learn how to integrate Passkeys (WebAuthn) authentication with Juno for secure, passwordless user identification. - [Utilities](https://juno.build/docs/build/authentication/utilities.md): Learn about shared authentication features in Juno, such as signing out, reacting to auth state changes, and accessing user identities. ## Build - Datastore - [Collections](https://juno.build/docs/build/datastore/collections.md): You can create or update a collection in the "Collections" tab in Juno's console under the datastore view. - [Development](https://juno.build/docs/build/datastore/development.md): This page provides an overview of how to integrate and manage documents using the Juno SDK, including adding, retrieving, updating, listing, and deleting documents within your app. ## Build - Functions - [Lifecycle](https://juno.build/docs/build/functions/lifecycle.md): Understand the full journey of Serverless Functions in Juno, from setup and development to deployment and maintenance. - [Logs](https://juno.build/docs/build/functions/logs.md): Writing and viewing logs is a crucial tool for debugging and monitoring your code. Serverless Functions offer you the option to utilize loggers to report status effectively. ## Build - Functions - Development - [Rust](https://juno.build/docs/build/functions/development/rust.md): This page covers advanced options for writing serverless functions in Rust. - [TypeScript](https://juno.build/docs/build/functions/development/typescript.md): This page covers advanced options for writing serverless functions in TypeScript. ## Build - Hosting - [Configuration](https://juno.build/docs/build/hosting/configuration.md): You can customize your hosting environment to fit your needs, including: - [Development](https://juno.build/docs/build/hosting/development.md): This section covers how to configure and manage your custom domain in Juno, including setting up DNS records, troubleshooting common issues, and ensuring compatibility with various domain providers. ## Build - Storage - [Collections](https://juno.build/docs/build/storage/collections.md): You can create or update a collection in the "Collections" tab in Juno's console under the storage view. - [Development](https://juno.build/docs/build/storage/development.md): This page explains how to manage assets using the Juno SDK, including uploading, listing, counting, and deleting files within your application. It also covers configuration options for optimizing storage and access control. ## Comparison - [What makes Juno a great Heroku alternative](https://juno.build/docs/comparison/vs-heroku.md): See how Juno compares to Heroku — the simplicity of PaaS with the ownership and modern architecture of a decentralized serverless platform. - [What makes Juno a great Netlify alternative](https://juno.build/docs/comparison/vs-netlify.md): Discover why Juno is a compelling alternative to Netlify, offering true infrastructure ownership, predictable costs, and the same seamless static deployment experience — with more long-term control. - [What makes Juno a great Railway alternative](https://juno.build/docs/comparison/vs-railway.md): Discover why Juno is a powerful alternative to Railway, offering full ownership, integrated services, and the convenience of serverless without platform dependency. - [What makes Juno a great self-hosting alternative](https://juno.build/docs/comparison/vs-self-hosting.md): See how Juno compares to traditional self-hosting and why it offers the control of running your own infrastructure — without the ops burden. - [What makes Juno a great Vercel alternative](https://juno.build/docs/comparison/vs-vercel.md): Discover why Juno is a powerful alternative to Vercel, offering true ownership, decentralized infrastructure, and an integrated full-stack developer experience. ## Examples - [Frontend](https://juno.build/docs/examples/frontend.md): Build full apps with Juno using your preferred frontend framework. These examples cover everything from auth to data handling with React, SvelteKit, Angular, Next.js, and more. - [Functions](https://juno.build/docs/examples/functions.md): Write serverless backend logic for your app using TypeScript or Rust. These examples show how to use hooks, assertions, and common function patterns on Juno. ## Examples - Frontend - [Angular Example](https://juno.build/docs/examples/frontend/angular.md): A fullstack note-taking app built with Angular, and Tailwind CSS using Juno for authentication, data, and file storage. - [Next.js Example](https://juno.build/docs/examples/frontend/nextjs.md): A fullstack note-taking app built with Next.js, and Tailwind CSS using Juno for authentication, data, and file storage. - [React JavaScript Example](https://juno.build/docs/examples/frontend/react-javascript.md): A fullstack note-taking app built with React, JavaScript, and Tailwind CSS using Juno for authentication, data, and file storage. - [React TypeScript Example](https://juno.build/docs/examples/frontend/react-typescript.md): A fullstack note-taking app built with React, TypeScript, and Tailwind CSS using Juno for authentication, data, and file storage. - [SvelteKit Example](https://juno.build/docs/examples/frontend/sveltekit.md): A fullstack note-taking app built with SvelteKit, and Tailwind CSS using Juno for authentication, data, and file storage. - [Vanilla JavaScript Example](https://juno.build/docs/examples/frontend/vanilla-javascript.md): A fullstack note-taking app built with vanilla JavaScript, and Tailwind CSS using Juno for authentication, data, and file storage. - [Vue Example](https://juno.build/docs/examples/frontend/vue.md): A fullstack note-taking app built with Vue, and Tailwind CSS using Juno for authentication, data, and file storage. ## Examples - Functions - [Rust](https://juno.build/docs/examples/functions/rust.md): Examples of writing serverless functions in Rust for Juno. Includes patterns like custom assertions, data manipulation and calls. - [TypeScript](https://juno.build/docs/examples/functions/typescript.md): Examples of writing serverless functions in TypeScript for Juno. Includes patterns like custom assertions, data manipulation and calls. ## Examples - Functions - Rust - [Rust Assertions Example](https://juno.build/docs/examples/functions/rust/assertion.md): An example demonstrating how to write custom assertions in Rust for Juno serverless functions. - [Making Canister Calls in Rust Serverless Functions](https://juno.build/docs/examples/functions/rust/canister-calls.md): An example showing how to call external canisters (e.g., ICRC ledger) from a serverless function written in Rust using Juno Satellites. - [Generating Assets with Rust Serverless Functions](https://juno.build/docs/examples/functions/rust/generating-assets.md): An example showing how to dynamically generate and store assets (like JSON) in Storage using Rust in Juno Satellites. - [Mutating Documents with Rust Hooks](https://juno.build/docs/examples/functions/rust/mutating-docs.md): An example demonstrating how to modify and re-save documents in Juno Satellites using Rust hooks. ## Examples - Functions - Typescript - [TypeScript Assertions Example](https://juno.build/docs/examples/functions/typescript/assertion.md): An example demonstrating how to write custom assertions in TypeScript for Juno serverless functions. - [Making Canister Calls in TypeScript Serverless Functions](https://juno.build/docs/examples/functions/typescript/canister-calls.md): An example showing how to call external canisters (e.g., ICRC ledger) from a serverless function written in TypeScript using Juno Satellites. - [Mutating Documents with TypeScript Hooks](https://juno.build/docs/examples/functions/typescript/mutating-docs.md): An example demonstrating how to modify and re-save documents in Juno Satellites using TypeScript hooks. ## Guides - [AI](https://juno.build/docs/guides/ai.md): Learn how to use Juno's llms.txt files to provide AI tools with better context for building serverless functions, deploying satellites, and integrating the SDK. - [Angular](https://juno.build/docs/guides/angular.md): Explore how to create a Juno project developed with Angular. - [Astro](https://juno.build/docs/guides/astro.md): Explore how to create a Juno project developed with Astro. - [Docusaurus](https://juno.build/docs/guides/docusaurus.md): Explore how to deploy a Juno project developed with Docusaurus. - [End-to-End Testing](https://juno.build/docs/guides/e2e.md): Learn how to write and run end-to-end (E2E) tests for your Juno project using tools like Playwright and GitHub Actions. Includes emulator setup, authentication handling, and CI integration. - [Manual](https://juno.build/docs/guides/manual-deployment.md): Learn how to deploy an application to a Juno Satellite from your device using the CLI. - [Next.js](https://juno.build/docs/guides/nextjs.md): Explore how to create a Juno project developed with Next.js. - [NodeJS](https://juno.build/docs/guides/nodejs.md): SDK usage in a NodeJS or CLI context - [React](https://juno.build/docs/guides/react.md): Explore how to create a Juno project developed with React. - [Rust](https://juno.build/docs/guides/rust.md): Learn how to develop, integrate, and extend Juno Satellites with serverless functions written in Rust. - [SvelteKit](https://juno.build/docs/guides/sveltekit.md): Explore how to create a Juno project developed with SvelteKit. - [TypeScript](https://juno.build/docs/guides/typescript.md): Learn how to develop, integrate, and extend Juno Satellites with serverless functions written in TypeScript. - [Vue](https://juno.build/docs/guides/vue.md): Explore how to create a Juno project developed with Vue. ## Guides - Angular - [Build an Angular App](https://juno.build/docs/guides/angular/build.md): Learn how to integrate Juno with Angular. Follow our quickstart guide to set up your development environment, configure your project, and start building with Juno. - [Deploy an Angular App](https://juno.build/docs/guides/angular/deploy.md): Learn how to deploy your Angular project to Juno. Follow the deployment guide to configure static exports, set up your satellite, and publish your site to production. ## Guides - Astro - [Build an Astro App](https://juno.build/docs/guides/astro/build.md): Learn how to integrate Juno with Astro. Follow our quickstart guide to set up your development environment, configure your project, and start building with Juno. - [Deploy an Astro Site](https://juno.build/docs/guides/astro/deploy.md): Learn how to deploy your Astro project to Juno. Follow the deployment guide to configure static exports, set up your satellite, and publish your site to production. ## Guides - Docusaurus - [Deploy a Docusaurus Site](https://juno.build/docs/guides/docusaurus/deploy.md): Learn how to deploy your Docusaurus project to Juno. Follow the deployment guide to configure static exports, set up your satellite, and publish your site to production. ## Guides - Github-actions - [Deploy Frontend](https://juno.build/docs/guides/github-actions/deploy-frontend.md): This section describes how to deploy the frontend of your project using GitHub Actions. The frontend typically includes all client-side assets — such as HTML, CSS, JavaScript, and other static files—that are served to users. - [Publish Functions](https://juno.build/docs/guides/github-actions/publish-functions.md): This section explains how to automate the build and publication of your serverless functions using GitHub Actions. The process works for functions written in TypeScript or Rust and helps integrate function deployment into your development workflow. - [Upgrade Functions](https://juno.build/docs/guides/github-actions/upgrade-functions.md): We do not recommend upgrading your container directly from CI in production. ## Guides - Nextjs - [Build a Next.js App](https://juno.build/docs/guides/nextjs/build.md): Learn how to integrate Juno with Next.js. Follow our quickstart guide to set up your development environment, configure your project, and start building with Juno. - [Deploy a Next.js App](https://juno.build/docs/guides/nextjs/deploy.md): Learn how to deploy your Next.js project to Juno. Follow the deployment guide to configure static exports, set up your satellite, and publish your site to production. ## Guides - React - [Build a React App](https://juno.build/docs/guides/react/build.md): Learn how to integrate Juno with React. Follow our quickstart guide to set up your development environment, configure your project, and start building with Juno. - [Deploy a React App](https://juno.build/docs/guides/react/deploy.md): Learn how to deploy your React project to Juno. Follow the deployment guide to configure static exports, set up your satellite, and publish your site to production. ## Guides - Sveltekit - [Build a SvelteKit App](https://juno.build/docs/guides/sveltekit/build.md): Learn how to integrate Juno with SvelteKit. Follow our quickstart guide to set up your development environment, configure your project, and start building with Juno. - [Deploy a SvelteKit App](https://juno.build/docs/guides/sveltekit/deploy.md): Learn how to deploy your SvelteKit project to Juno. Follow the deployment guide to configure static exports, set up your satellite, and publish your site to production. ## Guides - Vue - [Build a Vue App](https://juno.build/docs/guides/vue/build.md): Learn how to integrate Juno with Vue. Follow our quickstart guide to set up your development environment, configure your project, and start building with Juno. - [Deploy a Vue App](https://juno.build/docs/guides/vue/deploy.md): Learn how to deploy your Vue project to Juno. Follow the deployment guide to configure static exports, set up your satellite, and publish your site to production. ## Management - [Monitoring](https://juno.build/docs/management/monitoring.md): Juno Monitoring ensures your containers remain operational by automatically managing cycle balances. Monitor your modules, configure thresholds, and enable auto-refill to prevent downtime effortlessly. - [Snapshots](https://juno.build/docs/management/snapshots.md): Snapshots are an essential component of any disaster recovery strategy. In the fast-paced world of development, unexpected issues can arise—such as accidental overwrites of critical data or bugs in updates. While these scenarios can't always be avoided, their impact can be minimized or mitigated. ## Miscellaneous - [Access Keys](https://juno.build/docs/miscellaneous/access-keys.md): Learn how to manage access keys in Juno, their roles, and how to generate them using the CLI or Console. - [Architecture](https://juno.build/docs/miscellaneous/architecture.md): Explore the architecture behind Juno — a self-contained execution space where your entire application lives in a single deployable unit under your full control. - [Best Practices](https://juno.build/docs/miscellaneous/best-practices.md): This page provides recommendations to improve your application when developing and deploying with Juno. - [Infrastructure](https://juno.build/docs/miscellaneous/infrastructure.md): Discover how Juno's infrastructure blends self-hosted deployment with WebAssembly containers, focusing on simplicity, control, and modern Web2-compatible tooling. - [Memory](https://juno.build/docs/miscellaneous/memory.md): This page explains how memory works conceptually and how you can monitor its usage through the Console. - [Provisioning Options](https://juno.build/docs/miscellaneous/provisioning-options.md): The creation wizard for Satellites and Orbiters includes advanced provisioning options for developers who need more control. - [Wallet](https://juno.build/docs/miscellaneous/wallet.md): This section provides guidance on managing your assets and cycles with your wallet, which are essential for maintaining and providing enough resources for your modules in the Juno ecosystem. - [Workarounds](https://juno.build/docs/miscellaneous/workarounds.md): This page is dedicated to helping you make the most of Juno features, even when some functionalities are not yet fully supported out of the box. Below, you'll find practical workarounds and guidance for processes which in the future will be resolved by new features. ## Reference - [CLI](https://juno.build/docs/reference/cli.md): Learn how to use the Juno CLI for managing, deploying and developing applications. Includes installation, login, deploy, building and more. - [Configuration](https://juno.build/docs/reference/configuration.md): When the juno command is run from your terminal or used in a CI environment, it will automatically attempt to locate a config file named juno.config.ts or juno.config.js or juno.config.json within your project's root directory. - [Emulator](https://juno.build/docs/reference/emulator.md): The emulator provides a complete local environment to build, test, and run your project without deploying anything live. There are two images available, depending on your needs: - [Functions](https://juno.build/docs/reference/functions.md): API reference for writing serverless functions in Rust or TypeScript. - [Plugins](https://juno.build/docs/reference/plugins.md): Learn how to use Juno Build plugins to optimize your development workflow. Detailed guides and examples included. - [Settings](https://juno.build/docs/reference/settings.md): This document will help you understand the different settings you can configure for your modules ([Satellites], [Mission controls], and [Orbiters]). ## Reference - Emulator - [Infrastructure](https://juno.build/docs/reference/emulator/infrastructure.md): In the local environment, several services (which can be either canisters or apps on the Internet Computer) are automatically spun up. This ensures that developers have everything they need to start building right out of the box. Thanks to built-in plugins and tooling, these services are automatically integrated into the environment, eliminating the need for developers to manually manage their bindings. - [Satellite](https://juno.build/docs/reference/emulator/satellite.md): Unlike Skylab, the image junobuild/satellite runs a single Satellite in a headless environment, without the Console UI. It always mounts the same Satellite, using the fixed ID jx5yt-yyaaa-aaaal-abzbq-cai. - [Skylab](https://juno.build/docs/reference/emulator/skylab.md): The junobuild/skylab image is an all-in-one emulator for local development. It bundles everything you need to build, test, and explore the Juno ecosystem: ## Reference - Functions - [Rust](https://juno.build/docs/reference/functions/rust.md): API reference for writing serverless functions in Rust. - [TypeScript](https://juno.build/docs/reference/functions/typescript.md): API reference for writing serverless functions with TypeScript. ## Reference - Functions - Rust - [IC-CDK](https://juno.build/docs/reference/functions/rust/ic-cdk.md): In the context of Juno, it enables your Satellite to perform low-level operations such as logging, accessing your Satellite identities, or communicating with other canisters — all essential when writing advanced serverless functions. - [SDK](https://juno.build/docs/reference/functions/rust/sdk.md): The SDK is provided by the junobuild-satellite crate. - [Utils](https://juno.build/docs/reference/functions/rust/utils.md): All utilities on this page are provided by the junobuild-utils crate. ## Reference - Functions - Typescript - [Canisters](https://juno.build/docs/reference/functions/typescript/canisters.md): The following functions can be used to interact with well-known Internet Computer canisters from your serverless functions. - [IC-CDK](https://juno.build/docs/reference/functions/typescript/ic-cdk.md): Juno exposes a growing set of these features for TypeScript, allowing you to build serverless functions that interact with the IC using a familiar developer experience. - [Node.js](https://juno.build/docs/reference/functions/typescript/node.md): The TypeScript runtime used in Juno does not provide full Node.js support. Polyfills are added iteratively to keep the environment stable and predictable. - [SDK](https://juno.build/docs/reference/functions/typescript/sdk.md): The SDK is provided by the @junobuild/functions library. - [Utils](https://juno.build/docs/reference/functions/typescript/utils.md): All utilities on this page are provided by the @junobuild/functions library. ## Miscellaneous - [FAQ](https://juno.build/docs/faq.md): Where do I find support? - [Pricing](https://juno.build/docs/pricing.md): Discover Juno's pricing structure, including operating costs, transaction fees, and cost examples. Learn how to manage and optimize your expenses. - [Terminology](https://juno.build/docs/terminology.md): In Juno, we use some terms that may be unfamiliar to some. This page provides a summary of the most commonly used terms. - [Troubleshooting](https://juno.build/docs/troubleshooting.md)