Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
3c4d117
Move the Verdaccio registry into legacy/
roncodes Oct 21, 2026
a79fd4d
Scaffold the Registry Service as a Laravel 12 app
roncodes Oct 21, 2026
96be381
Add registry data model migrations, models and category seeder
roncodes Oct 21, 2026
68d5bb6
Add account auth: register, verification codes, login, tokens
roncodes Oct 21, 2026
83f0f37
Add the public catalog API
roncodes Oct 21, 2026
663e71f
Add Dockerfile, local compose stack, CI and README
roncodes Oct 21, 2026
317e22e
Add ReleaseStorage: package store over the files table with sha256, s…
roncodes Oct 22, 2026
c19ca63
Add npm packument and tarball endpoints
roncodes Oct 22, 2026
8deaa61
Add the instance API: registration codes, register, me, updates, inst…
roncodes Oct 22, 2026
e8105dc
Add the Composer v2 repository
roncodes Oct 22, 2026
9ab9018
Add the licence gate for package routes and registry:seed --seed-release
roncodes Oct 22, 2026
af96f08
Protect the @fleetbase/* and fleetbase/* package namespaces
roncodes Oct 22, 2026
66f5e20
Run npm and Composer conformance in CI and document the package endpo…
roncodes Oct 22, 2026
51d85fa
Add registry:import for the cloud registry-bridge tables
roncodes Oct 22, 2026
9aa8443
Merge feat/instance-api-importer into v2
roncodes Oct 22, 2026
457b8fb
Fold Compat::compare and normalizeVersion into Semver
roncodes Oct 22, 2026
c366ecf
Add the releases pipeline (Phase 2 Workstream E)
roncodes Oct 22, 2026
13b14fb
Add the website backend: cookie sessions, organizations, listing medi…
roncodes Oct 23, 2026
daa0c15
Resolve instance tokens in LicenceGate through Instance::findByToken
roncodes Oct 22, 2026
da606b1
Rebuild the registry website with Inertia (React) from the Waypoints …
roncodes Oct 23, 2026
d79c0fb
Website: console-compatible catalog, server-side rendering, account a…
roncodes Oct 23, 2026
befac81
Leave laravel-vite-plugin out under Vitest so the website CI job runs
roncodes Oct 23, 2026
ea3e7c7
Add commerce: Stripe Connect, price mirroring, checkout, webhooks, pa…
roncodes Oct 23, 2026
2540ee2
Add the Studio Payouts and account Billing pages, website checkout an…
roncodes Oct 23, 2026
648dda8
Leave refunds out of sales totals, show a generic message for platfor…
roncodes Oct 23, 2026
cae865f
Apply the commerce decisions: repeat purchases add seats, disputes re…
roncodes Oct 23, 2026
f3d9a2f
Add staff finance: fee revenue, refunds, disputes and per-publisher t…
roncodes Oct 23, 2026
171872c
Merge remote-tracking branch 'origin/feat/commerce' into feat/staff-f…
roncodes Oct 23, 2026
9bb6916
Point the website's CLI commands at flb login --token (CLI v2 removed…
roncodes Oct 23, 2026
5be07a5
Mint instance registration codes on the website: an Instances card on…
roncodes Oct 23, 2026
b1efb81
Add publisher analytics: listing and organization stats APIs with CSV
roncodes Oct 23, 2026
f93319b
Replace the Studio Insights placeholder with analytics
roncodes Oct 23, 2026
8411fc3
Review console: keep 'First release' after it goes live, show minutes…
roncodes Oct 23, 2026
18b1176
Merge remote-tracking branch 'origin/feat/website-inertia' into feat/…
roncodes Oct 23, 2026
b0b60eb
Merge remote-tracking branch 'origin/feat/commerce' into feat/staff-f…
roncodes Oct 23, 2026
18b0d14
Fix the website tests: a published release without a predecessor is t…
roncodes Oct 23, 2026
3d8b5e8
Merge remote-tracking branch 'origin/feat/website-inertia' into feat/…
roncodes Oct 23, 2026
807ae00
Merge remote-tracking branch 'origin/feat/commerce' into feat/staff-f…
roncodes Oct 23, 2026
dde08a6
Instance code card: show a refused code inline, and test it with the …
roncodes Oct 23, 2026
bab8f7f
Merge remote-tracking branch 'origin/feat/website-inertia' into feat/…
roncodes Oct 23, 2026
12e1b2d
Merge remote-tracking branch 'origin/feat/commerce' into feat/staff-f…
roncodes Oct 23, 2026
b36cd40
Instance code card test: one-shot API mocks, as the other page tests use
roncodes Oct 23, 2026
8352c93
Merge remote-tracking branch 'origin/feat/website-inertia' into feat/…
roncodes Oct 23, 2026
4b6fa59
Merge remote-tracking branch 'origin/feat/commerce' into feat/staff-f…
roncodes Oct 23, 2026
01904f0
Instance licences carry the purchase receipt, so a console keeps it a…
roncodes Oct 23, 2026
9fdd3d0
Merge remote-tracking branch 'origin/feat/commerce' into feat/staff-f…
roncodes Oct 23, 2026
4c148fa
Serve a release's prebuilt dist to installers: GET /npm/{engine}/-/di…
roncodes Oct 23, 2026
8b14b68
Merge remote-tracking branch 'origin/feat/commerce' into HEAD
roncodes Oct 23, 2026
c9ff0cb
Dist download test: the encoded-name request before If-None-Match, wh…
roncodes Oct 23, 2026
9d04893
Merge remote-tracking branch 'origin/feat/commerce' into feat/staff-f…
roncodes Oct 23, 2026
d9c3661
Rotate an instance that registers again with its previous token
roncodes Oct 23, 2026
e64fb3b
Merge release/v2.0.0 into feat/publisher-website
roncodes Oct 23, 2026
e5983cd
Merge release/v2.0.0 into feat/phase1-reconcile
roncodes Oct 23, 2026
ef6a55f
Merge feat/publisher-website into feat/website-inertia
roncodes Oct 23, 2026
fed8693
Merge feat/website-inertia into feat/commerce
roncodes Oct 23, 2026
b4a4e19
Merge feat/commerce into feat/staff-finance
roncodes Oct 23, 2026
eb2dc08
Merge remote-tracking branch 'origin/feat/staff-finance' into HEAD
roncodes Oct 24, 2026
68331fe
Rotate an instance that registers again from the same host
roncodes Oct 24, 2026
81715a7
Merge release/v2.0.0 into feat/phase1-reconcile
roncodes Oct 24, 2026
d5f0105
Merge release/v2.0.0 into feat/publisher-website
roncodes Oct 24, 2026
690deae
Merge feat/publisher-website into feat/website-inertia
roncodes Oct 24, 2026
8f630b4
Merge feat/website-inertia into feat/commerce
roncodes Oct 24, 2026
d16471a
Merge feat/commerce into feat/staff-finance
roncodes Oct 24, 2026
a3573a0
Merge feat/staff-finance into feat/publisher-analytics
roncodes Oct 24, 2026
bb09888
Merge pull request #7 into release/v2.0.0
roncodes Oct 24, 2026
b7e46c5
Merge pull request #6 into release/v2.0.0
roncodes Oct 24, 2026
6ebdde3
Merge pull request #8 into release/v2.0.0
roncodes Oct 24, 2026
9f8e36f
Merge release/v2.0.0 into feat/commerce
roncodes Oct 24, 2026
e16af51
Merge pull request #10 into release/v2.0.0
roncodes Oct 24, 2026
2e1cbc6
Merge pull request #11 into release/v2.0.0
roncodes Oct 24, 2026
e50a896
Merge pull request #12 into release/v2.0.0
roncodes Oct 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
22 changes: 22 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
.git
.github
.claude
legacy
node_modules
vendor
storage/logs/*
storage/framework/cache/*
storage/framework/sessions/*
storage/framework/views/*
database/*.sqlite*
.env
.env.*
!.env.example
tests
*.md
public/build
public/hot
bootstrap/ssr
playwright-report
test-results
storage/e2e
18 changes: 18 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 2

[compose.yaml]
indent_size = 4
13 changes: 13 additions & 0 deletions .env.docker
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Values shared by the app and queue containers in docker-compose.yml.
# Service-specific values (DB, mail, S3) are set in the compose file itself.
APP_NAME=Registry
APP_ENV=local
APP_KEY=base64:mOXOfgDmHCBgK9Dh04IkWop7kCUkE8yo+79PR3JVvxE=
APP_DEBUG=true
APP_TIMEZONE=UTC
LOG_CHANNEL=stderr
LOG_LEVEL=debug
BCRYPT_ROUNDS=12
REGISTRY_VERSION=2.0.0-dev
REGISTRY_CATALOG_CACHE_SECONDS=60
REGISTRY_ANALYTICS_CACHE_SECONDS=60
113 changes: 113 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
APP_NAME=Registry
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost:8000
APP_TIMEZONE=UTC

APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US

APP_MAINTENANCE_DRIVER=file

BCRYPT_ROUNDS=12

LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

# sqlite for a zero-dependency local run; docker-compose overrides this with mysql.
DB_CONNECTION=sqlite
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=registry
# DB_USERNAME=registry
# DB_PASSWORD=registry

# Publisher website cookie sessions (the `web` guard). The database store uses the `sessions`
# table; SESSION_LIFETIME (minutes) is also the sliding lifetime of the flbs_ session token.
SESSION_DRIVER=database
SESSION_LIFETIME=120
# true behind HTTPS (staging, production)
SESSION_SECURE_COOKIE=false
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null

BROADCAST_CONNECTION=log
QUEUE_CONNECTION=database
CACHE_STORE=database
# CACHE_PREFIX=

REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

# Verification codes go out by mail. Mailpit (docker compose) listens on 1025 / UI on 8025.
MAIL_MAILER=log
MAIL_HOST=127.0.0.1
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS="registry@fleetbase.local"
MAIL_FROM_NAME="${APP_NAME}"

# Sign in with GitHub (an OAuth app). Leave the id and secret empty to hide the button.
# The callback defaults to ${APP_URL}/auth/github/callback.
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GITHUB_REDIRECT_URI=

# Stripe (Connect, Checkout, webhooks). Commerce routes answer 503 until STRIPE_SECRET is set.
STRIPE_KEY=
STRIPE_SECRET=
# Comma-separated signing secrets: the platform endpoint's and the Connect endpoint's.
STRIPE_WEBHOOK_SECRET=
REGISTRY_FACILITATOR_FEE_BPS=1000
REGISTRY_LICENCE_MAX_ACTIVATIONS=5
REGISTRY_STRIPE_TAX=true
REGISTRY_STRIPE_TAX_CODE=
REGISTRY_COMMERCE_NOTIFY=

# Package store. Local disk by default; S3 / MinIO in docker and production.
FILESYSTEM_DISK=local
REGISTRY_STORAGE_DISK=local
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=fleetbase-registry
AWS_ENDPOINT=
AWS_URL=
AWS_USE_PATH_STYLE_ENDPOINT=false

# registry:import reads cloud bundle and icon objects from this disk (an s3 disk by default).
REGISTRY_IMPORT_SOURCE_DISK=import_source
IMPORT_SOURCE_AWS_BUCKET=
# IMPORT_SOURCE_AWS_ACCESS_KEY_ID=
# IMPORT_SOURCE_AWS_SECRET_ACCESS_KEY=
# IMPORT_SOURCE_AWS_DEFAULT_REGION=

# Registry
REGISTRY_VERSION=2.0.0-dev
REGISTRY_CATALOG_CACHE_SECONDS=60
REGISTRY_ANALYTICS_CACHE_SECONDS=60
# Base URL written into npm/Composer metadata; empty = the request's scheme and host.
REGISTRY_PUBLIC_URL=
REGISTRY_PACKAGE_METADATA_CACHE_SECONDS=60
HASH_VERIFY=true

# Release pipeline limits and the secrets scanner (auto | builtin | off).
# REGISTRY_MAX_BUNDLE_BYTES=52428800
# REGISTRY_MAX_DIST_BYTES=104857600
# REGISTRY_MAX_UNPACKED_BYTES=314572800
# REGISTRY_MAX_FILE_BYTES=26214400
# REGISTRY_MAX_ARCHIVE_ENTRIES=20000
REGISTRY_SECRETS_SCANNER=auto
# REGISTRY_GITLEAKS_BINARY=gitleaks
# REGISTRY_CHECKS_QUEUE=

# Sentry (optional)
SENTRY_LARAVEL_DSN=
11 changes: 11 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
* text=auto eol=lf

*.blade.php diff=html
*.css diff=css
*.html diff=html
*.md diff=markdown
*.php diff=php

/.github export-ignore
CHANGELOG.md export-ignore
.styleci.yml export-ignore
1 change: 1 addition & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ jobs:
VERSION: ${{ env.VERSION }}
CACHE: type=gha
with:
workdir: ./legacy
push: true
files: |
./docker-bake.hcl
Expand Down
Loading
Loading