@chidchanun/bcp 0.1.29 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,36 @@
1
1
  # BCP Framework
2
2
 
3
- BCP Framework is a React full-stack framework focused on file-based routing, SSR, server data loading, guarded application flows, API routes, authentication, database access, validation, logging, uploads, storage and standalone production deployment.
3
+ BCP Framework is a React full-stack framework for file-based routing, SSR, SPA navigation, server data loading, guarded application flows, API routes, authentication, database access, validation, uploads, storage and standalone Node.js production deployment.
4
4
 
5
- > **Development target:** `0.1.29`
5
+ > **Development target:** `0.2.1 — Documentation Platform`
6
6
  >
7
- > BCP is pre-1.0. The `0.1.29` source adds the Developer Experience milestone and remains an unreleased development target until local validation, RC checks, tagging and npm publication complete.
7
+ > `0.2.1` is an unreleased development target until local validation, RC checks, tagging and npm publication complete.
8
+
9
+ ## 0.2 platform
10
+
11
+ `0.2.0` established the Framework Platform baseline. `0.2.1` builds a machine-readable Documentation Platform on top of that baseline without intentionally removing application runtime public entrypoints.
12
+
13
+ The authoritative platform/documentation contracts are:
14
+
15
+ ```text
16
+ docs/platform-manifest.json
17
+ -> runtime target, public entrypoints, capabilities and compatibility
18
+
19
+ docs/docs-web-manifest.json
20
+ -> docs sections, routes, Markdown sources and releases
21
+
22
+ docs/api-manifest.json
23
+ -> public package entrypoints, source ownership and guide routes
24
+ ```
25
+
26
+ Authored documentation remains under `docs/*.md`.
27
+
28
+ Read more:
29
+
30
+ - [Framework Platform Contract](docs/platform-contract.md)
31
+ - [Documentation Platform](docs/documentation-platform.md)
32
+ - [API Reference](docs/api-reference.md)
33
+ - [Migrating to 0.2.x](docs/migration-0.2.md)
8
34
 
9
35
  ## Current capabilities
10
36
 
@@ -12,29 +38,29 @@ BCP Framework is a React full-stack framework focused on file-based routing, SSR
12
38
  | --- | --- |
13
39
  | Application | React SSR, hydration, layouts, metadata and SPA navigation |
14
40
  | Routing | Static, dynamic, catch-all, optional catch-all and route groups |
15
- | Server data | `loader.ts`, request-scoped server APIs |
41
+ | Server data | Route `loader.ts`, request-scoped server APIs |
16
42
  | Mutations | Route-owned `actions.ts` and `<Form>` |
17
43
  | Authorization | `guard.ts`, `requireAuth()`, `requireRole()` |
18
44
  | Authentication | JWT cookie sessions and auth helpers |
19
45
  | Middleware | Middleware System v2 with onion execution |
20
- | Validation | Typed validation helpers and structured validation errors |
46
+ | Validation | Typed validators and structured validation errors |
21
47
  | Error handling | HTTP error helpers and consistent error responses |
22
- | Database | MySQL pool/query helpers, transactions and migrations |
48
+ | Database | MySQL helpers, transactions and migrations |
23
49
  | Logging | Structured logger, request logger and request IDs |
24
50
  | Uploads | Buffered multipart helpers and production multipart streaming |
25
- | Storage | Local + S3-compatible adapters, streaming, listing, copy/move, metadata, bulk delete and signed S3 URLs |
51
+ | Storage | Local + S3-compatible storage, streaming, list/copy/move, metadata, bulk delete and signed URLs |
26
52
  | Caching | Response cache and revalidation primitives |
27
- | Developer tools | Project generators, `doctor` / `inspect` v2, updater, route inspection and project metadata |
28
- | Production | Standalone build, hardening gateway, graceful shutdown, trusted-proxy controls and HTTP timeouts |
29
- | Documentation | Markdown source map plus `docs/docs-web-manifest.json` for `bcp-docs-web` |
53
+ | Developer tools | Generators, Doctor/Inspect v2, updater, route inspection and project metadata |
54
+ | Production | Standalone Node.js build, hardening gateway, graceful shutdown, trusted proxy controls and HTTP timeouts |
55
+ | Documentation | Manifest-driven docs navigation, platform metadata and public API entrypoint reference |
30
56
 
