Add project documentation and configure for JavaScript/TypeScript

- Add PRD and TSD defining SDK and Explorer architecture
- Add CLAUDE.md with project guidance for Claude Code
- Update README with project description
- Replace Python .gitignore with JS/TS configuration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-14 16:47:25 +01:00
parent c299ce9d53
commit 5c1d26afba
5 changed files with 655 additions and 169 deletions

View File

@@ -0,0 +1,353 @@
TechnicalSpecificationDocument
*Implementation strategy for binect-js*
# Technical Specification (TSD)
## Binect-JS API Wrapper & Explorer
**PRD-aligned / Pre-Implementation Version**
---
## 0. Positioning and Authority
This Technical Specification derives its authority **exclusively from the PRD** and serves as a **design-orientation document**, not a binding implementation plan.
It:
* refines **how the product intent may be realized**
* makes **explicit what is optional, configurable, or deferred**
* avoids encoding decisions that would normally belong in ADRs
Where uncertainty exists, the TSD **preserves option space**.
---
## 1. Product Composition
### 1.1 Product Boundary
The product **Binect-JS** consists of two coordinated but separable artifacts:
1. **Binect-JS SDK**
A JavaScript / TypeScript wrapper around the Binect REST API.
2. **Binect Explorer**
A browser-based interactive tool that uses the SDK to support:
* learning
* experimentation
* evaluation
* integration understanding
Together they form **one developer-facing product**, but neither depends on the other for correctness.
---
## 2. Design Guardrails (Derived from PRD)
The following constraints are **non-negotiable** and shape all downstream decisions:
1. **No backend dependency**
The product must function entirely in browser and JavaScript runtime environments.
2. **No semantic reinterpretation of the Binect API**
The wrapper must not alter business meaning, rules, or outcomes.
3. **Transparency over abstraction**
Developers must be able to reason about what API calls occur and why.
4. **Learning-first, not operations-first**
Especially for the Explorer: this is *not* a production operations console.
5. **Optionality over prescription**
Features that imply policy (retries, persistence, automation) must be opt-in.
---
## 3. SDK Technical Orientation (`@binect/js`)
### 3.1 Role of the SDK
The SDKs role is to:
* provide a **stable adaptation layer**
* reduce accidental misuse of the API
* improve readability and discoverability
* centralize API evolution handling
It is **not** intended to:
* orchestrate workflows
* enforce sending policies
* optimize delivery behavior
---
### 3.2 API Surface Structure
The SDK exposes **domain-aligned sub-clients** that mirror the API vocabulary:
* `documents`
* `attachments`
* `sendings`
* `accounts`
* `invoices`
This structure is **intentional**:
* it preserves traceability to API documentation
* it avoids hiding capabilities behind synthetic abstractions
---
### 3.3 Core vs Convenience Layers (Explicit Separation)
The SDK is conceptually divided into two layers:
#### A) Core API Layer (authoritative)
* 1:1 semantic mapping to REST endpoints
* minimal transformation
* predictable behavior
* no embedded policy
Examples:
* `documents.uploadPdf`
* `documents.getStatus`
* `sendings.announce`
* `sendings.cancel`
This layer is **the reference layer**.
#### B) Optional Convenience Layer (non-authoritative)
* purely additive helpers
* must be clearly labeled as such
* must not be required for correct usage
Examples (illustrative, not mandatory):
* status predicates (`isShippable`)
* error extraction helpers
* polling helpers
> **Important:**
> Convenience helpers may exist, but **must never be the only way** to perform an action.
---
### 3.4 Authentication Handling
* Authentication uses **HTTP Basic Auth**, passed transparently.
* The SDK:
* does not store credentials
* does not cache auth headers beyond request scope
* does not log sensitive values
Credential lifecycle management is **explicitly out of scope** for the SDK.
---
### 3.5 Upload & Payload Handling
* The SDK supports base64-encoded PDF uploads as required by the API.
* It may provide:
* size estimation helpers
* early warnings when payloads approach known limits
These helpers:
* are advisory only
* do not block execution unless explicitly configured
---
### 3.6 Error Handling Model
* All non-success responses are surfaced as structured errors.
* Errors preserve:
* HTTP status
* endpoint identity
* parsed response payload where available
The SDK **does not reinterpret business errors**, but may:
* expose helpers to *extract* or *summarize* validation issues.
---
### 3.7 Retries, Timeouts, and Network Behavior (Revised)
**Change from previous TSD:**
All default retry semantics have been **removed**.
Current stance:
* The SDK **does not imply any retry behavior**
* Network behavior is:
* explicit
* configurable
* opt-in
If retry helpers are provided:
* they must be **disabled by default**
* they must be **clearly documented as potentially unsafe** for send operations
Timeouts, retries, and backoff strategies are **configuration concerns**, not product guarantees.
---
## 4. Explorer Technical Orientation (`@binect/explorer`)
### 4.1 Role of the Explorer
The Explorer exists to:
* reduce onboarding friction
* make the API *legible*
* allow safe experimentation
* support pre-integration evaluation
It is **not** intended to:
* replace backend integrations
* act as an operations dashboard
* support long-running or automated workflows
---
### 4.2 Functional Scope
The Explorer supports:
* credential input
* document upload and inspection
* previewing normalized output
* triggering send/cancel actions
* inspecting raw and summarized responses
* storing named **use case profiles**
All actions are **user-initiated**.
---
### 4.3 Use Case Profiles (Conceptual)
Profiles represent:
* a reusable *parameter constellation*
* not a workflow definition
* not a business rule
Profiles may include:
* document options
* attributes
* cover page parameters
* attachment references
* sending mode (upload vs send)
Profiles:
* are stored locally
* can be exported/imported
* have no implicit execution semantics
---
### 4.4 Credential Handling (Reframed)
**Change from previous TSD:**
Credential persistence is no longer a default design feature.
Current stance:
* Credentials are **ephemeral by default**
* Optional persistence may exist as a **user-initiated UX enhancement**
* No persistence is required to meet product intent
Cryptographic details and storage mechanisms are **explicitly design-time decisions**, deferred until implementation.
---
### 4.5 Safety and Trust
The Explorer must:
* clearly distinguish between *preview* and *send*
* require explicit confirmation for destructive actions
* surface consequences before execution
Safety is achieved through **interaction design**, not enforcement logic.
---
## 5. Non-Functional Orientation
### 5.1 Usability
* API capabilities must be discoverable through interaction.
* Raw API responses must remain accessible.
### 5.2 Reliability
* Failures must be visible and explainable.
* Silent retries or hidden corrections are disallowed.
### 5.3 Maintainability
* The SDK must tolerate API evolution without breaking product intent.
* The Explorer must remain usable even as API features expand.
---
## 6. Out-of-Scope Reinforcement (Explicit)
The following are **explicitly excluded** from this TSD:
* scheduling
* batching
* automation
* background job execution
* business rule enforcement
* policy encoding
Any future inclusion of these concerns requires:
* PRD revision **or**
* explicit ADRs
---
## 7. Traceability Note
This TSD is intentionally **non-binding** with respect to:
* architectural patterns
* libraries
* UI frameworks
* storage mechanisms
Its sole purpose is to ensure that **implementation choices remain aligned with product intent as defined in the PRD**.
---
## 8. Status
* **TSD** is **PRD-aligned**
* Safe to use as:
* implementation briefing
* review baseline
* pre-ADR reference
xxx