@chidchanun/bcp 0.2.0 → 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/docs/README.md CHANGED
@@ -2,23 +2,26 @@
2
2
 
3
3
  The `docs/` directory is the documentation source of truth for BCP Framework and is organized for **`bcp-docs-web`**.
4
4
 
5
- > **Documentation target:** BCP Framework `0.2.0`
5
+ > **Documentation target:** BCP Framework `0.2.1`
6
6
  >
7
- > **Release state:** unreleased development target. Do not label `0.2.0` as published until RC validation, tagging and npm publication complete.
7
+ > **Release state:** unreleased development target. Do not label `0.2.1` as published until RC validation, tagging and npm publication complete.
8
8
 
9
- ## Documentation architecture
9
+ ## Documentation architecture — 0.2.1
10
10
 
11
- BCP `0.2.0` uses two machine-readable manifests:
11
+ BCP uses three machine-readable documentation contracts:
12
12
 
13
13
  ```text
14
14
  docs/docs-web-manifest.json
15
- -> website navigation, routes, Markdown sources and release pages
15
+ -> website navigation, routes, Markdown sources and release routes
16
16
 
17
17
  docs/platform-manifest.json
18
- -> framework version, runtime target, public entrypoints and capability metadata
18
+ -> framework version, runtime target, public entrypoints and capabilities
19
+
20
+ docs/api-manifest.json
21
+ -> public package entrypoints, source ownership and guide mapping
19
22
  ```
20
23
 
21
- Markdown files under `docs/` remain the authored content source.
24
+ Markdown files under `docs/` remain the authored documentation content.
22
25
 
23
26
  Recommended flow:
24
27
 
@@ -28,35 +31,30 @@ framework source/tests
28
31
  docs/
29
32
  ├─ Markdown content
30
33
  ├─ docs-web-manifest.json
31
- └─ platform-manifest.json
34
+ ├─ platform-manifest.json
35
+ └─ api-manifest.json
36
+
37
+ manifest-driven sync
32
38
 
33
39
  bcp-docs-web
34
40
  ```
35
41
 
36
42
  Framework source and tests remain authoritative for runtime behavior.
37
43
 
38
- ## 0.2.0 Framework Platform baseline
44
+ ## Documentation Platform
39
45
 
40
- `0.2.0` establishes an explicit compatibility/platform contract rather than introducing a new runtime architecture.
46
+ `0.2.1` adds a versioned contract between the framework repository and the documentation website.
41
47
 
42
- New platform documents:
48
+ New sources:
43
49
 
44
50
  | Source | Purpose |
45
51
  | --- | --- |
46
- | `platform-manifest.json` | Machine-readable platform/version/public-entrypoint metadata |
47
- | `platform-contract.md` | Human-readable public platform contract |
48
- | `migration-0.2.md` | Upgrade guide from the `0.1.x` baseline |
49
- | `releases/0.2.0.md` | Release notes for the milestone |
52
+ | `api-manifest.json` | Public API entrypoint metadata |
53
+ | `api-reference.md` | Human-readable public package entrypoint reference |
54
+ | `documentation-platform.md` | Docs-web synchronization/versioning contract |
55
+ | `releases/0.2.1.md` | Documentation Platform release notes |
50
56
 
51
- Compatibility intent from `0.1.29`:
52
-
53
- ```text
54
- intentional public-entrypoint removals: none
55
- standalone runtime model change: none
56
- supported production build target: standalone-node
57
- ```
58
-
59
- BCP remains pre-1.0, so application upgrades should still be validated before production deployment.
57
+ The website should not maintain a second hard-coded list of framework pages when those pages exist in `docs-web-manifest.json`.
60
58
 
61
59
  ## Update rule
62
60
 
@@ -65,14 +63,15 @@ When framework behavior or public surface changes:
65
63
  1. Update framework source.
66
64
  2. Add/update regression tests.
67
65
  3. Update the matching Markdown guide.
68
- 4. Update `platform-manifest.json` when public entrypoints/runtime/capability metadata changes.
69
- 5. Update `docs-web-manifest.json` when website navigation/routes change.
70
- 6. Update `docs/releases/<version>.md`.
71
- 7. Change release state to published only after npm publication succeeds.
66
+ 4. Update `platform-manifest.json` when runtime/public-entrypoint/capability metadata changes.
67
+ 5. Update `api-manifest.json` when public API entrypoint ownership changes.
68
+ 6. Update `docs-web-manifest.json` when website routes/navigation change.
69
+ 7. Update `docs/releases/<version>.md`.
70
+ 8. Change release state only after the release workflow reaches that state.
72
71
 
73
- ## Current docs-web navigation
72
+ ## Docs-web navigation
74
73
 
75
- `docs/docs-web-manifest.json` is the authoritative ordered navigation contract.
74
+ `docs/docs-web-manifest.json` is the ordered navigation contract.
76
75
 
77
76
  Current sections:
78
77
 
@@ -85,105 +84,52 @@ Runtime & Infrastructure
85
84
  Storage & Uploads
86
85
  Developer Experience
87
86
  Platform & Compatibility
87
+ API Reference
88
88
  Releases
89
89
  ```
