Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions evault.docker-compose.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,6 +11,11 @@ services:
- NEO4J_URI=${NEO4J_URI}
- NEO4J_USER=${NEO4J_USER}
- NEO4J_PASSWORD=${NEO4J_PASSWORD}
- SECRETS_STORE_PATH=/app/secrets/secrets.json
- ENCRYPTION_PASSWORD=${ENCRYPTION_PASSWORD}
- W3ID=${W3ID}
Comment thread
coodos marked this conversation as resolved.
volumes:
- secrets:/app/secrets
networks:
- graphnet
depends_on:
Expand DownExpand Up@@ -44,6 +49,7 @@ services:
volumes:
neo4j_data:
neo4j_logs:
secrets:

networks:
graphnet:
Expand Down
182 changes: 182 additions & 0 deletions infrastructure/evault-core/README.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
# eVault Core

eVault is a secure, distributed data storage and access system designed for the MetaState ecosystem. It provides a robust framework for storing, managing, and accessing structured data with fine-grained access control and GraphQL-based querying capabilities.

## Overview

eVault is a core component of the MetaState infrastructure that enables:

- Secure storage of structured data
- Fine-grained access control using W3ID
- GraphQL-based data querying and manipulation
- Distributed data management
- Integration with the MetaState ecosystem

## Architecture

### Core Components

1. **GraphQL Server**

- Provides a flexible API for data operations
- Supports complex queries and mutations
- Includes built-in documentation and visualization tools

2. **Access Control System**

- W3ID-based authentication
- Fine-grained access control lists (ACL)
- Secure token-based authentication

3. **Data Storage**

- Neo4j-based storage backend
- Structured data model with envelopes
- Support for multiple data types and ontologies

4. **HTTP Server**
- Fastify-based web server
- RESTful endpoints for basic operations
- GraphQL endpoint for advanced operations

### Data Model

The eVault system uses a hierarchical data model:

- **MetaEnvelope**: Top-level container for related data

- Contains multiple Envelopes
- Has an associated ontology
- Includes access control information

- **Envelope**: Individual data container
- Contains structured data
- Has a specific value type
- Linked to a MetaEnvelope

## Features

### 1. Data Management

- Store and retrieve structured data
- Update and delete data with version control
- Search and filter data by ontology and content

### 2. Access Control

- W3ID-based authentication
- Fine-grained access control lists
- Secure token-based operations

### 3. Query Capabilities

- GraphQL-based querying
- Complex search operations
- Real-time data access

### 4. Integration

- Seamless integration with W3ID
- Support for multiple data formats
- Extensible architecture

## API Documentation

### GraphQL Operations

#### Queries

- `getMetaEnvelopeById`: Retrieve a specific MetaEnvelope
- `findMetaEnvelopesByOntology`: Find envelopes by ontology
- `searchMetaEnvelopes`: Search envelopes by content
- `getAllEnvelopes`: List all available envelopes

#### Mutations

- `storeMetaEnvelope`: Create a new MetaEnvelope
- `deleteMetaEnvelope`: Remove a MetaEnvelope
- `updateEnvelopeValue`: Update envelope content

### HTTP Endpoints

- `/graphql`: GraphQL API endpoint
- `/voyager`: GraphQL schema visualization
- `/documentation`: API documentation

## Getting Started

### Prerequisites

- Node.js
- Neo4j database
- W3ID system

### Installation

1. Clone the repository
2. Install dependencies:
```bash
npm install
```
3. Configure environment variables:
```
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_password
PORT=4000
```
4. Start the server:
```bash
npm start
```

## Security Considerations

- All operations require W3ID authentication
- Access control is enforced at both API and database levels
- Data is encrypted in transit and at rest
- Regular security audits and updates

## Integration Guide

### W3ID Integration

eVault uses W3ID for authentication and access control:

1. Obtain a W3ID token
2. Include token in Authorization header
3. Access eVault resources based on permissions

### Data Storage

1. Define data ontology
2. Create MetaEnvelope with appropriate ACL
3. Store and manage data through the API

## Development

### Testing

```bash
npm test
```

### Documentation

- API documentation available at `/documentation`
- GraphQL schema visualization at `/voyager`
- Example queries in `src/protocol/examples`

## Contributing

1. Fork the repository
2. Create feature branch
3. Submit pull request

## License

[License information]

Comment thread
coodos marked this conversation as resolved.
## Support

