René's URL Explorer Experiment


Title: Feature: remoteStorage Protocol Support · Issue #106 · JavaScriptSolidServer/JavaScriptSolidServer · GitHub

Open Graph Title: Feature: remoteStorage Protocol Support · Issue #106 · JavaScriptSolidServer/JavaScriptSolidServer

X Title: Feature: remoteStorage Protocol Support · Issue #106 · JavaScriptSolidServer/JavaScriptSolidServer

Description: Summary Add remoteStorage protocol support to JavaScriptSolidServer, enabling the server to serve both Solid and remoteStorage clients from the same storage backend. This would make JSS the first server to support both major per-user sto...

Open Graph Description: Summary Add remoteStorage protocol support to JavaScriptSolidServer, enabling the server to serve both Solid and remoteStorage clients from the same storage backend. This would make JSS the first s...

X Description: Summary Add remoteStorage protocol support to JavaScriptSolidServer, enabling the server to serve both Solid and remoteStorage clients from the same storage backend. This would make JSS the first s...

Opengraph URL: https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/106

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Feature: remoteStorage Protocol Support","articleBody":"## Summary\n\nAdd remoteStorage protocol support to JavaScriptSolidServer, enabling the server to serve both Solid and remoteStorage clients from the same storage backend. This would make JSS the first server to support both major per-user storage protocols.\n\n**Difficulty**: 45/100  \n**Estimated Effort**: 4-6 days  \n**Dependencies**: None (can be implemented as optional plugin)\n\n---\n\n## What is remoteStorage?\n\n[remoteStorage](https://remotestorage.io/) is an open protocol for per-user storage on the web, predating Solid. It enables \"unhosted\" web apps where:\n- Users own their data\n- Apps request scoped access via OAuth\n- Data syncs across devices automatically\n\nThe protocol is defined in [IETF draft-dejong-remotestorage](https://datatracker.ietf.org/doc/draft-dejong-remotestorage/).\n\n---\n\n## Protocol Comparison\n\n| Feature | Solid (current) | remoteStorage | Compatibility |\n|---------|-----------------|---------------|---------------|\n| **Discovery** | WebFinger → WebID | WebFinger → storage URL | Different format, same endpoint |\n| **Authentication** | Solid-OIDC + DPoP | OAuth 2.0 Bearer (simpler) | RS is subset |\n| **HTTP Methods** | GET/PUT/DELETE/PATCH | GET/PUT/DELETE/HEAD | RS is subset |\n| **Directory Listings** | Turtle/JSON-LD (LDP vocab) | JSON-LD (simple format) | Transform needed |\n| **ETags** | ✅ Supported | ✅ Required | Already works |\n| **Conditional Requests** | If-Match, If-None-Match | If-Match, If-None-Match | Already works |\n| **CORS** | ✅ Enabled | ✅ Required | Already works |\n| **Access Control** | WAC (ACL files) | OAuth scopes (category:rw) | Different model |\n| **Path Structure** | `/{pod}/path/to/file` | `/storage/{user}/{module}/` | Different |\n| **Public Data** | ACL-based | `/public/` folder | Map to ACL |\n\n---\n\n## Why Integrate?\n\n1. **Larger ecosystem** - Access to remoteStorage apps (100+ apps listed)\n2. **Simpler onboarding** - RS OAuth is simpler than Solid-OIDC for some apps\n3. **Migration path** - RS users can migrate to Solid gradually\n4. **Unified storage** - One server, two protocols, same data\n5. **Unique positioning** - First server supporting both protocols\n\n---\n\n## Architecture\n\n### Proposed Plugin Structure\n\n```\nsrc/\n├── remotestorage/\n│   ├── index.js          # Plugin registration\n│   ├── webfinger.js      # RS WebFinger format\n│   ├── oauth.js          # OAuth 2.0 implicit flow\n│   ├── storage.js        # GET/PUT/DELETE handlers\n│   ├── listings.js       # Directory listing formatter\n│   └── scopes.js         # Scope validation \u0026 mapping\n```\n\n### Request Flow\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                      JSS Server                             │\n├─────────────────────────────────────────────────────────────┤\n│                                                             │\n│  ┌─────────────────────────────────────────────────────┐   │\n│  │              WebFinger Handler                       │   │\n│  │         /.well-known/webfinger                       │   │\n│  │                                                      │   │\n│  │   ?resource=acct:alice@example.com                   │   │\n│  │         │                                            │   │\n│  │         ├─► rel=remotestorage → RS client            │   │\n│  │         └─► rel=solid → Solid client                 │   │\n│  └─────────────────────────────────────────────────────┘   │\n│                                                             │\n│  ┌─────────────────────────────────────────────────────┐   │\n│  │           remoteStorage Routes                       │   │\n│  │                                                      │   │\n│  │   GET  /rs/oauth/authorize  → OAuth dialog          │   │\n│  │   POST /rs/oauth/token      → Token exchange        │   │\n│  │   GET  /storage/{user}/*    → Read file/folder      │   │\n│  │   PUT  /storage/{user}/*    → Write file            │   │\n│  │   DELETE /storage/{user}/*  → Delete file           │   │\n│  │   HEAD /storage/{user}/*    → Get metadata          │   │\n│  └─────────────────────────────────────────────────────┘   │\n│                                                             │\n│  ┌─────────────────────────────────────────────────────┐   │\n│  │              Solid Routes (existing)                 │   │\n│  │                                                      │   │\n│  │   /{pod}/*  → Solid LDP + WAC                       │   │\n│  └─────────────────────────────────────────────────────┘   │\n│                                                             │\n│  ┌─────────────────────────────────────────────────────┐   │\n│  │           Shared Storage Backend                     │   │\n│  │              (filesystem.js)                         │   │\n│  └─────────────────────────────────────────────────────┘   │\n│                                                             │\n└─────────────────────────────────────────────────────────────┘\n```\n\n---\n\n## Implementation Plan\n\n### Phase 1: WebFinger Extension (10/100)\n\nAdd remoteStorage link relation to existing WebFinger response.\n\n**Current response:**\n```json\n{\n  \"subject\": \"acct:alice@example.com\",\n  \"links\": [\n    {\n      \"rel\": \"http://webfinger.net/rel/profile-page\",\n      \"href\": \"https://example.com/alice/profile/card\"\n    }\n  ]\n}\n```\n\n**Extended response:**\n```json\n{\n  \"subject\": \"acct:alice@example.com\",\n  \"links\": [\n    {\n      \"rel\": \"http://webfinger.net/rel/profile-page\",\n      \"href\": \"https://example.com/alice/profile/card\"\n    },\n    {\n      \"rel\": \"http://tools.ietf.org/id/draft-dejong-remotestorage\",\n      \"href\": \"https://example.com/storage/alice\",\n      \"properties\": {\n        \"http://remotestorage.io/spec/version\": \"draft-dejong-remotestorage-26\",\n        \"http://tools.ietf.org/html/rfc6749#section-4.2\": \"https://example.com/rs/oauth/authorize\",\n        \"http://tools.ietf.org/html/rfc6750#section-2.3\": \"Bearer\"\n      }\n    }\n  ]\n}\n```\n\n---\n\n### Phase 2: OAuth 2.0 Implicit Flow (25/100)\n\nImplement simplified OAuth for remoteStorage clients.\n\n**Authorization endpoint:**\n```\nGET /rs/oauth/authorize\n  ?client_id=https://app.example.com\n  \u0026redirect_uri=https://app.example.com/callback\n  \u0026response_type=token\n  \u0026scope=photos:rw documents:r\n```\n\n**Authorization dialog:**\n```\n┌─────────────────────────────────────────────┐\n│  App \"MyPhotos\" is requesting access        │\n│                                             │\n│  ☑ photos - Read and write                  │\n│  ☑ documents - Read only                    │\n│                                             │\n│  [Deny]                    [Allow Access]   │\n└─────────────────────────────────────────────┘\n```\n\n**Successful redirect:**\n```\nhttps://app.example.com/callback#access_token=abc123\u0026token_type=bearer\n```\n\n**Scope format:**\n- `photos:rw` - Read/write access to /storage/{user}/photos/\n- `documents:r` - Read-only access to /storage/{user}/documents/\n- `*:rw` - Full access (root scope)\n\n---\n\n### Phase 3: Storage API (20/100)\n\nImplement remoteStorage HTTP API.\n\n**GET document:**\n```http\nGET /storage/alice/photos/vacation.jpg\nAuthorization: Bearer abc123\n\n200 OK\nContent-Type: image/jpeg\nETag: \"a1b2c3\"\nContent-Length: 12345\n\n\u003cbinary data\u003e\n```\n\n**GET folder:**\n```http\nGET /storage/alice/photos/\nAuthorization: Bearer abc123\n\n200 OK\nContent-Type: application/ld+json\nETag: \"folder-etag\"\n\n{\n  \"@context\": \"http://remotestorage.io/spec/folder-description\",\n  \"items\": {\n    \"vacation.jpg\": {\n      \"ETag\": \"a1b2c3\",\n      \"Content-Type\": \"image/jpeg\",\n      \"Content-Length\": 12345\n    },\n    \"summer/\": {\n      \"ETag\": \"d4e5f6\"\n    }\n  }\n}\n```\n\n**PUT document:**\n```http\nPUT /storage/alice/photos/new.jpg\nAuthorization: Bearer abc123\nContent-Type: image/jpeg\nIf-None-Match: *\n\n\u003cbinary data\u003e\n\n201 Created\nETag: \"new-etag\"\n```\n\n**DELETE document:**\n```http\nDELETE /storage/alice/photos/old.jpg\nAuthorization: Bearer abc123\nIf-Match: \"old-etag\"\n\n200 OK\nETag: \"new-folder-etag\"\n```\n\n---\n\n### Phase 4: Access Control (15/100)\n\nMap OAuth scopes to storage paths.\n\n```javascript\n// src/remotestorage/scopes.js\n\nfunction validateScope(token, path, method) {\n  // Parse path: /storage/alice/photos/vacation.jpg\n  const [, , user, category, ...rest] = path.split('/');\n  \n  // Check token scopes\n  const scope = token.scopes.find(s =\u003e {\n    const [cat, perm] = s.split(':');\n    return (cat === '*' || cat === category) \u0026\u0026\n           (perm === 'rw' || (perm === 'r' \u0026\u0026 method === 'GET'));\n  });\n  \n  if (!scope) {\n    return { allowed: false, error: 'Insufficient scope' };\n  }\n  \n  return { allowed: true };\n}\n```\n\n**Public folder handling:**\n- `/storage/{user}/public/*` - Readable without auth\n- Maps to ACL with `acl:agentClass foaf:Agent` in Solid terms\n\n---\n\n### Phase 5: Testing \u0026 Compliance (15/100)\n\nRun the official [RS API Test Suite](https://github.com/remotestorage/api-test-suite).\n\n```bash\n# Run compliance tests\nnpx rs-api-test-suite https://localhost:3000/storage/testuser\n```\n\n**Test categories:**\n- [ ] WebFinger discovery\n- [ ] OAuth authorization flow\n- [ ] Document CRUD operations\n- [ ] Folder listings\n- [ ] Conditional requests (ETags)\n- [ ] CORS headers\n- [ ] Public folder access\n\n---\n\n## Configuration\n\n```javascript\n// Proposed config additions\n{\n  \"remotestorage\": {\n    \"enabled\": true,\n    \"basePath\": \"/storage\",       // RS storage path prefix\n    \"oauthPath\": \"/rs/oauth\",     // OAuth endpoints\n    \"publicFolder\": \"public\",     // Public folder name\n    \"tokenExpiry\": 86400,         // Token lifetime (seconds)\n    \"allowedOrigins\": [\"*\"]       // CORS origins for RS\n  }\n}\n```\n\n**CLI flag:**\n```bash\njss start --remotestorage        # Enable RS support\njss start --no-remotestorage     # Disable (default?)\n```\n\n**Environment variable:**\n```bash\nJSS_REMOTESTORAGE=true\n```\n\n---\n\n## Storage Mapping\n\n### Option A: Shared Storage (Recommended)\n\nRS and Solid share the same filesystem:\n\n```\ndata/\n└── alice/\n    ├── profile/          # Solid WebID profile\n    ├── photos/           # Accessible via both protocols\n    │   └── vacation.jpg\n    ├── public/           # RS public folder = Solid public\n    └── .acl              # Solid WAC (RS uses OAuth scopes)\n```\n\n**Access patterns:**\n- Solid: `GET /alice/photos/vacation.jpg` (with Solid-OIDC)\n- RS: `GET /storage/alice/photos/vacation.jpg` (with Bearer token)\n\n### Option B: Isolated Storage\n\nSeparate storage areas:\n\n```\ndata/\n└── alice/\n    ├── solid/            # Solid-only data\n    └── rs/               # RS-only data\n```\n\n**Pros:** Clean separation, no ACL conflicts  \n**Cons:** Data duplication, users manage two silos\n\n**Recommendation:** Option A (shared) with clear documentation on access model differences.\n\n---\n\n## Scope ↔ WAC Mapping\n\n| RS Scope | Solid WAC Equivalent |\n|----------|---------------------|\n| `photos:r` | `acl:Read` on `/photos/` |\n| `photos:rw` | `acl:Read, acl:Write` on `/photos/` |\n| `*:r` | `acl:Read` on root |\n| `*:rw` | `acl:Read, acl:Write, acl:Control` on root |\n| (public folder) | `acl:agentClass foaf:Agent; acl:Read` |\n\n**Note:** RS scopes are simpler than WAC. RS tokens can only access paths within their scopes, regardless of ACL files.\n\n---\n\n## Compatibility Notes\n\n### remoteStorage Apps\n\nPopular RS apps that would work:\n- [Litewrite](https://litewrite.net/) - Distraction-free writing\n- [Groovebasin](https://groovebasin.com/) - Music player\n- [Sharesome](https://sharesome.5apps.com/) - File sharing\n- [Webmarks](https://nickvergessen.github.io/webmarks/) - Bookmark manager\n\n### remoteStorage.js Library\n\nThe official [remotestorage.js](https://github.com/remotestorage/remotestorage.js) client library should work out of the box once the protocol is implemented.\n\n```javascript\nconst rs = new RemoteStorage();\nrs.access.claim('photos', 'rw');\nrs.connect('alice@example.com');\n```\n\n---\n\n## Difficulty Breakdown\n\n| Component | Difficulty | Notes |\n|-----------|------------|-------|\n| WebFinger extension | 10/100 | Add link relation to existing handler |\n| OAuth implicit flow | 25/100 | Simpler than Solid-OIDC |\n| Storage GET/PUT/DELETE | 15/100 | Reuse existing storage backend |\n| Directory listings | 10/100 | JSON-LD transformation |\n| Scope validation | 15/100 | Path-based access check |\n| HEAD requests | 5/100 | Trivial |\n| Public folder | 10/100 | Skip auth for /public/ |\n| Compliance testing | 15/100 | RS test suite |\n| Documentation | 10/100 | Usage guide |\n| **Total** | **45/100** | |\n\n---\n\n## Open Questions\n\n1. **Default state:** Should RS be enabled by default or opt-in?\n2. **Storage mapping:** Shared storage (Option A) or isolated (Option B)?\n3. **Token storage:** Reuse IdP accounts DB or separate RS tokens?\n4. **Scope persistence:** Store granted scopes in accounts DB?\n5. **Revocation UI:** Add RS token management to future admin panel?\n\n---\n\n## References\n\n- [remoteStorage Protocol](https://remotestorage.io/protocol)\n- [IETF draft-dejong-remotestorage-26](https://datatracker.ietf.org/doc/draft-dejong-remotestorage/)\n- [remoteStorage Servers](https://remotestorage.io/servers.html)\n- [RS API Test Suite](https://github.com/remotestorage/api-test-suite)\n- [remotestorage.js Library](https://github.com/remotestorage/remotestorage.js)\n- [RS App List](https://remotestorage.io/apps/)\n\n---\n\n## Related Issues\n\n- #100 - Production Readiness (foundation for RS integration)\n- #95 - Web Onboarding (could add RS setup option)\n- #96 - Admin Panel (RS token management)\n- #101 - ETag Strategy (shared with RS)\n","author":{"url":"https://github.com/melvincarvalho","@type":"Person","name":"melvincarvalho"},"datePublished":"2026-01-25T13:40:32.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/106/JavaScriptSolidServer/issues/106"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:d063a3ca-0e1a-7e54-02df-54732acff0f4
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idB9A2:24795C:44047D:5E0B5A:69774E17
html-safe-nonceb92eab54603c1ca5c729080b3c49715860d75ea52c4f101efb70dd8d6767a837
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCOUEyOjI0Nzk1Qzo0NDA0N0Q6NUUwQjVBOjY5Nzc0RTE3IiwidmlzaXRvcl9pZCI6IjY1NTAzNDUyNzAxODM4MDg1MzUiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac5fb0b51af16badfe4ca2a072e9baf0363fcbc2f734eed3db358f9c760a6d8760
hovercard-subject-tagissue:3853269378
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/JavaScriptSolidServer/JavaScriptSolidServer/106/issue_layout
twitter:imagehttps://opengraph.githubassets.com/0de9a8cb7fa68227bd105486da22e666a899c1f934cccccea3101356527bfe9b/JavaScriptSolidServer/JavaScriptSolidServer/issues/106
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/0de9a8cb7fa68227bd105486da22e666a899c1f934cccccea3101356527bfe9b/JavaScriptSolidServer/JavaScriptSolidServer/issues/106
og:image:altSummary Add remoteStorage protocol support to JavaScriptSolidServer, enabling the server to serve both Solid and remoteStorage clients from the same storage backend. This would make JSS the first s...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamemelvincarvalho
hostnamegithub.com
expected-hostnamegithub.com
None3310064f35a62c06a4024ba37f41c06836f39376a095c2dfd2c4b693c34965be
turbo-cache-controlno-preview
go-importgithub.com/JavaScriptSolidServer/JavaScriptSolidServer git https://github.com/JavaScriptSolidServer/JavaScriptSolidServer.git
octolytics-dimension-user_id205442424
octolytics-dimension-user_loginJavaScriptSolidServer
octolytics-dimension-repository_id958025407
octolytics-dimension-repository_nwoJavaScriptSolidServer/JavaScriptSolidServer
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id958025407
octolytics-dimension-repository_network_root_nwoJavaScriptSolidServer/JavaScriptSolidServer
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release67d5f8d1d53c3cc4f49fc3bb8029933c3dc219e6
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/106#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FJavaScriptSolidServer%2FJavaScriptSolidServer%2Fissues%2F106
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FJavaScriptSolidServer%2FJavaScriptSolidServer%2Fissues%2F106
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=JavaScriptSolidServer%2FJavaScriptSolidServer
Reloadhttps://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/106
Reloadhttps://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/106
Reloadhttps://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/106
JavaScriptSolidServer https://github.com/JavaScriptSolidServer
JavaScriptSolidServerhttps://github.com/JavaScriptSolidServer/JavaScriptSolidServer
Notifications https://github.com/login?return_to=%2FJavaScriptSolidServer%2FJavaScriptSolidServer
Fork 4 https://github.com/login?return_to=%2FJavaScriptSolidServer%2FJavaScriptSolidServer
Star 4 https://github.com/login?return_to=%2FJavaScriptSolidServer%2FJavaScriptSolidServer
Code https://github.com/JavaScriptSolidServer/JavaScriptSolidServer
Issues 59 https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues
Pull requests 6 https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/pulls
Actions https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/actions
Projects 0 https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/projects
Security 0 https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/security
Insights https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/pulse
Code https://github.com/JavaScriptSolidServer/JavaScriptSolidServer
Issues https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues
Pull requests https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/pulls
Actions https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/actions
Projects https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/projects
Security https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/security
Insights https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/pulse
New issuehttps://github.com/login?return_to=https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/106
New issuehttps://github.com/login?return_to=https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/106
Feature: remoteStorage Protocol Supporthttps://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/106#top
https://github.com/melvincarvalho
https://github.com/melvincarvalho
melvincarvalhohttps://github.com/melvincarvalho
on Jan 25, 2026https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/106#issue-3853269378
remoteStoragehttps://remotestorage.io/
IETF draft-dejong-remotestoragehttps://datatracker.ietf.org/doc/draft-dejong-remotestorage/
RS API Test Suitehttps://github.com/remotestorage/api-test-suite
Litewritehttps://litewrite.net/
Groovebasinhttps://groovebasin.com/
Sharesomehttps://sharesome.5apps.com/
Webmarkshttps://nickvergessen.github.io/webmarks/
remotestorage.jshttps://github.com/remotestorage/remotestorage.js
remoteStorage Protocolhttps://remotestorage.io/protocol
IETF draft-dejong-remotestorage-26https://datatracker.ietf.org/doc/draft-dejong-remotestorage/
remoteStorage Servershttps://remotestorage.io/servers.html
RS API Test Suitehttps://github.com/remotestorage/api-test-suite
remotestorage.js Libraryhttps://github.com/remotestorage/remotestorage.js
RS App Listhttps://remotestorage.io/apps/
Roadmap: Production Readiness for v0.1 Release - Code Quality & Cleanup #100https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/100
Feature: Admin Onboarding Wizard & Configuration Improvements #95https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/95
Feature: Admin Control Panel for Server Management #96https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/96
Feature: ETag Strategy Alignment with Web Best Practices #101https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/101
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.