90
90
 
91
- ### Getting Started
92
-
93
- | Website route | Markdown source |
94
- | --- | --- |
95
- | `/docs/getting-started` | `getting-started.md` |
96
- | `/docs/configuration` | `configuration.md` |
97
- | `/docs/application-modules` | `application-modules.md` |
98
- | `/docs/project-metadata` | `project-metadata.md` |
99
- | `/docs/deployment` | `deployment.md` |
100
- | `/docs/updating` | `updating.md` |
101
-
102
- ### Routing & Data
103
-
104
- | Website route | Markdown source |
105
- | --- | --- |
106
- | `/docs/routing` | `routing.md` |
107
- | `/docs/server-data-loaders` | `server-data-loaders.md` |
108
- | `/docs/route-guards` | `route-guards.md` |
109
- | `/docs/form-actions` | `form-actions.md` |
110
- | `/docs/server-request-apis` | `server-request-apis.md` |
111
- | `/docs/validation` | `validation.md` |
112
- | `/docs/error-handling` | `error-handling.md` |
113
-
114
- ### Authentication
115
-
116
- | Website route | Markdown source |
117
- | --- | --- |
118
- | `/docs/authentication` | `authentication.md` |
119
- | `/docs/auth-route-guards` | `auth-route-guards.md` |
120
- | `/docs/session-auth` | `session-auth.md` |
121
-
122
- ### Database
123
-
124
- | Website route | Markdown source |
125
- | --- | --- |
126
- | `/docs/database` | `database.md` |
127
- | `/docs/database-migrations` | `database-migrations.md` |
128
-
129
- ### Runtime & Infrastructure
130
-
131
- | Website route | Markdown source |
132
- | --- | --- |
133
- | `/docs/middleware` | `middleware.md` |
134
- | `/docs/hydration` | `hydration.md` |
135
- | `/docs/development-logging` | `development-logging.md` |
136
- | `/docs/caching` | `caching.md` |
137
- | `/docs/security` | `security.md` |
138
- | `/docs/production-hardening` | `production-hardening.md` |
139
-
140
- ### Storage & Uploads
141
-
142
- | Website route | Markdown source |
143
- | --- | --- |
144
- | `/docs/file-upload` | `file-upload.md` |
145
- | `/docs/storage` | `storage.md` |
146
- | `/docs/storage-ecosystem` | `storage-ecosystem.md` |
147
- | `/docs/s3-storage` | `s3-storage.md` |
148
-
149
- ### Developer Experience
150
-
151
- | Website route | Markdown source |
152
- | --- | --- |
153
- | `/docs/generators` | `generators.md` |
154
- | `/docs/developer-tools` | `developer-tools.md` |
155
-
156
- ### Platform & Compatibility
91
+ Important `0.2.1` routes:
157
92
 
158
93
  | Website route | Markdown source |
159
94
  | --- | --- |
160
95
  | `/docs/platform-contract` | `platform-contract.md` |
96
+ | `/docs/documentation-platform` | `documentation-platform.md` |
161
97
  | `/docs/migration-0.2` | `migration-0.2.md` |