[Support information]
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions evault.docker-compose.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,6 +11,11 @@ services:
- NEO4J_URI=${NEO4J_URI}
- NEO4J_USER=${NEO4J_USER}
- NEO4J_PASSWORD=${NEO4J_PASSWORD}
- SECRETS_STORE_PATH=/app/secrets/secrets.json
- ENCRYPTION_PASSWORD=${ENCRYPTION_PASSWORD}
- W3ID=${W3ID}
Comment thread
coodos marked this conversation as resolved.
volumes:
- secrets:/app/secrets
networks:
- graphnet
depends_on:
Expand DownExpand Up@@ -44,6 +49,7 @@ services:
volumes:
neo4j_data:
neo4j_logs:
secrets:

networks:
graphnet:
Expand Down
182 changes: 182 additions & 0 deletions infrastructure/evault-core/README.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
# eVault Core

eVault is a secure, distributed data storage and access system designed for the MetaState ecosystem. It provides a robust framework for storing, managing, and accessing structured data with fine-grained access control and GraphQL-based querying capabilities.

## Overview

eVault is a core component of the MetaState infrastructure that enables:

- Secure storage of structured data
- Fine-grained access control using W3ID
- GraphQL-based data querying and manipulation
- Distributed data management
- Integration with the MetaState ecosystem

## Architecture

### Core Components

1. **GraphQL Server**

- Provides a flexible API for data operations
- Supports complex queries and mutations
- Includes built-in documentation and visualization tools

2. **Access Control System**

- W3ID-based authentication
- Fine-grained access control lists (ACL)
- Secure token-based authentication

3. **Data Storage**

- Neo4j-based storage backend
- Structured data model with envelopes
- Support for multiple data types and ontologies

4. **HTTP Server**
- Fastify-based web server
- RESTful endpoints for basic operations
- GraphQL endpoint for advanced operations

### Data Model

The eVault system uses a hierarchical data model:

- **MetaEnvelope**: Top-level container for related data

- Contains multiple Envelopes
- Has an associated ontology
- Includes access control information

- **Envelope**: Individual data container
- Contains structured data
- Has a specific value type
- Linked to a MetaEnvelope

## Features

### 1. Data Management

- Store and retrieve structured data
- Update and delete data with version control
- Search and filter data by ontology and content

### 2. Access Control

- W3ID-based authentication
- Fine-grained access control lists
- Secure token-based operations

### 3. Query Capabilities

- GraphQL-based querying
- Complex search operations
- Real-time data access

### 4. Integration

- Seamless integration with W3ID
- Support for multiple data formats
- Extensible architecture

## API Documentation

### GraphQL Operations

#### Queries

- `getMetaEnvelopeById`: Retrieve a specific MetaEnvelope
- `findMetaEnvelopesByOntology`: Find envelopes by ontology
- `searchMetaEnvelopes`: Search envelopes by content
- `getAllEnvelopes`: List all available envelopes

#### Mutations

- `storeMetaEnvelope`: Create a new MetaEnvelope
- `deleteMetaEnvelope`: Remove a MetaEnvelope
- `updateEnvelopeValue`: Update envelope content

### HTTP Endpoints

- `/graphql`: GraphQL API endpoint
- `/voyager`: GraphQL schema visualization
- `/documentation`: API documentation

## Getting Started

### Prerequisites

- Node.js
- Neo4j database
- W3ID system

### Installation

1. Clone the repository
2. Install dependencies:
```bash
npm install
```
3. Configure environment variables:
```
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_password
PORT=4000
```
4. Start the server:
```bash
npm start
```

## Security Considerations

- All operations require W3ID authentication
- Access control is enforced at both API and database levels
- Data is encrypted in transit and at rest
- Regular security audits and updates

## Integration Guide

### W3ID Integration

eVault uses W3ID for authentication and access control:

1. Obtain a W3ID token
2. Include token in Authorization header
3. Access eVault resources based on permissions

### Data Storage

1. Define data ontology
2. Create MetaEnvelope with appropriate ACL
3. Store and manage data through the API

## Development

### Testing

```bash
npm test
```

### Documentation

- API documentation available at `/documentation`
- GraphQL schema visualization at `/voyager`
- Example queries in `src/protocol/examples`

## Contributing

1. Fork the repository
2. Create feature branch
3. Submit pull request

## License

[License information]

Comment thread
coodos marked this conversation as resolved.
## Support

