@starasia/scaffolder
v1.4.0
Published
StarAsia Developer Portal CLI (login SSO, buat project & modul ke GitHub) + engine template untuk dev-portal-api
Keywords
Readme
@starasia/scaffolder (CLI & Core Engine)
Core scaffolder package untuk ekosistem StarAsia yang bisa dijalankan langsung lewat CLI maupun di-import oleh dev-portal-api (Web Internal Developer Portal).
Katalog Template
| ID | Isi | CI/CD |
| :--- | :--- | :--- |
| node-fe-standalone (default) | React 18 + Vite + @starasia/admin + @starasia/sso v2 (custom login / OIDC redirect) | Firebase Hosting dev/prod |
| node-mfe-remote | MFE remote @module-federation/vite (expose ./App & ./menu), dual-mode standalone & host | Firebase Hosting dev/prod |
| node-express-api | Express + TS ESM + Prisma + Joi, 4-layer route → controller → service → repository | Cloud Run (main.yml) |
| go-fiber-api | Go 1.22 + Fiber v2, envelope response seragam | Cloud Run (main.yml) |
| python-fastapi | Python 3.12 + FastAPI + Pydantic v2 | Cloud Run (main.yml) |
| rust-axum-api | Rust + Axum 0.8 + Tokio, envelope response & header SSO | Cloud Run (main.yml) |
| rust-leptos-web | Rust + Leptos 0.8 (CSR/WASM) + Trunk — tanpa @starasia/admin, SSO, MFE | Firebase Hosting dev/prod |
| electron-desktop-shell | Desktop macOS/Windows: Electron shell yang membuka web app (acuan ofa-pro-desktop) + paksa update | Release tag → installer + update.json di Firebase Hosting |
| rust-egui-desktop | Desktop native Rust (egui) macOS/Windows/Linux + paksa update | Release tag → paket + update.json di Firebase Hosting |
Cara Pakai via CLI
CLI terhubung ke Dev Portal — sama dengan versi web: login SSO, akses mengikuti admin-dashboard, project tercatat di Riwayat, bisa membuat aplikasi SSO, dan template selalu versi terbaru dari server.
npx @starasia/scaffolder login # login SSO lewat browser (sekali; token disimpan & diperbarui otomatis)
npx @starasia/scaffolder # buat project baru: template → nama → tujuan → aplikasi SSO
npx @starasia/scaffolder create --template node-fe-standalone --name billing-web-app \
--org Star-Perkasa-Technology --sso new
npx @starasia/scaffolder add-module --name invoice --type backend-module \
--org Star-Perkasa-Technology --repo billing-api # push ke branch feat/module-invoice
npx @starasia/scaffolder history # riwayat dev portal
npx @starasia/scaffolder --helpTujuan project (--dest, default ditanya):
| Tujuan | Hasil |
| :-- | :-- |
| github-clone | repo GitHub dibuat lewat dev portal, lalu otomatis di-clone ke <folder>/<nama> (branch dev) |
| github | repo GitHub saja (sama dengan versi web) |
| local | file ditulis ke <folder>/<nama> di laptop, tanpa GitHub — tetap pakai template & aplikasi SSO dari dev portal dan tercatat di Riwayat |
--out <folder> menentukan folder induk (default: folder saat ini). Hanya CLI yang bisa menulis ke laptop — versi web selalu ke GitHub.
Token GitHub diambil dari env GITHUB_TOKEN (scope repo, workflow, read:org) atau otomatis dari GitHub CLI (gh auth login).
Mode lokal (tanpa dev portal, dipakai developer di dalam repo):
npx @starasia/scaffolder add-module --local --type mfe-feature --name purchase-order # route & menu otomatis terdaftar
npx @starasia/scaffolder init --name tmp-app --template node-express-api --out /tmp # verifikasi templateEnv opsional: STARASIA_DEV_PORTAL_API, STARASIA_SSO_URL, STARASIA_DEV_PORTAL_CLIENT_ID,
STARASIA_DEV_PORTAL_CALLBACK_PORT (default 53682), STARASIA_NO_BROWSER=1.
Publish ke npm
Otomatis lewat GitHub Actions (.github/workflows/publish.yml): setiap push ke main mem-publish
versi di package.json bila versi itu belum ada di npm. Rilis baru cukup naikkan version
(samakan dengan Vx.y.z rilis). Token: secret NPM_TOKEN di environment production.
Build & sinkron ke dev-portal-api
Package ini tidak punya node_modules sendiri; pakai tsc milik dev-portal-api:
cd dev-portal/starasia-scaffolder
rm -rf dist && ../dev-portal-api/node_modules/.bin/tsc && chmod +x dist/cli.js
yarn pack --filename ../dev-portal-api/packages/starasia-scaffolder.tgz
# atau cukup: cd ../dev-portal-api && yarn sync:scaffolder