98
+ | `/docs/api-reference` | `api-reference.md` |
99
+ | `/releases/0.2.1` | `releases/0.2.1.md` |
162
100
 
163
- ## Platform manifest
101
+ Every route/source pair is validated by unit tests.
164
102
 
165
- `docs/platform-manifest.json` is intended for tooling and `bcp-docs-web` metadata displays.
103
+ ## Platform manifest
166
104
 
167
- It records:
105
+ `docs/platform-manifest.json` describes the supported framework baseline:
168
106
 
169
107
  ```text
170
108
  schema version
171
- framework/version/release state
109
+ framework version/release state
172
110
  Node/React/runtime baseline
173
111
  production build target
174
112
  public package entrypoints
175
113
  CLI command families
176
- capability groups
114
+ capabilities
177
115
  storage-provider families
178
- previous-baseline compatibility intent
116
+ previous baseline compatibility intent
179
117
  documentation contract files
180
118
  ```
181
119
 
182
- Do not treat the manifest as executable runtime configuration. It describes the supported platform surface; framework source/tests remain authoritative.
120
+ Supported production target remains:
121
+
122
+ ```text
123
+ standalone-node
124
+ ```
125
+
126
+ Native executable, desktop and mobile compilation remain future roadmap work.
127
+
128
+ ## API manifest
183
129
 
184
- ## Public entrypoint baseline
130
+ `docs/api-manifest.json` describes the public package entrypoints that documentation tooling may present as supported API surfaces.
185
131
 
186
- The `0.2.0` platform recognizes:
132
+ Current entrypoints:
187
133
 
188
134
  ```text
189
135
  bcp
@@ -199,151 +145,68 @@ bcp/server-only
199
145
  bcp/middleware
200
146
  ```
201
147
 
202
- `bcp-docs-web` can use this list to build an API-reference index without hard-coding a second entrypoint list.
203
-
204
- ## API guide ownership
205
-
206
- | Entrypoint | Primary guides |
207
- | --- | --- |
208
- | `bcp` | `routing.md`, `server-data-loaders.md`, `form-actions.md` |
209
- | `bcp/server` | `server-request-apis.md`, `file-upload.md`, `storage.md`, `storage-ecosystem.md`, `production-hardening.md` |
210
- | `bcp/auth` | `authentication.md`, `auth-route-guards.md`, `session-auth.md` |
211
- | `bcp/database` | `database.md`, `database-migrations.md` |
212
- | `bcp/validation` | `validation.md` |
213
- | `bcp/error` | `error-handling.md` |
214
- | `bcp/cache` | `caching.md` |
215
- | `bcp/config` | `configuration.md` |
216
- | `bcp/middleware` | `middleware.md` |
217
-
218
- ## Current capability groups
219
-
220
- ### Application
221
-
222
- - React SSR/hydration
223
- - file-based page/API routing
224
- - dynamic/catch-all/optional catch-all routes
225
- - layouts/metadata/route groups
226
- - SPA navigation
227
- - loaders/guards/form actions
228
- - client islands / partial hydration
229
-
230
- ### Server/runtime
231
-
232
- - request-scoped server APIs
233
- - JWT cookie sessions
234
- - Middleware System v2
235
- - validation and structured HTTP errors
236
- - structured logging/request IDs
237
- - response caching/revalidation
238
- - production hardening/timeouts
239
- - graceful shutdown and shutdown hooks
240
- - trusted-proxy controls
241
-
242
- ### Database
243
-
244
- - MySQL framework primitives
245
- - prepared query/execute helpers
246
- - transactions
247
- - migrations/status/rollback
248
-
249
- ### Storage & uploads
250
-
251
- - buffered multipart APIs
252
- - streaming multipart upload
253
- - local filesystem storage
254
- - Amazon S3 / Cloudflare R2 / S3-compatible storage
255
- - streaming reads/writes and byte ranges
256
- - list/copy/move
257
- - portable metadata
258
- - bulk delete
259
- - S3 signed read/write URLs
260
-
261
- ### Developer Experience
262
-
263
- - `create-bcp-app`
264
- - Local / Amazon S3 / Cloudflare R2 storage presets
265
- - non-secret `bcp.project.json`
266
- - page/API/middleware/migration generators
267
- - Doctor/Inspect v2
268
- - framework updater
269
- - Windows-safe `bcp-framework` alias
270
-
271
- ## Build/runtime baseline
272
-
273
- Supported `0.2.0` production target:
274
-
275
- ```text
276
- standalone-node
277
- ```
278
-
279
- Build output:
280
-
281
- ```text
282
- .bcp-framework/build/
283
- ├─ client/
284
- ├─ public/
285
- └─ server/
286
- └─ server.mjs
287
- ```
288
-
289
- Native executable, desktop and mobile compilation are not part of the `0.2.0` platform contract.
290
-
291
- ## Releases
292
-
293
- Release notes live in:
294
-
295
- ```text
296
- docs/releases/
297
- ```
298
-
299
- Current manifest routes begin with:
148
+ Each API entry records:
300
149
 