[Support information]
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions evault.docker-compose.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,6 +11,11 @@ services:
- NEO4J_URI=${NEO4J_URI}
- NEO4J_USER=${NEO4J_USER}
- NEO4J_PASSWORD=${NEO4J_PASSWORD}
- SECRETS_STORE_PATH=/app/secrets/secrets.json
- ENCRYPTION_PASSWORD=${ENCRYPTION_PASSWORD}
- W3ID=${W3ID}
Comment thread
coodos marked this conversation as resolved.
volumes:
- secrets:/app/secrets
networks:
- graphnet
depends_on:
Expand DownExpand Up@@ -44,6 +49,7 @@ services:
volumes:
neo4j_data:
neo4j_logs:
secrets:

networks:
graphnet:
Expand Down
182 changes: 182 additions & 0 deletions infrastructure/evault-core/README.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
# eVault Core

eVault is a secure, distributed data storage and access system designed for the MetaState ecosystem. It provides a robust framework for storing, managing, and accessing structured data with fine-grained access control and GraphQL-based querying capabilities.

## Overview

eVault is a core component of the MetaState infrastructure that enables:

- Secure storage of structured data
- Fine-grained access control using W3ID
- GraphQL-based data querying and manipulation
- Distributed data management
- Integration with the MetaState ecosystem

## Architecture

### Core Components

1. **GraphQL Server**

- Provides a flexible API for data operations
- Supports complex queries and mutations
- Includes built-in documentation and visualization tools

2. **Access Control System**

- W3ID-based authentication
- Fine-grained access control lists (ACL)
- Secure token-based authentication

3. **Data Storage**

- Neo4j-based storage backend
- Structured data model with envelopes
- Support for multiple data types and ontologies

4. **HTTP Server**
- Fastify-based web server
- RESTful endpoints for basic operations
- GraphQL endpoint for advanced operations

### Data Model

The eVault system uses a hierarchical data model:

- **MetaEnvelope**: Top-level container for related data

- Contains multiple Envelopes
- Has an associated ontology
- Includes access control information

- **Envelope**: Individual data container
- Contains structured data
- Has a specific value type
- Linked to a MetaEnvelope

## Features

### 1. Data Management

- Store and retrieve structured data
- Update and delete data with version control
- Search and filter data by ontology and content

### 2. Access Control

- W3ID-based authentication
- Fine-grained access control lists
- Secure token-based operations

### 3. Query Capabilities

- GraphQL-based querying
- Complex search operations
- Real-time data access

### 4. Integration

- Seamless integration with W3ID
- Support for multiple data formats
- Extensible architecture

## API Documentation

### GraphQL Operations

#### Queries

- `getMetaEnvelopeById`: Retrieve a specific MetaEnvelope
- `findMetaEnvelopesByOntology`: Find envelopes by ontology
- `searchMetaEnvelopes`: Search envelopes by content
- `getAllEnvelopes`: List all available envelopes

#### Mutations

- `storeMetaEnvelope`: Create a new MetaEnvelope
- `deleteMetaEnvelope`: Remove a MetaEnvelope
- `updateEnvelopeValue`: Update envelope content

### HTTP Endpoints

- `/graphql`: GraphQL API endpoint
- `/voyager`: GraphQL schema visualization
- `/documentation`: API documentation

## Getting Started

### Prerequisites

- Node.js
- Neo4j database
- W3ID system

### Installation

1. Clone the repository
2. Install dependencies:
```bash
npm install
```
3. Configure environment variables:
```
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_password
PORT=4000
```
4. Start the server:
```bash
npm start
```

## Security Considerations

- All operations require W3ID authentication
- Access control is enforced at both API and database levels
- Data is encrypted in transit and at rest
- Regular security audits and updates

## Integration Guide

### W3ID Integration

eVault uses W3ID for authentication and access control:

1. Obtain a W3ID token
2. Include token in Authorization header
3. Access eVault resources based on permissions

### Data Storage

1. Define data ontology
2. Create MetaEnvelope with appropriate ACL
3. Store and manage data through the API

## Development

### Testing

```bash
npm test
```

### Documentation

- API documentation available at `/documentation`
- GraphQL schema visualization at `/voyager`
- Example queries in `src/protocol/examples`

## Contributing

1. Fork the repository
2. Create feature branch
3. Submit pull request

## License

[License information]

Comment thread
coodos marked this conversation as resolved.
## Support

