https://github.com/qtaghdi/boundra
(π§ Under Development) Enforced boundaries for domain-first TypeScript applications.
https://github.com/qtaghdi/boundra
framework javascript rust typescript
Last synced: 1 day ago
JSON representation
(π§ Under Development) Enforced boundaries for domain-first TypeScript applications.
- Host: GitHub
- URL: https://github.com/qtaghdi/boundra
- Owner: qtaghdi
- Created: 2026-04-23T04:38:00.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-06-16T08:55:43.000Z (3 days ago)
- Last Synced: 2026-06-16T10:26:33.943Z (2 days ago)
- Topics: framework, javascript, rust, typescript
- Language: Rust
- Homepage:
- Size: 95.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Roadmap: docs/roadmap.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Boundra
λλ©μΈ μ€μ¬ νμ€ν κ°λ°μ κ°μ νλ TypeScript νλ μμν¬ (Rust κΈ°λ° ν΄λ§ μμ§)
## Why Boundra
Boundraλ "λͺ¨λ κ±Έ λ체νλ νλ μμν¬"κ° μλλλ€. ꡬ쑰μ κ²½κ³λ₯Ό κ°μ ν΄μ, ν κ·λͺ¨κ° μ»€μ Έλ μ½λλ² μ΄μ€ μΌκ΄μ±μ μ μ§νλλ‘ λλ νλ«νΌμ
λλ€.
ν΄κ²°νλ €λ ν΅μ¬ λ¬Έμ :
- λλ©μΈ λ¨μ λΆλ¦¬κ° λμ§ μμ λ³κ²½ μν₯ λ²μκ° λΆλͺ
νν λ¬Έμ
- λͺ¨λ
Έλ ν¬μμ import μμ λλ‘ κ²½κ³κ° λΆκ΄΄λλ λ¬Έμ
- νμ€ν κ°λ°μμ ꡬ쑰 μΌκ΄μ±μ΄ λΉ λ₯΄κ² κΉ¨μ§λ λ¬Έμ
ν΅μ¬ κ°μΉ:
- ꡬ쑰 κ°μ λ₯Ό ν΅ν μ μ§λ³΄μ λΉμ© μ κ°
- AIκ° μ΄ν΄νκ³ μμ
νκΈ° μ¬μ΄ μ½λλ² μ΄μ€
- μλ²/ν΄λΌμ΄μΈνΈ/νμ
/μ μ±
μΌκ΄μ±
- λͺ¨λ
Έλ ν¬ νμ₯μ±
## Non-Goals
μ΄κΈ°μλ μλ μμμ μ§μ λ§λ€μ§ μμ΅λλ€.
- JS λ°νμ
- λ²λ€λ¬
- UI νλ μμν¬
- ORM
- μνκ΄λ¦¬
- ν
μ€νΈ λ¬λ
- Next.js λ체
## Design Principles
1. μ±λ³΄λ€ λλ©μΈμ΄ λ¨Όμ λ€
2. sharedλ μ΅μννλ€
3. κ²½κ³λ κ·μΉμ΄ μλλΌ λκ΅¬λ‘ κ°μ νλ€
4. νμ
곡μ λ³΄λ€ κ³μ½(shared contract)μ μ°μ νλ€
5. μμ λ³΄λ€ μμ ν μ μ½μ μ 곡νλ€
6. AIκ° μ΄ν΄νκΈ° μ¬μ΄ ꡬ쑰λ₯Ό λ§λ λ€
7. MCPλ μ½μ΄κ° μλλΌ νμ₯ λ μ΄μ΄λ€
## Target Structure
```txt
apps/
web/
admin/
domains/
/
client/
server/
shared/
mcp/
tests/
packages/
runtime/
ui/
infra/
config/
tooling/
crates/
core/
parser/
rules/
cli/
```
## V1 Scope
λ°λμ ν¬ν¨:
- `create-domain`
- `check-boundaries`
- `graph-domains`
- schema κΈ°λ° κ³μ½
- route/query/mutation μ½λ μμ±
## Documentation Map
- νλ‘μ νΈ νμ₯: [docs/project-charter.md](docs/project-charter.md)
- μν€ν
μ²: [docs/architecture.md](docs/architecture.md)
- κ²½κ³ κ·μΉ: [docs/boundary-rules.md](docs/boundary-rules.md)
- CLI λͺ
μΈ(v1): [docs/cli-spec-v1.md](docs/cli-spec-v1.md)
- μ€μ λͺ
μΈ: [docs/config-spec.md](docs/config-spec.md)
- νλ μμν¬ νλ©΄: [docs/framework-surface.md](docs/framework-surface.md)
- CI μ°λ: [docs/ci-integration.md](docs/ci-integration.md)
- λ€μ΄λ° κ·μ½: [docs/naming-convention.md](docs/naming-convention.md)
- λλ©μΈ λ§€λνμ€νΈ λͺ
μΈ: [docs/domain-manifest-spec.md](docs/domain-manifest-spec.md)
- λ‘λλ§΅: [docs/roadmap.md](docs/roadmap.md)
- 1μΈ κ°λ° 컨벀μ
: [docs/solo-convention.md](docs/solo-convention.md)
- μ©μ΄ μ¬μ : [docs/glossary.md](docs/glossary.md)
- ADR: [docs/adr](docs/adr)
- κΈ°μ¬ κ°μ΄λ: [CONTRIBUTING.md](CONTRIBUTING.md)
## Current Status
- Repository bootstrap is complete.
- Core documentation and conventions are drafted.
- Rust workspace and `check-boundaries` MVP are available for BR-001 through BR-004.
- `create-domain`, `graph-domains`, and initial `generate` workflows are available.
- `packages/runtime` provides the first TypeScript helper surface for generated contracts.
- Generated route/query/mutation contracts are registered in `domain.json` `publicApi.shared`.
- CLI fixture tests cover text/json output, boundary behavior, scaffolding, graph output, code generation, and manifest updates.
## Quick Start (MVP)
μ¬μ μꡬμ¬ν:
- Rust toolchain (`cargo`, `rustc`)
μ€ν:
```bash
cargo run -p boundra-cli -- create-domain order
cargo run -p boundra-cli -- check-boundaries
cargo run -p boundra-cli -- graph-domains --format mermaid
cargo run -p boundra-cli -- generate route order/create-order
```
Run against an explicit project root:
```bash
cargo run -p boundra-cli -- check-boundaries --root .
```
JSON μΆλ ₯:
```bash
cargo run -p boundra-cli -- check-boundaries --format json
```
CI μ€ν:
```bash
cargo run -p boundra-cli -- check-boundaries --root . --format json
```