31
57
  ## Requirements
32
58
 
33
- - Node.js `24.11` or newer
59
+ - Node.js `24.11.0` or newer
34
60
  - React `19`
35
61
  - npm
36
62
 
37
- Database features currently target MySQL.
63
+ Database framework primitives currently target MySQL. `create-bcp-app` can also scaffold PostgreSQL, SQLite and MongoDB application helpers.
38
64
 
39
65
  ## Quick start
40
66
 
@@ -44,32 +70,24 @@ cd my-app
44
70
  npm run dev
45
71
  ```
46
72
 
47
- Generated projects normally use the application dependency key `bcp`:
73
+ Generated projects normally keep one framework dependency key:
48
74
 
49
75
  ```json
50
76
  {
51
77
  "dependencies": {
52
78
  "bcp": "npm:@chidchanun/bcp@latest"
53
- },
54
- "scripts": {
55
- "dev": "bcp dev",
56
- "build": "bcp build",
57
- "start": "bcp start",
58
- "routes": "bcp routes",
59
- "update": "bcp update",
60
- "typecheck": "tsc --noEmit"
61
79
  }
62
80
  }
63
81
  ```
64
82
 
65
- Keep only one framework dependency named `bcp`. Installing both `bcp` and `@chidchanun/bcp` directly can load duplicate framework/React contexts.
83
+ Do not install both `bcp` and a second direct `@chidchanun/bcp` dependency in the same application; duplicate framework copies can create separate React/framework contexts.
66
84
 
67
85
  ## Application model
68
86
 
69
87
  ```text
70
88
  Browser
71
89
 
72
- BCP security / middleware / cache
90
+ Security / middleware / cache
73
91
 
74
92
  Route guard
75
93
 
@@ -80,7 +98,7 @@ React SSR
80
98
  Hydration / SPA navigation
81
99
  ```
82
100
 
83
- A route can keep page, loader, guard and actions together:
101
+ Typical route structure:
84
102
 
85
103
  ```text
86
104
  app/
@@ -98,73 +116,104 @@ app/
98
116
  └─ route.ts
99
117
  ```
100
118
 
101
- ## Routing
119
+ ## Public entrypoints
102
120
 
103
- Page routes are discovered from `app/**/page.tsx` and API routes from `app/**/route.ts`.
121
+ The `0.2.x` platform contract recognizes:
104
122
 
105
123
  ```text