[Support information]
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions evault.docker-compose.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,6 +11,11 @@ services:
- NEO4J_URI=${NEO4J_URI}
- NEO4J_USER=${NEO4J_USER}
- NEO4J_PASSWORD=${NEO4J_PASSWORD}
- SECRETS_STORE_PATH=/app/secrets/secrets.json
- ENCRYPTION_PASSWORD=${ENCRYPTION_PASSWORD}
- W3ID=${W3ID}
Comment thread
coodos marked this conversation as resolved.
volumes:
- secrets:/app/secrets
networks:
- graphnet
depends_on:
Expand DownExpand Up@@ -44,6 +49,7 @@ services:
volumes:
neo4j_data:
neo4j_logs:
secrets:

networks:
graphnet:
Expand Down
182 changes: 182 additions & 0 deletions infrastructure/evault-core/README.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
# eVault Core

eVault is a secure, distributed data storage and access system designed for the MetaState ecosystem. It provides a robust framework for storing, managing, and accessing structured data with fine-grained access control and GraphQL-based querying capabilities.

## Overview

eVault is a core component of the MetaState infrastructure that enables:

- Secure storage of structured data
- Fine-grained access control using W3ID
- GraphQL-based data querying and manipulation
- Distributed data management
- Integration with the MetaState ecosystem

## Architecture

### Core Components

1. **GraphQL Server**

- Provides a flexible API for data operations
- Supports complex queries and mutations
- Includes built-in documentation and visualization tools

2. **Access Control System**

- W3ID-based authentication
- Fine-grained access control lists (ACL)
- Secure token-based authentication

3. **Data Storage**

- Neo4j-based storage backend
- Structured data model with envelopes
- Support for multiple data types and ontologies

4. **HTTP Server**
- Fastify-based web server
- RESTful endpoints for basic operations
- GraphQL endpoint for advanced operations

### Data Model

The eVault system uses a hierarchical data model:

- **MetaEnvelope**: Top-level container for related data

- Contains multiple Envelopes
- Has an associated ontology
- Includes access control information

- **Envelope**: Individual data container
- Contains structured data
- Has a specific value type
- Linked to a MetaEnvelope

## Features

### 1. Data Management

- Store and retrieve structured data
- Update and delete data with version control
- Search and filter data by ontology and content

### 2. Access Control

- W3ID-based authentication
- Fine-grained access control lists
- Secure token-based operations

### 3. Query Capabilities

- GraphQL-based querying
- Complex search operations
- Real-time data access

### 4. Integration

- Seamless integration with W3ID
- Support for multiple data formats
- Extensible architecture

## API Documentation

### GraphQL Operations

#### Queries

- `getMetaEnvelopeById`: Retrieve a specific MetaEnvelope
- `findMetaEnvelopesByOntology`: Find envelopes by ontology
- `searchMetaEnvelopes`: Search envelopes by content
- `getAllEnvelopes`: List all available envelopes

#### Mutations

- `storeMetaEnvelope`: Create a new MetaEnvelope
- `deleteMetaEnvelope`: Remove a MetaEnvelope
- `updateEnvelopeValue`: Update envelope content

### HTTP Endpoints

- `/graphql`: GraphQL API endpoint
- `/voyager`: GraphQL schema visualization
- `/documentation`: API documentation

## Getting Started

### Prerequisites

- Node.js
- Neo4j database
- W3ID system

### Installation

1. Clone the repository
2. Install dependencies:
```bash
npm install
```
3. Configure environment variables:
```
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_password
PORT=4000
```
4. Start the server:
```bash
npm start
```

## Security Considerations

- All operations require W3ID authentication
- Access control is enforced at both API and database levels
- Data is encrypted in transit and at rest
- Regular security audits and updates

## Integration Guide

### W3ID Integration

eVault uses W3ID for authentication and access control:

1. Obtain a W3ID token
2. Include token in Authorization header
3. Access eVault resources based on permissions

### Data Storage

1. Define data ontology
2. Create MetaEnvelope with appropriate ACL
3. Store and manage data through the API

## Development

### Testing

```bash
npm test
```

### Documentation

- API documentation available at `/documentation`
- GraphQL schema visualization at `/voyager`
- Example queries in `src/protocol/examples`

## Contributing

1. Fork the repository
2. Create feature branch
3. Submit pull request

## License

[License information]

Comment thread
coodos marked this conversation as resolved.
## Support