301
150
  ```text
302
- /releases/0.2.0
303
- /releases/0.1.29
304
- /releases/0.1.28
305
- /releases/0.1.27
306
- /releases/0.1.26
151
+ package
152
+ source file
153
+ environment boundary
154
+ reference route
155
+ summary
156
+ related guide routes
307
157
  ```
308
158
 
309
- Use release states consistently:
310
-
311
- ```text
312
- published
313
- release candidate
314
- unreleased development target
315
- ```
159
+ The API-manifest entrypoint set must match the public-entrypoint set in `platform-manifest.json` exactly.
316
160
 
317
- The presence of a release note does not mean the npm version is published.
161
+ See [API Reference](api-reference.md).
318
162
 
319
- ## Suggested bcp-docs-web implementation
163
+ ## bcp-docs-web synchronization
320
164
 
321
- At build/startup:
165
+ The `bcp-docs-web` sync should load all three manifests first.
322
166
 
323
167
  ```text
324
- load docs-web-manifest.json
325
- load platform-manifest.json
168
+ selected framework ref
326
169
 
327
- validate schema/version relationship
170
+ docs-web-manifest.json
171
+ platform-manifest.json
172
+ api-manifest.json
328
173
 
329
- build sidebar + route map + release map
174
+ validate version/release/API parity
330
175
 
331
- load referenced Markdown
176
+ load only referenced Markdown
332
177
 
333
- render content + prev/next + search index
178
+ rewrite internal Markdown links to website routes
334
179
 
335
- show version/release/platform metadata
180
+ synchronize CMS/search/navigation
336
181
  ```
337
182
 
338
- Recommended website behavior:
183
+ The matching docs-web implementation supports local framework source or a selected Git ref.
184
+
185
+ Examples:
186
+
187
+ ```powershell
188
+ npm run docs:sync -- --dry-run
189
+ npm run docs:sync -- --publish-new
190
+ npm run docs:sync -- --ref=v0.2.0
191
+ ```
339
192
 
340
- 1. Build navigation in manifest order.
341
- 2. Resolve every website route to its Markdown source.
342
- 3. Generate previous/next links from manifest ordering.
343
- 4. Use `versionTarget` and `releaseState` for banners.
344
- 5. Use `platform-manifest.json` for runtime/public-entrypoint metadata.
345
- 6. Index Markdown headings/content for search.
346
- 7. Never ingest runtime `.env` files into public documentation output.
193
+ Using a tag/ref is the foundation for historical/versioned documentation without manually copying current Markdown into another source tree.
194
+
195
+ ## Public API guide ownership
196
+
197
+ | Entrypoint | Primary guides |
198
+ | --- | --- |
199
+ | `bcp` | `routing.md`, `server-data-loaders.md`, `route-guards.md`, `form-actions.md` |
200
+ | `bcp/island` | `hydration.md` |
201
+ | `bcp/cache` | `caching.md` |
202
+ | `bcp/config` | `configuration.md` |
203
+ | `bcp/validation` | `validation.md` |
204
+ | `bcp/error` | `error-handling.md` |
205
+ | `bcp/database` | `database.md`, `database-migrations.md` |
206
+ | `bcp/auth` | `authentication.md`, `auth-route-guards.md`, `session-auth.md` |
207
+ | `bcp/server` | `server-request-apis.md`, `file-upload.md`, `storage.md`, `storage-ecosystem.md`, `production-hardening.md` |
208
+ | `bcp/server-only` | `application-modules.md` |
209
+ | `bcp/middleware` | `middleware.md` |
347
210
 