106
- app/page.tsx /
107
- app/about/page.tsx /about
108
- app/users/[id]/page.tsx /users/:id
109
- app/docs/[...slug]/page.tsx /docs/*
110
- app/catalog/[[...slug]]/page.tsx /catalog and /catalog/*
111
- app/(admin)/settings/page.tsx /settings
124
+ bcp
125
+ bcp/island
126
+ bcp/cache
127
+ bcp/config
128
+ bcp/validation
129
+ bcp/error
130
+ bcp/database
131
+ bcp/auth
132
+ bcp/server
133
+ bcp/server-only
134
+ bcp/middleware
135
+ ```
112
136
 
113
- app/api/users/route.ts /api/users
114
- app/api/users/[id]/route.ts /api/users/:id
137
+ Application code should use these public package entrypoints rather than importing internal framework files under `packages/`.
138
+
139
+ The public list is validated in both:
140
+
141
+ - [Platform Manifest](docs/platform-manifest.json)
142
+ - [API Manifest](docs/api-manifest.json)
143
+
144
+ See [API Reference](docs/api-reference.md) for ownership and related guides.
145
+
146
+ ## CLI
147
+
148
+ Core commands:
149
+
150
+ ```bash
151
+ bcp dev
152
+ bcp build
153
+ bcp start
154
+ bcp routes
155
+ bcp update
156
+ bcp doctor
157
+ bcp inspect
158
+ bcp version
115
159
  ```
116
160
 
117
- Read more: [Routing](docs/routing.md)
161
+ Database migrations:
118
162
 
119
- ## Project generators — 0.1.29
163
+ ```bash
164
+ bcp db create create_users
165
+ bcp db migrate
166
+ bcp db status
167
+ bcp db rollback
168
+ ```
120
169
 
121
- BCP `0.1.29` adds generators for common framework files:
170
+ Project generators:
122
171
 
123
172
  ```bash
124
173
  bcp generate page dashboard/users
125
- bcp generate page users/[id]
126
174
  bcp generate api users
127
175
  bcp generate middleware
128
176
  bcp generate migration create_users
129
177
  ```
130
178
 
131
- Generated targets:
132
-
133
- ```text
134
- page -> app/<route>/page.tsx
135
- api -> app/api/<route>/route.ts
136
- middleware -> middleware.ts
137
- migration -> migrations/<timestamp>_<name>.ts
138
- ```
179
+ Page/API/middleware generators require `--force` before replacing an existing scaffold target.
139
180
 
140
- Page/API/middleware generators do not overwrite existing files unless `--force` is explicitly supplied:
181
+ On Windows, Microsoft SQL Server may provide another `bcp.exe`. For direct PowerShell usage prefer the project-local collision-free alias:
141
182
 
142
- ```bash
143
- bcp generate page dashboard/users --force
183
+ ```powershell
184
+ npm exec -- bcp-framework doctor
185
+ npm exec -- bcp-framework inspect
186
+ npm exec -- bcp-framework routes
187
+ npm exec -- bcp-framework generate page dashboard/users
144
188
  ```
145
189
 
146
- Migration generation reuses the existing database migration implementation so migration naming and format remain centralized.
147
-
148
- Read more: [Project Generators](docs/generators.md)
190
+ ## Routing, loaders, guards and actions
149
191
 
150
- ## Server data, guards and actions
192
+ BCP discovers pages from `app/**/page.tsx` and API handlers from `app/**/route.ts`.
151
193
 
152
- Server loaders live next to their route in `loader.ts`. Route authorization can be defined in `guard.ts`, while route-owned mutations live in `actions.ts`.
194
+ ```text
195
+ app/page.tsx /
196
+ app/users/[id]/page.tsx /users/:id
197
+ app/docs/[...slug]/page.tsx /docs/*
198
+ app/catalog/[[...slug]]/page.tsx /catalog and /catalog/*
199
+ app/(admin)/settings/page.tsx /settings
200
+ app/api/users/route.ts /api/users
201
+ ```
153
202
 
154
- ```ts
155
- import {
156
- requireRole,
157
- } from "bcp/auth";
203
+ Route-owned server features stay colocated:
158
204
 
159
- export const guard =
160
- requireRole("admin");
205
+ ```text
206
+ page.tsx
207
+ loader.ts
208
+ guard.ts
209
+ actions.ts
161
210
  ```
162
211
 
163
- Read more:
212
+ Guides:
164
213
 
214
+ - [Routing](docs/routing.md)
165
215
  - [Server Data Loaders](docs/server-data-loaders.md)
166
216
  - [Route Guards](docs/route-guards.md)
167
- - [Auth Route Guards](docs/auth-route-guards.md)
168
217
  - [Form Actions](docs/form-actions.md)
169
218
 
170
219
  ## Authentication and server APIs
@@ -185,9 +234,7 @@ import {
185
234
  } from "bcp/server";
186
235
  ```
187
236
 
188
- BCP also exposes lower-level JWT cookie session primitives through `bcp/server`.
189
-
190
- Read more:
237
+ Guides:
191
238
 
192
239
  - [Authentication](docs/authentication.md)
193
240
  - [JWT Sessions](docs/session-auth.md)
@@ -201,168 +248,42 @@ import {
201
248
  } from "bcp/database";
202
249
  ```
203
250
 
204
- The database layer provides lazy MySQL pool creation, prepared execution, query helpers, transactions and migrations.
251
+ BCP's database layer includes lazy MySQL pool creation, query/execute helpers, transactions and migrations.
205
252
 
206
- ```bash
207
- bcp db create create_users
208
- bcp db migrate
209
- bcp db status
210
- bcp db rollback
211
- ```
212
-
213
- Read more:
253
+ Guides:
214
254
 
215
255
  - [Database](docs/database.md)
216
256
  - [Database Migrations](docs/database-migrations.md)
217
257
 
218
- ## Uploads and streaming
219
-
220
- BCP supports the original buffered multipart helpers as well as production multipart-to-storage streaming:
221
-
222
- ```ts
223
- import {
224
- storeMultipartFile,
225
- } from "bcp/server";
226
-
227
- const stored =
228
- await storeMultipartFile(
229
- request,
230
- {
231
- storage,
232
- fieldName: "file",
233
- key: "documents/report.pdf",
234
- maxBytes: 100 * 1024 * 1024,
235
- constraints: {
236
- maxBytes: 80 * 1024 * 1024,
237
- allowedTypes: [
238
- "application/pdf",
239
- ],
240
- },
241
- }
242
- );
243
- ```
244
-
245
- `storeMultipartFile()` consumes `Request.body` incrementally and streams the selected file directly into storage. Request/body infrastructure limits still apply.
246
-
247
- Read more: [File Upload](docs/file-upload.md)
248
-
249
- ## Storage
250
-
251
- ### Local filesystem
252
-
253
- ```ts
254
- import {
255
- createLocalStorage,
256
- } from "bcp/server";
257
-
258
- const storage =
259
- createLocalStorage({
260
- directory: "./uploads",
261
- });
262
- ```
263
-
264
- `create-bcp-app --storage local` creates `lib/storage.ts` plus a visible `storage/README.md` / `.gitkeep` scaffold. Runtime objects remain ignored by Git.
265
-
266
- ### S3 / R2 / MinIO
267
-
268
- ```ts
269
- import {
270
- createS3Storage,
271
- } from "bcp/server";
272
-
273
- const storage =
274
- createS3Storage({
275
- bucket: process.env.S3_BUCKET!,
276
- region: process.env.S3_REGION!,
277
- endpoint: process.env.S3_ENDPOINT,
278
- accessKeyId: process.env.S3_ACCESS_KEY_ID,
279
- secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
280
- });
281
- ```
282
-
283
- Custom endpoints and `forcePathStyle` support common S3-compatible deployments such as MinIO. Keep credentials server-only.
284
-
285
- Read more: [S3-Compatible Storage](docs/s3-storage.md)
286
-
287
- ### Streaming storage
288
-
289
- The stable minimum `StorageAdapter` retains its buffered API while adapters can expose optional `putStream()` and `readStream()` implementations.
290
-
291
- ```ts
292
- import {
293
- getStorageCapabilities,
294
- putStorageStream,
295
- readStorageStream,
296
- } from "bcp/server";
297
- ```
298
-
299
- Both built-in local and S3 adapters support streaming reads/writes and byte ranges.
300
-
301
- Read more: [Storage and File Delivery](docs/storage.md)
302
-
303
- ### Storage Ecosystem — 0.1.27
304
-
305
- BCP `0.1.27` added a richer, additive object-storage API without invalidating older `StorageAdapter` implementations:
306
-
307
- ```ts
308
- import {
309
- copyStorageObject,
310
- createStorageSignedReadUrl,
311
- createStorageSignedWriteUrl,
312
- deleteStorageObjects,
313
- getStorageEcosystemCapabilities,
314
- getStorageMetadata,
315
- listStorageObjects,
316
- moveStorageObject,
317
- setStorageMetadata,
318
- } from "bcp/server";
319
- ```
320
-
321
- Listing supports prefix filtering, limits and opaque cursors. Copy and move use native adapter operations when available, with portable fallback behavior where practical. Portable user metadata is string-to-string metadata and is distinct from authorization/business state.
258
+ ## Storage and uploads
322
259
 
323
- S3-compatible storage also supports short-lived presigned direct-transfer URLs. Local storage intentionally does not emulate signed URLs.
260
+ `create-bcp-app` can scaffold:
324
261
 
325
- Read more: [Storage Ecosystem](docs/storage-ecosystem.md)
326
-
327
- ## File delivery
328
-
329
- `createStorageResponse()` serves local or cloud-backed objects through the same API with `GET`, `HEAD`, ETag/Last-Modified validators and single byte ranges.
330
-
331
- ```ts
332
- import {
333
- createStorageResponse,
334
- } from "bcp/server";
335
-
336
- return createStorageResponse(
337
- request,
338
- storage,
339
- "documents/report.pdf"
340
- );
262
+ ```text
263
+ None
264
+ Local Server
265
+ Amazon S3
266
+ Cloudflare R2
341
267
  ```
342
268
 
343
- Read more: [Storage and File Delivery](docs/storage.md)
344
-
345
- ## Middleware, validation, errors and caching
269
+ BCP storage supports local and S3-compatible adapters, streaming reads/writes, ranges, object listing, copy/move, portable metadata, bulk deletion and S3 signed URLs.
346
270
 
347
- BCP includes Middleware System v2, typed validation helpers, structured HTTP errors, structured logging and response caching/revalidation.
271
+ Guides:
348
272
 
349
- Read more:
350
-
351
- - [Middleware](docs/middleware.md)
352
- - [Validation](docs/validation.md)
353
- - [Error Handling](docs/error-handling.md)
354
- - [Logging and Observability](docs/development-logging.md)
355
- - [Caching](docs/caching.md)
356
- - [Security](docs/security.md)
273
+ - [File Upload](docs/file-upload.md)
274
+ - [Storage & File Delivery](docs/storage.md)
275
+ - [Storage Ecosystem](docs/storage-ecosystem.md)
276
+ - [S3-Compatible Storage](docs/s3-storage.md)
357
277
 
358
278
  ## Production build
359
279
 
280
+ Build:
281
+
360
282
  ```bash
361
283
  npm run build
362
- npm run start
363
284
  ```
364
285
 
365
- Standalone output is written under:
286
+ Output:
366
287
 
367
288
  ```text
368
289
  .bcp-framework/build/
@@ -372,211 +293,129 @@ Standalone output is written under:
372
293
  └─ server.mjs
373
294
  ```
374
295
 
375
- ### Production Hardening — 0.1.28
296
+ Run:
376
297
 
377
- The standalone runtime is wrapped by a public hardening gateway with configurable HTTP and shutdown behavior:
378
-
379
- ```dotenv
380
- BCP_REQUEST_TIMEOUT_MS=120000
381
- BCP_HEADERS_TIMEOUT_MS=66000
382
- BCP_KEEP_ALIVE_TIMEOUT_MS=65000
383
- BCP_SHUTDOWN_TIMEOUT_MS=10000
384
- BCP_TRUST_PROXY=false
298
+ ```bash
299
+ npm run start
385
300
  ```
386
301
 
387
- Standalone production handles `SIGTERM` and `SIGINT`, drains the public listener, runs application cleanup hooks and then stops internal runtime layers.
302
+ The `0.2.x` production target remains:
388
303
 
389
- ```ts
390
- import {
391
- registerShutdownHook,
392
- } from "bcp/server";
393
-
394
- registerShutdownHook(
395
- () => {
396
- storage.destroy();
397
- },
398
- {
399
- name: "storage",
400
- }
401
- );
304
+ ```text
305
+ standalone-node
402
306
  ```
403
307
 
404
- Trusted proxy mode is disabled by default. Enable `BCP_TRUST_PROXY=true` only when direct untrusted traffic cannot bypass the trusted reverse proxy/load balancer.
308
+ Native `.exe`, desktop and mobile compilation are future roadmap work and are not part of the current platform contract.
405
309
 
406
- Read more: [Production Hardening](docs/production-hardening.md)
310
+ Production hardening supports configurable request/header/keep-alive/shutdown timeouts, trusted-proxy handling and `SIGTERM` / `SIGINT` graceful shutdown.
407
311
 
408
- ## Doctor and Inspect v2 — 0.1.29
312
+ Read more: [Production Hardening](docs/production-hardening.md)
409
313
 
410
- `bcp doctor` now includes additional project/runtime diagnostics for:
314
+ ## Documentation Platform 0.2.1
411
315
 
412
- ```text
413
- lockfile / package manager
414
- multiple framework dependency declarations
415
- standalone production artifact
416
- Docker + reproducible install guidance
417
- storage provider
418
- production-hardening environment validity
419
- ```
316
+ `0.2.1` makes the framework repository directly consumable by `bcp-docs-web`.
420
317
 
421
- `bcp inspect` keeps its existing fields and adds a machine-readable `project` object with project metadata, selected presets and runtime/deployment information.
318
+ Recommended website flow:
422
319
 
423
- ```powershell
424
- npm exec -- bcp-framework doctor --json
425
- npm exec -- bcp-framework inspect --json
320
+ ```text
321
+ selected framework ref
322
+
323
+ docs/docs-web-manifest.json
324
+ docs/platform-manifest.json
325
+ docs/api-manifest.json
326
+
327
+ validate version + release state + public entrypoints
328
+
329
+ load referenced Markdown
330
+
331
+ sync CMS/search/navigation
332
+
333
+ render bcp-docs-web
426
334
  ```
427
335
 
428
- Read more: [Developer Tools](docs/developer-tools.md)
336
+ `bcp-docs-web` should not maintain a second hard-coded framework page list.
429
337
 
430
- ## Project metadata — 0.1.29
338
+ The manifests provide:
431
339
 
432
- New `create-bcp-app` projects include `bcp.project.json`:
433
-
434
- ```json
435
- {
436
- "schemaVersion": 1,
437
- "framework": "bcp",
438
- "projectName": "my-app",
439
- "packageManager": "npm",
440
- "presets": {
441
- "tailwind": true,
442
- "database": "mysql",
443
- "auth": "jwt-cookie",
444
- "storage": "local"
445
- }
446
- }
340
+ ```text
341
+ sidebar/category order
342
+ website routes
343
+ Markdown sources
344
+ version + release state
345
+ release routes
346
+ public package entrypoints
347
+ API guide ownership
447
348
  ```
448
349
 
449
- This file stores only non-secret scaffold metadata. Credentials, database passwords, access keys, JWT/session secrets and tokens stay in environment/server-only configuration.
350
+ The docs sync may target a release ref for historical content:
450
351
 
451
- Existing projects without the file continue to work; diagnostic tooling falls back to project files where practical.
352
+ ```powershell
353
+ npm run docs:sync -- --ref=v0.2.0
354
+ ```
452
355
 
453
- Read more: [Project Metadata](docs/project-metadata.md)
356
+ Read more:
454
357
 
455
- ## Windows CLI
358
+ - [Documentation Platform](docs/documentation-platform.md)
359
+ - [Documentation Source Map](docs/README.md)
360
+ - [Docs-Web Manifest](docs/docs-web-manifest.json)
361
+ - [Platform Manifest](docs/platform-manifest.json)
362
+ - [API Manifest](docs/api-manifest.json)
456
363
 
457
- Microsoft SQL Server can install another executable named `bcp.exe`. BCP publishes the collision-free alias `bcp-framework`.
364
+ ## Updating from 0.1.x / 0.2.x
458
365
 
459
- Inside project npm scripts, `bcp` is safe because npm prepends `node_modules/.bin` to `PATH`.
366
+ `0.2.1` does not intentionally remove application public entrypoints from the `0.2.0` baseline.
460
367
 
461
- For direct PowerShell usage:
368
+ After upgrading, always rebuild the standalone artifact instead of reusing `.bcp-framework/build` from another framework version.
462
369
 
463
- ```powershell
464
- npm exec -- bcp-framework --version
465
- npm exec -- bcp-framework doctor
466
- npm exec -- bcp-framework inspect
467
- npm exec -- bcp-framework routes
468
- npm exec -- bcp-framework generate page dashboard/users
469
- npm exec -- bcp-framework dev
470
- npm exec -- bcp-framework build
471
- ```
370
+ Read more: [Migrating to 0.2.x](docs/migration-0.2.md)
472
371
 
473
- Read more: [Developer Tools](docs/developer-tools.md)
372
+ ## Release validation
474
373
 
475
- ## Updating BCP
476
-
477
- ```bash
478
- bcp update
479
- bcp update --check
480
- bcp update --dry-run
481
- bcp update 0.1.29
482
- bcp update next
483
- ```
484
-
485
- Read more: [Updating](docs/updating.md)
486
-
487
- ## Framework development and release validation
374
+ Framework releases must pass:
488
375
 
489
376
  ```bash
490
377
  npm install
491
378
  npm run typecheck
492
379
  npm run test:unit
493
380
  npm run test:integration
494
- npm run test:e2e
495
381
  npm run test:package
382
+ npm run test:e2e
496
383
  npm run rc:check
497
384
  ```
498
385
 
499
- A version must not be tagged or published until its RC and packed-package verification pass.
500
-
501
- Read more: [Releasing](docs/releasing.md)
502
-
503
- ## Documentation source and `bcp-docs-web`
504
-
505
- The `docs/` directory is the authored source for **`bcp-docs-web`**.
506
-
507
- Starting with `0.1.29`, docs-web should consume:
508
-
509
- ```text
510
- docs/docs-web-manifest.json
511
- ```
512
-
513
- for sidebar/navigation and route mapping. Markdown files remain the documentation content source of truth.
386
+ `0.2.1` adds Documentation Platform unit/package checks that validate manifest version parity, docs source existence, API/public-entrypoint parity and prepared npm documentation artifacts.
514
387
 
515
- The manifest contains:
516
-
517
- ```text
518
- section id/title
519
- website route
520
- Markdown source file
521
- page title
522
- version target
523
- release state
524
- release routes
525
- ```
526
-
527
- Recommended starting points:
528
-
529
- - [Docs-Web Manifest](docs/docs-web-manifest.json)
530
- - [Documentation Source Map](docs/README.md)
531
- - [Getting Started](docs/getting-started.md)
532
- - [Configuration](docs/configuration.md)
533
- - [Project Metadata](docs/project-metadata.md)
534
- - [Routing](docs/routing.md)
535
- - [Project Generators](docs/generators.md)
536
- - [Server Data Loaders](docs/server-data-loaders.md)
537
- - [Route Guards](docs/route-guards.md)
538
- - [Form Actions](docs/form-actions.md)
539
- - [Server Request APIs](docs/server-request-apis.md)
540
- - [File Upload](docs/file-upload.md)
541
- - [Storage and File Delivery](docs/storage.md)
542
- - [Storage Ecosystem](docs/storage-ecosystem.md)
543
- - [S3-Compatible Storage](docs/s3-storage.md)
544
- - [Production Hardening](docs/production-hardening.md)
545
- - [Authentication](docs/authentication.md)
546
- - [Database](docs/database.md)
547
- - [Middleware](docs/middleware.md)
548
- - [Developer Tools](docs/developer-tools.md)
549
- - [Deployment](docs/deployment.md)
550
- - [Releasing](docs/releasing.md)
388
+ Do not tag or publish a release until the final release commit passes the complete RC sequence.
551
389
 
552
390
  ## Release history
553
391
 
554
392
  | Version | Milestone |
555
393
  | --- | --- |
556
- | `0.1.20` | Hydration line-ending stabilization |
557
- | `0.1.21` | Hydration semantic parity |
558
- | `0.1.22` | Developer tools and diagnostics |
559
- | `0.1.23` | Logging and observability |
560
394
  | `0.1.24` | File Upload Foundation |
561
395
  | `0.1.25` | Storage Adapters and File Delivery |
562
396
  | `0.1.26` | S3-Compatible Storage and Production Streaming |
563
397
  | `0.1.27` | Storage Ecosystem |
564
398
  | `0.1.28` | Production Hardening |
565
399
  | `0.1.29` | Developer Experience |
400
+ | `0.2.0` | Framework Platform |
401
+ | `0.2.1` | Documentation Platform |
566
402
 
567
- ## Next direction
403
+ ## Roadmap
568
404
 
569
- After `0.1.29`, the planned major milestone is **`0.2.0 — Framework Platform`**.
405
+ Next planned milestone:
406
+
407
+ ```text
408
+ 0.2.2 — Configuration & Environment v2
409
+ ```
570
410
 
571
- The focus should be consolidation rather than unrelated feature growth:
411
+ Focus:
572
412
 
573
- 1. public API consistency and compatibility expectations,
574
- 2. production-runtime stabilization across supported deployment paths,
575
- 3. documentation completeness and docs-web integration,
576
- 4. migration guidance for pre-`0.2.0` applications,
577
- 5. a documented platform baseline for routing, data, auth, database, storage and runtime APIs.
413
+ - typed production configuration improvements,
414
+ - environment validation,
415
+ - startup configuration diagnostics,
416
+ - configuration schema/inspection tooling.
578
417
 
579
- These are roadmap goals, not `0.1.29` guarantees.
418
+ Application packaging (`bcp package`, native executable experiments) remains later `0.2.x` roadmap work.
580
419
 
581
420
  ## License
582
421