[Support information]
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions evault.docker-compose.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,6 +11,11 @@ services:
- NEO4J_URI=${NEO4J_URI}
- NEO4J_USER=${NEO4J_USER}
- NEO4J_PASSWORD=${NEO4J_PASSWORD}
- SECRETS_STORE_PATH=/app/secrets/secrets.json
- ENCRYPTION_PASSWORD=${ENCRYPTION_PASSWORD}
- W3ID=${W3ID}
Comment thread
coodos marked this conversation as resolved.
volumes:
- secrets:/app/secrets
networks:
- graphnet
depends_on:
Expand DownExpand Up@@ -44,6 +49,7 @@ services:
volumes:
neo4j_data:
neo4j_logs:
secrets:

networks:
graphnet:
Expand Down
182 changes: 182 additions & 0 deletions infrastructure/evault-core/README.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
# eVault Core

eVault is a secure, distributed data storage and access system designed for the MetaState ecosystem. It provides a robust framework for storing, managing, and accessing structured data with fine-grained access control and GraphQL-based querying capabilities.

## Overview

eVault is a core component of the MetaState infrastructure that enables:

- Secure storage of structured data
- Fine-grained access control using W3ID
- GraphQL-based data querying and manipulation
- Distributed data management
- Integration with the MetaState ecosystem

## Architecture

### Core Components

1. **GraphQL Server**

- Provides a flexible API for data operations
- Supports complex queries and mutations
- Includes built-in documentation and visualization tools

2. **Access Control System**

- W3ID-based authentication
- Fine-grained access control lists (ACL)
- Secure token-based authentication

3. **Data Storage**

- Neo4j-based storage backend
- Structured data model with envelopes
- Support for multiple data types and ontologies

4. **HTTP Server**
- Fastify-based web server
- RESTful endpoints for basic operations
- GraphQL endpoint for advanced operations

### Data Model

The eVault system uses a hierarchical data model:

- **MetaEnvelope**: Top-level container for related data

- Contains multiple Envelopes
- Has an associated ontology
- Includes access control information

- **Envelope**: Individual data container
- Contains structured data
- Has a specific value type
- Linked to a MetaEnvelope

## Features

### 1. Data Management

- Store and retrieve structured data
- Update and delete data with version control
- Search and filter data by ontology and content

### 2. Access Control

- W3ID-based authentication
- Fine-grained access control lists
- Secure token-based operations

### 3. Query Capabilities

- GraphQL-based querying
- Complex search operations
- Real-time data access

### 4. Integration

- Seamless integration with W3ID
- Support for multiple data formats
- Extensible architecture

## API Documentation

### GraphQL Operations

#### Queries

- `getMetaEnvelopeById`: Retrieve a specific MetaEnvelope
- `findMetaEnvelopesByOntology`: Find envelopes by ontology
- `searchMetaEnvelopes`: Search envelopes by content
- `getAllEnvelopes`: List all available envelopes

#### Mutations

- `storeMetaEnvelope`: Create a new MetaEnvelope
- `deleteMetaEnvelope`: Remove a MetaEnvelope
- `updateEnvelopeValue`: Update envelope content

### HTTP Endpoints

- `/graphql`: GraphQL API endpoint
- `/voyager`: GraphQL schema visualization
- `/documentation`: API documentation

## Getting Started

### Prerequisites

- Node.js
- Neo4j database
- W3ID system

### Installation

1. Clone the repository
2. Install dependencies:
```bash
npm install
```
3. Configure environment variables:
```
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_password
PORT=4000
```
4. Start the server:
```bash
npm start
```

## Security Considerations

- All operations require W3ID authentication
- Access control is enforced at both API and database levels
- Data is encrypted in transit and at rest
- Regular security audits and updates

## Integration Guide

### W3ID Integration

eVault uses W3ID for authentication and access control:

1. Obtain a W3ID token
2. Include token in Authorization header
3. Access eVault resources based on permissions

### Data Storage

1. Define data ontology
2. Create MetaEnvelope with appropriate ACL
3. Store and manage data through the API

## Development

### Testing

```bash
npm test
```

### Documentation

- API documentation available at `/documentation`
- GraphQL schema visualization at `/voyager`
- Example queries in `src/protocol/examples`

## Contributing

1. Fork the repository
2. Create feature branch
3. Submit pull request

## License

[License information]

Comment thread
coodos marked this conversation as resolved.
## Support

