Skip to content

Commit f43028d

Browse files
committed
add solid principle of owning your own data (not apps)
1 parent 172e748 commit f43028d

File tree

6 files changed

+27
-0
lines changed

6 files changed

+27
-0
lines changed

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Context for AI assistants working on this repo.
77
**tb-solid-pod** is a browser-based personal data pod inspired by the [Solid Project](https://solidproject.org/), built with [TinyBase](https://tinybase.org/) for reactive state and LocalStorage. It is **not** a real Solid server (no LDP, no WebID-TLS); it simulates Solid-style data (personas, contacts, groups, type indexes, file metadata) in a single-page app.
88

99
- **Dual interface**: graphical UI (tabs, forms, lists) + CLI. The CLI runs in the **browser** (Terminal tab) and in **Node** (`npm run cli`); same commands, environment-specific persistence (LocalStorage vs `~/.tb-solid-pod/data/store.json`).
10+
- **App-neutral data store**: In the Solid vision, your data belongs to you—not to any particular app. This project embraces that principle: whether you prefer a browser UI (no install, instant access from any device with a modern browser) or a terminal app (scripting, automation, headless operation, CI/CD pipelines), you work with the same data through the same commands. The interface is a matter of preference and context; the data is yours regardless of how you access it.
1011
- **Unified CLI = Agent API**: The same CLI commands work as a programmatic API for AI coding agents. No custom SDK—agents issue CLI commands (`create-persona`, `list-contacts`, `export`) in browser or terminal. See [Principles and Goals](docs/PRINCIPLES_AND_GOALS.md) for the full vision.
1112
- **Data**: personas (WebID-style), contacts (including agents), groups (org/team/group) with membership of contacts and your personas, type indexes, virtual file system with metadata, settings/preferences.
1213
- **Stack**: React, TinyBase, Zod, Vite, TypeScript. Vocabularies: FOAF, vCard, Dublin Core, W3C Org, `@inrupt/vocab-*`.

DESIGN.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,22 @@ Non-RDF resources like documents, images, etc.
330330

331331
## Design Considerations
332332

333+
### 0. App-Neutral Data Store
334+
335+
**Your data belongs to you—not to any particular application or interface.**
336+
337+
This is a core Solid principle that the project embraces throughout its design:
338+
339+
- **Browser UI benefits**: No install required, instant access from any device with a modern browser, familiar graphical interface for exploration and editing.
340+
- **Terminal app benefits**: Scripting, automation, headless operation, CI/CD pipeline integration, ideal for power users and AI agents.
341+
- **Same data, same commands**: Both interfaces access the same TinyBase store and use the same CLI command layer. Changes made in the terminal appear immediately in the browser UI and vice versa.
342+
- **Interface as preference**: The choice of browser or terminal is a matter of context and personal preference—not a constraint imposed by the data model. This mirrors Solid's vision where multiple apps can read and write the same pod data.
343+
344+
This principle influences several design decisions:
345+
- The CLI command layer is the single source of truth for operations (see Principle 9 in PRINCIPLES_AND_GOALS.md).
346+
- Platform-specific behavior (file dialogs, clipboard) is isolated to adapters, not core logic.
347+
- Export/import uses a portable format that works regardless of how data was created.
348+
333349
### 1. Use Real IRIs
334350

335351
Even though WebIDs won't resolve externally yet, use real URLs based on your domain:

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,17 @@ This library provides a complete foundation for **user-owned social data** in we
5050
- **Graphical UI**: Tab-based navigation with forms and lists. Personas, Contacts, and Groups tabs each have a **Create random** button that opens the form with sample data for quick try-out.
5151
- **CLI Terminal**: Full command-line interface for power users
5252

53+
### App-Neutral Data Store
54+
In the Solid vision, your data belongs to you—not to any particular application. This library embraces that principle: whether you prefer a browser UI (no install, instant access from any device with a modern browser) or a terminal app (scripting, automation, headless operation, CI/CD pipelines), you work with the same data through the same commands. The interface is a matter of preference and context; the data is yours regardless of how you access it.
55+
5356
## Benefits for Social Applications
5457

5558
See [docs/PRINCIPLES_AND_GOALS.md](docs/PRINCIPLES_AND_GOALS.md) for the full rationale (why TinyBase, why Solid, what we commit to).
5659

5760
| Benefit | Summary |
5861
|---------|---------|
5962
| **User Data Ownership** | Data in browser LocalStorage; export as JSON-LD anytime. |
63+
| **App-Neutral Access** | Same data, same commands in browser UI or terminal—your data isn't tied to one interface. |
6064
| **Interoperable Schemas** | FOAF, vCard, Dublin Core, Schema.org, W3C Org—portable to Solid/RDF systems. |
6165
| **Relationship Modeling** | Personas + contacts + groups support friend/follower, team, org, and agent patterns. |
6266
| **Offline-First** | TinyBase + LocalStorage; no network required for core features. |

docs/INTEGRATION_GUIDE.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,8 @@ Settings are stored in TinyBase **values** (not tables):
296296

297297
The CLI runs in **two environments**: (1) in-app Terminal tab in the browser, and (2) from a real terminal (Node.js).
298298

299+
**App-neutral data access**: In the Solid vision, your data belongs to you—not to any particular application. Whether your users prefer a browser UI (no install, instant access from any device) or a terminal app (scripting, automation, CI/CD pipelines), they work with the same data through the same commands. The interface is a matter of preference; the data is theirs regardless of how they access it.
300+
299301
### In the browser
300302

301303
```tsx

docs/PRINCIPLES_AND_GOALS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ This principle is about **democratizing development**: if you have a vision for
9393

9494
The library includes a shared CLI built on [Ink](https://github.com/vadimdemedes/ink) (for Node terminal) and web-ink (for browser). This gives you:
9595

96+
- **App-neutral data access**: In the Solid vision, your data belongs to you—not to any particular application. Whether you prefer a browser UI (no install, instant access from any device) or a terminal app (scripting, automation, CI/CD pipelines), you work with the same data through the same commands. The interface is a matter of preference; the data is yours regardless of how you access it.
97+
9698
- **One command set**: `create-persona`, `list-contacts`, `add-to-group`, `export` work identically in the browser console and terminal.
9799
- **Human and agent interface**: The CLI is not just for developers—it's a stable API for AI coding agents to interact with the store programmatically.
98100
- **Interactive or scripted**: Use the CLI interactively for exploration, or script it for automation and testing.
@@ -302,6 +304,7 @@ See [SHORTCOMINGS.md](SHORTCOMINGS.md) for the full list.
302304
|-----------|-----------|
303305
| **Local-first** | Works from first page load, no server required. |
304306
| **Data sovereignty** | Users own and control their data. |
307+
| **App-neutral data** | Same data accessible via browser UI or terminal; your data isn't tied to one interface. |
305308
| **Sync later** | Connect a pod when ready; local data syncs to it. |
306309
| **Interoperable** | Standard vocabularies; data is portable beyond this app. |
307310
| **Offline-first** | No network needed for core features. |

docs/USE_CASES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ Store setup and table layout are described in the [README Integration Guide](../
2929
- Environment-agnostic logic (same code works in browser and Node)
3030
- A stable API for AI agents and automation
3131
- **Testability**: Commands can be tested in isolation without UI, browser mocks, or complex fixtures. If it's easier to test in a small environment, it's easier to reason about the ramifications of changes.
32+
- **App-neutral data access**: In the Solid vision, your data belongs to you—not to any particular application. Whether users prefer a browser UI (no install, instant access) or a terminal app (scripting, automation, CI/CD), they work with the same data through the same commands. The interface is a matter of preference; the data is theirs regardless of how they access it.
3233

3334
This doesn't mean CLI commands are the only way—direct store access is fine for simple cases or when you need fine control. But modeling your app's operations as commands gives you a composable, testable layer that works across all environments.
3435

0 commit comments

Comments
 (0)