348
211
  ## Source conventions
349
212
 
@@ -354,11 +217,18 @@ Recommended website behavior:
354
217
  - exact public API names,
355
218
  - clear stable/RC/roadmap labels,
356
219
  - security limitations next to affected APIs,
357
- - no framework-internal module presented as public API.
220
+ - no framework-internal module presented as public API,
221
+ - no secrets/runtime `.env` values in public documentation metadata.
222
+
223
+ ## Search and previous/next
224
+
225
+ Search should index Markdown content and headings. Manifest titles/categories/API summaries may be used as metadata.
226
+
227
+ Sidebar and previous/next ordering should follow `docs-web-manifest.json` order so navigation surfaces cannot drift from each other.
358
228
 
359
229
  ## Release validation
360
230
 
361
- Before publishing `0.2.0`:
231
+ Before publishing `0.2.1`:
362
232
 
363
233
  ```bash
364
234
  npm run typecheck
@@ -369,28 +239,16 @@ npm run test:e2e
369
239
  npm run rc:check
370
240
  ```
371
241
 
372
- `0.2.0` adds a platform-contract package smoke check that verifies:
373
-
374
- - prepared framework/create-app version parity,
375
- - required public exports,
376
- - both CLI executable aliases,
377
- - Node.js engine baseline,
378
- - inclusion of platform/docs contract files,
379
- - docs-web target/version consistency.
380
-
381
- The final release tag must point to the commit that passed the complete RC sequence.
242
+ Documentation Platform validation covers:
382
243
 
383
- ## Documentation QA checklist
244
+ - every Markdown source exists,
245
+ - every docs/release route is unique,
246
+ - package/platform/docs/API versions match,
247
+ - API entrypoints match the platform public-entrypoint set,
248
+ - API guide routes exist,
249
+ - prepared npm packages contain the three manifests, API reference and Documentation Platform guide.
384
250
 
385
- - every manifest Markdown source exists,
386
- - every website route is unique,
387
- - docs-web target matches platform version,
388
- - platform public entrypoints match package exports,
389
- - examples use public APIs/commands,
390
- - release states are accurate,
391
- - secrets are never placed in project/docs metadata,
392
- - proxy trust remains opt-in,
393
- - roadmap features are not presented as release guarantees.
251
+ The final release tag must point to the exact commit that passed the complete RC sequence.
394
252
 
395
253
  ## Repository authority
396
254
 
@@ -403,7 +261,23 @@ tests
403
261
  Markdown docs
404
262
  docs-web manifest
405
263
  platform manifest
264
+ API manifest
406
265
  release notes