[Support information]
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions evault.docker-compose.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,6 +11,11 @@ services:
- NEO4J_URI=${NEO4J_URI}
- NEO4J_USER=${NEO4J_USER}
- NEO4J_PASSWORD=${NEO4J_PASSWORD}
- SECRETS_STORE_PATH=/app/secrets/secrets.json
- ENCRYPTION_PASSWORD=${ENCRYPTION_PASSWORD}
- W3ID=${W3ID}
Comment thread
coodos marked this conversation as resolved.
volumes:
- secrets:/app/secrets
networks:
- graphnet
depends_on:
Expand DownExpand Up@@ -44,6 +49,7 @@ services:
volumes:
neo4j_data:
neo4j_logs:
secrets:

networks:
graphnet:
Expand Down
182 changes: 182 additions & 0 deletions infrastructure/evault-core/README.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
# eVault Core

eVault is a secure, distributed data storage and access system designed for the MetaState ecosystem. It provides a robust framework for storing, managing, and accessing structured data with fine-grained access control and GraphQL-based querying capabilities.

## Overview

eVault is a core component of the MetaState infrastructure that enables:

- Secure storage of structured data
- Fine-grained access control using W3ID
- GraphQL-based data querying and manipulation
- Distributed data management
- Integration with the MetaState ecosystem

## Architecture

### Core Components

1. **GraphQL Server**

- Provides a flexible API for data operations
- Supports complex queries and mutations
- Includes built-in documentation and visualization tools

2. **Access Control System**

- W3ID-based authentication
- Fine-grained access control lists (ACL)
- Secure token-based authentication

3. **Data Storage**

- Neo4j-based storage backend
- Structured data model with envelopes
- Support for multiple data types and ontologies

4. **HTTP Server**
- Fastify-based web server
- RESTful endpoints for basic operations
- GraphQL endpoint for advanced operations

### Data Model

The eVault system uses a hierarchical data model:

- **MetaEnvelope**: Top-level container for related data

- Contains multiple Envelopes
- Has an associated ontology
- Includes access control information

- **Envelope**: Individual data container
- Contains structured data
- Has a specific value type
- Linked to a MetaEnvelope

## Features

### 1. Data Management

- Store and retrieve structured data
- Update and delete data with version control
- Search and filter data by ontology and content

### 2. Access Control

- W3ID-based authentication
- Fine-grained access control lists
- Secure token-based operations

### 3. Query Capabilities

- GraphQL-based querying
- Complex search operations
- Real-time data access

### 4. Integration

- Seamless integration with W3ID
- Support for multiple data formats
- Extensible architecture

## API Documentation

### GraphQL Operations

#### Queries

- `getMetaEnvelopeById`: Retrieve a specific MetaEnvelope
- `findMetaEnvelopesByOntology`: Find envelopes by ontology
- `searchMetaEnvelopes`: Search envelopes by content
- `getAllEnvelopes`: List all available envelopes

#### Mutations

- `storeMetaEnvelope`: Create a new MetaEnvelope
- `deleteMetaEnvelope`: Remove a MetaEnvelope
- `updateEnvelopeValue`: Update envelope content

### HTTP Endpoints

- `/graphql`: GraphQL API endpoint
- `/voyager`: GraphQL schema visualization
- `/documentation`: API documentation

## Getting Started

### Prerequisites

- Node.js
- Neo4j database
- W3ID system

### Installation

1. Clone the repository
2. Install dependencies:
```bash
npm install
```
3. Configure environment variables:
```
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_password
PORT=4000
```
4. Start the server:
```bash
npm start
```

## Security Considerations

- All operations require W3ID authentication
- Access control is enforced at both API and database levels
- Data is encrypted in transit and at rest
- Regular security audits and updates

## Integration Guide

### W3ID Integration

eVault uses W3ID for authentication and access control:

1. Obtain a W3ID token
2. Include token in Authorization header
3. Access eVault resources based on permissions

### Data Storage

1. Define data ontology
2. Create MetaEnvelope with appropriate ACL
3. Store and manage data through the API

## Development

### Testing

```bash
npm test
```

### Documentation

- API documentation available at `/documentation`
- GraphQL schema visualization at `/voyager`
- Example queries in `src/protocol/examples`

## Contributing

1. Fork the repository
2. Create feature branch
3. Submit pull request

## License

[License information]

Comment thread
coodos marked this conversation as resolved.
## Support

