Home
Softono
juno

juno

Open source MIT TypeScript
410
Stars
72
Forks
71
Issues
5
Watchers
1 week
Last Commit

About juno

Open-Source SDK for building apps

Platforms

Web Self-hosted Docker

Languages

TypeScript


GitHub Actions Workflow Status Last Commit Discord

[!IMPORTANT]
Juno is in maintenance and not actively developed anymore. Do not use it for anything serious.

⭐️ Description

[Juno] is a platform for hosting static websites, building web applications, and running serverless functions with the privacy and control of self-hosting.

It provides a familiar cloud experience with strong security and zero operational complexity. Each project runs in its own WASM container, fully owned and controlled by you.

Think of it as Vercel + Firebase + Self-Hosting - without the compromises.

  • πŸ”‘ Authentication [Docs]
  • πŸ“¦ Datastore [Docs]
  • πŸ“‚ File Storage [Docs]
  • 🌐 Hosting [Docs]
  • βš™οΈ Serverless Functions [Docs]
  • πŸ“Š Analytics [Docs]
  • πŸ‘€ Monitoring [Docs]
  • πŸ’Ύ Snapshots [Docs]


A screenshot of the Juno Console


⚑️ Why Juno?

  • Zero DevOps - No servers to manage, no infrastructure to maintain
  • Full-stack - Every service you need runs in your container, no third party needed
  • True Ownership - Your code, data, and infrastructure are fully yours
  • Local-First Development - Full production-like emulator for rapid iteration

πŸš€ Quick Start

// Initialize Juno
import { initSatellite } from '@junobuild/core';
await initSatellite();

// Store data
import { setDoc } from '@junobuild/core';
await setDoc({
    collection: 'posts',
    doc: {
        key: 'my-post',
        data: { title: 'Hello Juno!' }
    }
});

βš™οΈ Serverless Functions

Write serverless functions in TypeScript or Rust and deploy them to your own WASM container.

TypeScript:

import { j } from '@junobuild/schema';
import { defineQuery } from '@junobuild/functions';

export const hello = defineQuery({
    args: j.strictObject({
        name: j.string()
    }),
    handler: ({ data }) => {
        return { message: `Hello, ${data.name}!` };
    }
});

Rust:

#[ic_cdk::query]
fn hello(name: String) -> String {
    format!("Hello, {}!", name)
}

🚒 Deploy

Deploy to production with a single command:

# Deploy your frontend
juno hosting deploy

# Deploy your serverless functions
juno functions publish

Or integrate with GitHub Actions β†’ Setup CI/CD

πŸ§ͺ Local Development

Spin up a full production-like environment locally using the Juno emulator:

juno emulator start

Run with Docker or Podman β†’ Emulator Docs

πŸ’β€β™‚οΈοΈ Links & Resources

Here are some useful links:

  • Looking to get started? Check out the Guides & Examples for step-by-step tutorials and sample code.
  • Explore the full documentation for in-depth details on using and configuring Juno.
  • See the HACKING document for instructions on running and developing Juno locally.

πŸ–₯️ Bootstrap

Planning to build a website, blog, or web application? Start quickly by scaffolding a new project using a template.

# with npm
npm create juno@latest
# with pnpm
pnpm create juno
# with yarn
yarn create juno

🎯 Live Examples

Check out the showcase.

πŸ§‘β€πŸ€β€πŸ§‘ Community

Have questions, comments, or feedback? Join our Discord or OpenChat.

πŸ’¬ Contact

Find us on X/Twitter at @junobuild or email us at [email protected].