407
266
  ```
408
267
 
409
- `bcp-docs-web` is the presentation/search/navigation layer for this content.
268
+ `bcp-docs-web` remains the presentation/search/navigation layer for this content.
269
+
270
+ ## Next direction
271
+
272
+ Planned next milestone:
273
+
274
+ ```text
275
+ 0.2.2 — Configuration & Environment v2
276
+ ```
277
+
278
+ Focus:
279
+
280
+ - typed production configuration improvements,
281
+ - environment validation,
282
+ - startup configuration diagnostics,
283
+ - configuration schema/inspection tooling.
@@ -0,0 +1,129 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "framework": "bcp",
4
+ "version": "0.2.1",
5
+ "releaseState": "unreleased",
6
+ "coverage": "public-entrypoints",
7
+ "entrypoints": [
8
+ {
9
+ "package": "bcp",
10
+ "source": "packages/client/src/index.tsx",
11
+ "environment": "universal",
12
+ "route": "/docs/api-reference#bcp",
13
+ "summary": "React application APIs for routing, links, forms, loader/guard data, islands, metadata and route error handling.",
14
+ "guides": [
15
+ "/docs/routing",
16
+ "/docs/server-data-loaders",
17
+ "/docs/route-guards",
18
+ "/docs/form-actions"
19
+ ]
20
+ },
21
+ {
22
+ "package": "bcp/island",
23
+ "source": "packages/client/src/islands.tsx",
24
+ "environment": "universal",
25
+ "route": "/docs/api-reference#bcp-island",
26
+ "summary": "Partial-hydration island creation and island loading strategy types.",
27
+ "guides": [
28
+ "/docs/hydration"
29
+ ]
30
+ },
31
+ {
32
+ "package": "bcp/cache",
33
+ "source": "packages/client/src/cache.ts",
34
+ "environment": "server-preferred",
35
+ "route": "/docs/api-reference#bcp-cache",
36
+ "summary": "Cache, deduplication, statistics and path/tag revalidation primitives.",
37
+ "guides": [
38
+ "/docs/caching"
39
+ ]
40
+ },
41
+ {
42
+ "package": "bcp/config",
43
+ "source": "packages/client/src/config.ts",
44
+ "environment": "server",
45
+ "route": "/docs/api-reference#bcp-config",
46
+ "summary": "Typed BCP configuration definition, loading and resolution APIs.",
47
+ "guides": [
48
+ "/docs/configuration"
49
+ ]
50
+ },
51
+ {
52
+ "package": "bcp/validation",
53
+ "source": "packages/client/src/validation.ts",
54
+ "environment": "universal",
55
+ "route": "/docs/api-reference#bcp-validation",
56
+ "summary": "Typed validators, parse helpers and structured validation errors.",
57
+ "guides": [
58
+ "/docs/validation"
59
+ ]
60
+ },
61
+ {
62
+ "package": "bcp/error",
63
+ "source": "packages/client/src/http-error.ts",
64
+ "environment": "universal",
65
+ "route": "/docs/api-reference#bcp-error",
66
+ "summary": "Structured HTTP error creation, classification and response helpers.",
67
+ "guides": [
68
+ "/docs/error-handling"
69
+ ]
70
+ },
71
+ {
72
+ "package": "bcp/database",
73
+ "source": "packages/client/src/database.ts",
74
+ "environment": "server",
75
+ "route": "/docs/api-reference#bcp-database",
76
+ "summary": "Database pool, prepared query/execute helpers and transaction primitives.",
77
+ "guides": [
78
+ "/docs/database",
79
+ "/docs/database-migrations"
80
+ ]
81
+ },
82
+ {
83
+ "package": "bcp/auth",
84
+ "source": "packages/client/src/auth.ts",
85
+ "environment": "server",
86
+ "route": "/docs/api-reference#bcp-auth",
87
+ "summary": "Authentication, login/logout/session rotation and route authorization guards.",
88
+ "guides": [
89
+ "/docs/authentication",
90
+ "/docs/auth-route-guards",
91
+ "/docs/session-auth"
92
+ ]
93
+ },
94
+ {
95
+ "package": "bcp/server",
96
+ "source": "packages/client/src/server.ts",
97
+ "environment": "server",
98
+ "route": "/docs/api-reference#bcp-server",
99
+ "summary": "Request context, cookies, logging, production hardening, upload, storage, response and session APIs.",
100
+ "guides": [
101
+ "/docs/server-request-apis",
102
+ "/docs/file-upload",
103
+ "/docs/storage",
104
+ "/docs/storage-ecosystem",
105
+ "/docs/production-hardening"
106
+ ]
107
+ },
108
+ {
109
+ "package": "bcp/server-only",
110
+ "source": "packages/client/src/server-only.mjs",
111
+ "environment": "server-marker",
112
+ "route": "/docs/api-reference#bcp-server-only",
113
+ "summary": "Server-only module boundary marker that prevents accidental browser inclusion.",
114
+ "guides": [
115
+ "/docs/application-modules"
116
+ ]
117
+ },
118
+ {
119
+ "package": "bcp/middleware",
120
+ "source": "packages/server/src/middleware.ts",
121
+ "environment": "server",
122
+ "route": "/docs/api-reference#bcp-middleware",
123
+ "summary": "Middleware System v2 request/response pipeline types and helpers.",
124
+ "guides": [
125
+ "/docs/middleware"
126
+ ]
127
+ }
128
+ ]
129
+ }