[Support information]
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions evault.docker-compose.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,6 +11,11 @@ services:
- NEO4J_URI=${NEO4J_URI}
- NEO4J_USER=${NEO4J_USER}
- NEO4J_PASSWORD=${NEO4J_PASSWORD}
- SECRETS_STORE_PATH=/app/secrets/secrets.json
- ENCRYPTION_PASSWORD=${ENCRYPTION_PASSWORD}
- W3ID=${W3ID}
Comment thread
coodos marked this conversation as resolved.
volumes:
- secrets:/app/secrets
networks:
- graphnet
depends_on:
Expand DownExpand Up@@ -44,6 +49,7 @@ services:
volumes:
neo4j_data:
neo4j_logs:
secrets:

networks:
graphnet:
Expand Down
182 changes: 182 additions & 0 deletions infrastructure/evault-core/README.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
# eVault Core

eVault is a secure, distributed data storage and access system designed for the MetaState ecosystem. It provides a robust framework for storing, managing, and accessing structured data with fine-grained access control and GraphQL-based querying capabilities.

## Overview

eVault is a core component of the MetaState infrastructure that enables:

- Secure storage of structured data
- Fine-grained access control using W3ID
- GraphQL-based data querying and manipulation
- Distributed data management
- Integration with the MetaState ecosystem

## Architecture

### Core Components

1. **GraphQL Server**

- Provides a flexible API for data operations
- Supports complex queries and mutations
- Includes built-in documentation and visualization tools

2. **Access Control System**

- W3ID-based authentication
- Fine-grained access control lists (ACL)
- Secure token-based authentication

3. **Data Storage**

- Neo4j-based storage backend
- Structured data model with envelopes
- Support for multiple data types and ontologies

4. **HTTP Server**
- Fastify-based web server
- RESTful endpoints for basic operations
- GraphQL endpoint for advanced operations

### Data Model

The eVault system uses a hierarchical data model:

- **MetaEnvelope**: Top-level container for related data

- Contains multiple Envelopes
- Has an associated ontology
- Includes access control information

- **Envelope**: Individual data container
- Contains structured data
- Has a specific value type
- Linked to a MetaEnvelope

## Features

### 1. Data Management

- Store and retrieve structured data
- Update and delete data with version control
- Search and filter data by ontology and content

### 2. Access Control

- W3ID-based authentication
- Fine-grained access control lists
- Secure token-based operations

### 3. Query Capabilities

- GraphQL-based querying
- Complex search operations
- Real-time data access

### 4. Integration

- Seamless integration with W3ID
- Support for multiple data formats
- Extensible architecture

## API Documentation

### GraphQL Operations

#### Queries

- `getMetaEnvelopeById`: Retrieve a specific MetaEnvelope
- `findMetaEnvelopesByOntology`: Find envelopes by ontology
- `searchMetaEnvelopes`: Search envelopes by content
- `getAllEnvelopes`: List all available envelopes

#### Mutations

- `storeMetaEnvelope`: Create a new MetaEnvelope
- `deleteMetaEnvelope`: Remove a MetaEnvelope
- `updateEnvelopeValue`: Update envelope content

### HTTP Endpoints

- `/graphql`: GraphQL API endpoint
- `/voyager`: GraphQL schema visualization
- `/documentation`: API documentation

## Getting Started

### Prerequisites

- Node.js
- Neo4j database
- W3ID system

### Installation

1. Clone the repository
2. Install dependencies:
```bash
npm install
```
3. Configure environment variables:
```
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_password
PORT=4000
```
4. Start the server:
```bash
npm start
```

## Security Considerations

- All operations require W3ID authentication
- Access control is enforced at both API and database levels
- Data is encrypted in transit and at rest
- Regular security audits and updates

## Integration Guide

### W3ID Integration

eVault uses W3ID for authentication and access control:

1. Obtain a W3ID token
2. Include token in Authorization header
3. Access eVault resources based on permissions

### Data Storage

1. Define data ontology
2. Create MetaEnvelope with appropriate ACL
3. Store and manage data through the API

## Development

### Testing

```bash
npm test
```

### Documentation

- API documentation available at `/documentation`
- GraphQL schema visualization at `/voyager`
- Example queries in `src/protocol/examples`

## Contributing

1. Fork the repository
2. Create feature branch
3. Submit pull request

## License

[License information]

Comment thread
coodos marked this conversation as resolved.
## Support

