5.8 KiB
5.8 KiB
NuQloud Blueprint
This document defines the target repo layout, branch strategy, and feature-flag matrix for the productized fork:
- Core upstream:
crowetic/Qortal-Nextcloud-Integration - Product fork:
NuQloud/NuQloud-Nextcloud
Companion docs:
docs/product/prd-v1.mddocs/product/v1-feature-scope.mddocs/product/v1-functions.mddocs/engineering/implementation-matrix.mddocs/engineering/milestone-issue-list.mddocs/product/pricing-packages-v1.mddocs/engineering/billing-architecture-v1.mddocs/product/paymenter-readonly-setup.md
Git strategy
Recommended workflow:
- Keep
originpointed to core upstream. - Keep
nuqloudpointed to product fork. - Do product work on product branches, not
main.
Example commands:
git remote add nuqloud https://gitea.qortal.link/NuQloud/NuQloud-Nextcloud.git
git switch -c nuqloud-bootstrap
git push -u nuqloud nuqloud-bootstrap
Sync core updates into product fork:
git fetch origin
git switch nuqloud-bootstrap
git merge origin/main
Target repo structure
Start with this staged structure in the product fork.
.
├── nextcloud/
│ └── custom_apps/
│ └── qortal_integration/ # Keep internal app ID for compatibility
├── services/
│ ├── qortal-oidc-broker/ # Keep as auth/provision core
│ └── nuqloud-control-plane/ # Future: tiering, credit ledger, ops APIs
├── deploy/
│ ├── templates/
│ │ ├── qortal/
│ │ ├── nginx/
│ │ └── apache/
│ └── installers/
│ ├── docker/
│ └── vm/
├── scripts/
│ ├── install-production-docker.sh
│ ├── nextcloud-vm-install.sh
│ └── setup-wizards/
├── docs/
│ ├── product/
│ │ ├── modes.md
│ │ ├── pricing-tiers.md
│ │ ├── security-model.md
│ │ └── backup-replication.md
│ └── engineering/
│ ├── feature-flags.md
│ └── migration-plan.md
└── Makefile
Product modes
Two modes should be first-class and switchable at runtime:
poweredmode:- Qortal hidden behind NuQloud language.
- QORT shown as credits (or hidden if policy requires).
- End-user UI minimizes protocol details.
full_qortalmode:- Current Qortal-native UX/terms.
- Full Q-Apps and Qortal terminology.
- Best for existing Qortal communities.
Feature flag matrix (v1)
Use server-side flags persisted in Nextcloud app config and mirrored to broker/external-auth where relevant.
| Flag | Type | Default powered |
Default full_qortal |
Scope | Notes |
|---|---|---|---|---|---|
SC_MODE (powered,full_qortal) |
enum | powered |
full_qortal |
global | Master product mode |
SC_SHOW_QORTAL_BRANDING |
bool | false | true | UI | Logos/text/terminology |
SC_ENABLE_QAPPS |
bool | true | true | UI/API | App launcher + browser |
SC_ENABLE_QAPPS_DEBUG |
bool | false | true | UI | Debug panel + advanced internals |
SC_ENABLE_FULL_BROWSER_MODE |
bool | false | true | UI | Arbitrary qortal:// browsing |
SC_ENABLE_DIRECT_QORTAL_LOGIN |
bool | false | true | auth | Show native Qortal login path |
SC_ENABLE_NEW_QORTAL_ACCOUNT_ONBOARDING |
bool | true | true | auth | Create+link flow |
SC_REQUIRE_EMAIL_FOR_NEW_ACCOUNTS |
bool | true | false | auth | Enforce email field for new users |
SC_REQUIRE_INVITE_OR_ALLOWLIST |
bool | true | configurable | auth | Guard for auto-provision |
SC_ENABLE_SESSION_AUTO_REFRESH |
bool | true | true | broker | Keep ext-auth session aligned to NC session |
SC_SHOW_WALLET_PASSWORD_PROMPTS |
bool | conditional | conditional | auth UX | Only when wallet unlock required |
SC_ENABLE_APPROVAL_AUTOMATION |
bool | true | true | auth UX | Type/app policy saves |
SC_ENABLE_PER_APP_APPROVAL |
bool | true | true | auth UX | Scope by app URI |
SC_ENABLE_PER_TYPE_APPROVAL |
bool | true | true | auth UX | Scope by request type |
SC_ENABLE_NUQLOUD_BACKUPS |
bool | true | true | backup | Backup publish/restore UX |
SC_ENABLE_REPLICATION_PACKAGES |
bool | false | false | backup | Paid tier feature gate |
SC_ENABLE_ZERO_ACCESS_REPLICATION |
bool | false | false | backup | Encrypted/chunked replication only |
SC_ENABLE_CREDIT_LEDGER |
bool | true | optional | billing | Internal usage accounting |
SC_HIDE_QORT_AS_CREDITS |
bool | true | false | billing/UI | Display abstraction layer |
SC_ENABLE_ADMIN_QORT_REQUEST_QUEUE |
bool | true | true | admin | Initial funding workflow |
SC_ENABLE_VENDORLESS_OIDC_COPY |
bool | true | true | UI/docs | NuQloud identity messaging |
Configuration model
Rule of thumb:
- Security and transport settings: env vars (
.env*) + startup scripts. - Product behavior flags: Nextcloud app config (admin panel).
- Runtime mirrors: best-effort sync from app config to broker/external-auth for applicable keys.
Milestones for the fork
M1 Rebrand foundation- Keep app id as
qortal_integrationand rebrand display/UI labels - Add mode switch + compatibility layer
- Keep app id as
M2 Powered mode UX- Credit language, simplified onboarding, low-friction dashboard
M3 Full mode parity- Preserve all current Qortal-native capabilities
M4 NuQloud backups + replication packages- Chunked encrypted backup publishing + verification + restore UX
M5 Tiering/billing integration- Feature gating and metering hooks for paid offerings
Non-negotiables
- No plaintext password storage.
- Broker endpoints never exposed without internal auth token.
- Deterministic migration path
powered -> full_qortalwithout account breakage. - Data portability first: export/import across providers and devices.