Sign in

    moondark

    A Django-inspired backend framework for MoonBit, built on moonback

    web
    backend
    framework
    http
    server
    Download zip
    Author
    Version
    0.1.1
    License
    Apache-2.0
    Last updated
    1 hour ago
    Downloads
    5

    #MoonDark

    CI Coverage Status License

    Modern batteries-included backend framework for MoonBit, built on MoonBack.

    #Quick Start

    ///|
    async fn main {
    let files = @files.CasFileStore::new(
    root="./uploads",
    catalog=@files.MemoryCatalog::new(),
    key="app-secret",
    )
    let app = @moonback.App(ctx => {
    ctx.add_middleware(@logging.middleware())
    ctx.add_middleware(@csrf.middleware())
    ctx.add_middleware(@sessions.middleware(@sessions.MemorySessionStore()))
    ctx.use_(files.routes())

    ctx.get("/", (req, res) => {
    let session = @sessions.get_session(req).unwrap()
    let views = match session["views"] {
    Some(Number(n, ..)) => n.to_int() + 1
    _ => 1
    }
    session["views"] = Json(views)
    res.send_text("Views: \{views}")
    })
    })
    defer app.close()

    let server = @moonback.listen(port=3000)
    app.serve(server)
    }

    #Install

    moon add KKKIIO/moondark # Database drivers and persistent backends (pick one or both) moon add KKKIIO/moondark_sqlite moon add KKKIIO/moondark_postgresql

    #Packages

    PackageDescriptionKey APIs
    KKKIIO/moondark/sessionsCookie-backed HTTP session middleware and pluggable storesmiddleware, get_session, SessionStore, MemorySessionStore
    KKKIIO/moondark/authPassword & OAuth2/OIDC authentication and session guardsAuth, SessionAuth, SocialFlow, CredentialStore
    KKKIIO/moondark/databaseScoped connection pool, transactions, and typed SQL queriesDB, Conn, Transaction, GenericClient
    KKKIIO/moondark/migrationIn-place SQL and code database migrationsMigrator, Migration, load_schema
    KKKIIO/moondark/tasksTransactional background task queue and concurrent workerTask, Worker, DBTaskBackend
    KKKIIO/moondark/filesFile storage with content-addressed blobs and presigned URLsFileStore, CasFileStore, Catalog
    KKKIIO/moondark/csrfStateless Sec-Fetch-Site / Origin CSRF protectionmiddleware, CrossOriginProtection
    KKKIIO/moondark/loggingOTel-aligned access logging and error recovery middlewaremiddleware, QueryLog
    KKKIIO/moondark/signingTimestamped HMAC cryptographic signingSigner, TimestampSigner

    #Integration Modules

    Core packages define backend-agnostic interfaces and in-memory implementations for local development and testing. For production persistence, use an integration module:

    • KKKIIO/moondark_sqlite — SQLite driver (open_db), SqliteSessionStore, SqliteCredentialStore, SqliteTaskBackend, SqliteCatalog.
    • KKKIIO/moondark_postgresql — PostgreSQL driver (open_db), PostgresSessionStore, PostgresCredentialStore, PostgresTaskBackend, PostgresCatalog.