[Support information]
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions evault.docker-compose.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,6 +11,11 @@ services:
- NEO4J_URI=${NEO4J_URI}
- NEO4J_USER=${NEO4J_USER}
- NEO4J_PASSWORD=${NEO4J_PASSWORD}
- SECRETS_STORE_PATH=/app/secrets/secrets.json
- ENCRYPTION_PASSWORD=${ENCRYPTION_PASSWORD}
- W3ID=${W3ID}
Comment thread
coodos marked this conversation as resolved.
volumes:
- secrets:/app/secrets
networks:
- graphnet
depends_on:
Expand DownExpand Up@@ -44,6 +49,7 @@ services:
volumes:
neo4j_data:
neo4j_logs:
secrets:

networks:
graphnet:
Expand Down
182 changes: 182 additions & 0 deletions infrastructure/evault-core/README.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
# eVault Core

eVault is a secure, distributed data storage and access system designed for the MetaState ecosystem. It provides a robust framework for storing, managing, and accessing structured data with fine-grained access control and GraphQL-based querying capabilities.

## Overview

eVault is a core component of the MetaState infrastructure that enables:

- Secure storage of structured data
- Fine-grained access control using W3ID
- GraphQL-based data querying and manipulation
- Distributed data management
- Integration with the MetaState ecosystem

## Architecture

### Core Components

1. **GraphQL Server**

- Provides a flexible API for data operations
- Supports complex queries and mutations
- Includes built-in documentation and visualization tools

2. **Access Control System**

- W3ID-based authentication
- Fine-grained access control lists (ACL)
- Secure token-based authentication

3. **Data Storage**

- Neo4j-based storage backend
- Structured data model with envelopes
- Support for multiple data types and ontologies

4. **HTTP Server**
- Fastify-based web server
- RESTful endpoints for basic operations
- GraphQL endpoint for advanced operations

### Data Model

The eVault system uses a hierarchical data model:

- **MetaEnvelope**: Top-level container for related data

- Contains multiple Envelopes
- Has an associated ontology
- Includes access control information

- **Envelope**: Individual data container
- Contains structured data
- Has a specific value type
- Linked to a MetaEnvelope

## Features

### 1. Data Management

- Store and retrieve structured data
- Update and delete data with version control
- Search and filter data by ontology and content

### 2. Access Control

- W3ID-based authentication
- Fine-grained access control lists
- Secure token-based operations

### 3. Query Capabilities

- GraphQL-based querying
- Complex search operations
- Real-time data access

### 4. Integration

- Seamless integration with W3ID
- Support for multiple data formats
- Extensible architecture

## API Documentation

### GraphQL Operations

#### Queries

- `getMetaEnvelopeById`: Retrieve a specific MetaEnvelope
- `findMetaEnvelopesByOntology`: Find envelopes by ontology
- `searchMetaEnvelopes`: Search envelopes by content
- `getAllEnvelopes`: List all available envelopes

#### Mutations

- `storeMetaEnvelope`: Create a new MetaEnvelope
- `deleteMetaEnvelope`: Remove a MetaEnvelope
- `updateEnvelopeValue`: Update envelope content

### HTTP Endpoints

- `/graphql`: GraphQL API endpoint
- `/voyager`: GraphQL schema visualization
- `/documentation`: API documentation

## Getting Started

### Prerequisites

- Node.js
- Neo4j database
- W3ID system

### Installation

1. Clone the repository
2. Install dependencies:
```bash
npm install
```
3. Configure environment variables:
```
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_password
PORT=4000
```
4. Start the server:
```bash
npm start
```

## Security Considerations

- All operations require W3ID authentication
- Access control is enforced at both API and database levels
- Data is encrypted in transit and at rest
- Regular security audits and updates

## Integration Guide

### W3ID Integration

eVault uses W3ID for authentication and access control:

1. Obtain a W3ID token
2. Include token in Authorization header
3. Access eVault resources based on permissions

### Data Storage

1. Define data ontology
2. Create MetaEnvelope with appropriate ACL
3. Store and manage data through the API

## Development

### Testing

```bash
npm test
```

### Documentation

- API documentation available at `/documentation`
- GraphQL schema visualization at `/voyager`
- Example queries in `src/protocol/examples`

## Contributing

1. Fork the repository
2. Create feature branch
3. Submit pull request

## License

[License information]

Comment thread
coodos marked this conversation as resolved.
## Support

[Support information]
Loading