Skip to content

Latest commit

 

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Supra is the CLI tool for creating new Supranim projects and managing them!

nimble install supra

API reference
Github Actions Github Actions

😍 Key Features

  • Bootstrap new Supranim projects with a single command
  • Download and extract starter template from GitHub
  • Interactive prompts for project configuration (name, author, license)
  • Start customizable project templates
  • Start versioned project templates (e.g. with specific versions of dependencies)
  • Written in Nim language

Create a new project

Initialize a new Supranim project from a starter template hosted on GitHub, the default template is the official Starter Kit available on the main branch.

supra init my-new-app

Create a new REST API project

Pass restapi as the project type to bootstrap from the REST API Starter Kit. You'll get an interactive checkbox prompt to pick YAML-based recipes (Space to toggle, Enter to confirm). Each recipe adds its .nimble dependencies, drops a service provider into src/service/provider/, and — for stateful providers only — wires an init line into App.services. Stateless Global providers (nimcypher, brotli, bag, multipart, nimcrypto, e2ee, nimsodium, zippy, zlib) need no init call.

supra init my-new-api restapi

Both project types (webapp — the default — and restapi) run the same recipe prompt, so the recipe list below applies to either.

Available recipes: jose, nimcypher, brotli, mimedb, bag, blackpaper, multipart, ozark, ormin, norm, nimcrypto, e2ee, nimsodium, zippy, zlib, plus one openparser/<module> recipe per parser module (json, yaml, toml, xml, csv, bson, fbe, html, feed, rss, ical, dotenv, fuzzy, path, plist, uuid, vcard, css, colors, qr, regex, svg).

Providers are real Supranim services: most use initService X[Global] with a high-level api (jose.issueToken/verifyToken, nimcypher.hashUserPassword/checkUserPassword, brotli.compressText, mimedb.mimeTypeFor, multipart.parseUpload, nimcrypto.hashUserPassword/checkUserPassword (PBKDF2 + scrypt) and nimcrypto.encryptData/decryptData (AES-256-GCM) plus encryptDataCbc/decryptDataCbc, full *Hex hash coverage (SHA-1/2, RIPEMD-160, SHA-3, BLAKE2), hmacHex, deriveKey, randomHex/randomToken and constantTimeEqual, e2ee (Argon2id passwords, AEAD seal/unseal, BLAKE2b over Monocypher), nimsodium (libsodium passwords, secretbox, hashing), zippy.compressData/decompressData, zlib.compressData/decompressData, norm validates DB_* env and offers withNormDb, ormin owns a global sqlite db for query: blocks). blackpaper is a Blackpaper[Singleton] holding a prepared dictionary (checkPassword/isStrongPassword), and ozark is an Ozark[Singleton] over Ozark's internal pool singleton that prepares tables (it also scaffolds src/model/user.nim; run ozark.init() after the base db.init()). Like ozark, the other two database recipes ship a model example: ormin adds src/service/database/schema.sql (import it with importModel), norm adds src/model/account.nim. jose and blackpaper also ship config/jose.yml (secret supports ${env.JWT_SECRET} refs) and config/blackpaper.yml (wordlist dictionary path) respectively.

For non-interactive use (CI), select recipes with the flag instead:

supra init my-new-api restapi --skipconfig --with=jose,bag,blackpaper

❤ Contributions & Support

🎩 License

Supranim | MIT license. Made by Humans from OpenPeeps.
Copyright © 2025 OpenPeeps & Contributors — All rights reserved.

About

⚡️ CLI tool for bootstrapping Supranim applications

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages