Skip to content

Commit 2115b2d

Browse files
feat: initial release of solidpod v0.0.1
Solidpod is a simple, user-friendly wrapper around jspod for running Solid pod servers. Features: - Zero configuration - run with npx solidpod - Thin wrapper around jspod - Clear, memorable name for easy discovery - Passes all arguments through to jspod - Simple signal forwarding
0 parents  commit 2115b2d

5 files changed

Lines changed: 223 additions & 0 deletions

File tree

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
node_modules/
2+
pod-data/
3+
*.log
4+
.DS_Store
5+
.env

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Melvin Carvalho
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# solidpod
2+
3+
> The easiest way to run a Solid pod. Zero configuration, just works.
4+
5+
[![npm version](https://img.shields.io/npm/v/solidpod.svg)](https://www.npmjs.com/package/solidpod)
6+
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
7+
8+
**solidpod** is the simplest wrapper to run your own [Solid](https://solidproject.org) pod server.
9+
10+
## 🚀 Quick Start
11+
12+
```bash
13+
# Run instantly with npx (no installation required!)
14+
npx solidpod
15+
16+
# That's it! Your Solid pod is running at http://localhost:5444
17+
```
18+
19+
## ✨ What You Get
20+
21+
-**Zero configuration** - Just works
22+
-**Solid Protocol** - Full spec compliance
23+
-**WebID Authentication** - Decentralized identity
24+
-**Passkey Support** - Modern passwordless auth
25+
-**WebSocket Notifications** - Real-time updates
26+
-**JSON-LD Native** - First-class linked data support
27+
28+
## 📦 Installation
29+
30+
### No Installation (Recommended)
31+
32+
```bash
33+
npx solidpod
34+
```
35+
36+
### Global Installation
37+
38+
```bash
39+
npm install -g solidpod
40+
solidpod
41+
```
42+
43+
## 🎮 Usage
44+
45+
```bash
46+
# Start with defaults
47+
solidpod
48+
49+
# Custom port
50+
solidpod --port 8080
51+
52+
# Custom data directory
53+
solidpod --root /var/pods
54+
55+
# Multi-user mode
56+
solidpod --multiuser
57+
58+
# Disable authentication
59+
solidpod --no-auth
60+
61+
# Show help
62+
solidpod --help
63+
```
64+
65+
## 📖 How It Works
66+
67+
solidpod is a thin wrapper around [jspod](https://github.com/JavaScriptSolidServer/jspod), which itself wraps [JavaScriptSolidServer](https://github.com/JavaScriptSolidServer/JavaScriptSolidServer).
68+
69+
**Layers:**
70+
```
71+
solidpod → jspod → JavaScriptSolidServer
72+
```
73+
74+
Each layer adds convenience:
75+
- **JavaScriptSolidServer**: Full-featured Solid server implementation
76+
- **jspod**: Beautiful CLI with sensible defaults
77+
- **solidpod**: Most user-friendly name for instant discovery
78+
79+
## 🌟 First Run
80+
81+
**Step 1**: Run the command
82+
```bash
83+
npx solidpod
84+
```
85+
86+
**Step 2**: Open http://localhost:5444 in your browser
87+
88+
**Step 3**: Register with your device's passkey (fingerprint, Face ID, etc.)
89+
90+
**Step 4**: Start using your pod!
91+
92+
## 📚 Learn More
93+
94+
- **Solid Project**: https://solidproject.org
95+
- **Solid Protocol**: https://solidproject.org/TR/protocol
96+
- **WebID**: https://www.w3.org/2005/Incubator/webid/spec
97+
98+
## 🤝 Contributing
99+
100+
Contributions welcome! This package is intentionally minimal - just a friendly wrapper.
101+
102+
## 📄 License
103+
104+
MIT - see [LICENSE](./LICENSE)
105+
106+
## 🙏 Credits
107+
108+
Built on [jspod](https://github.com/JavaScriptSolidServer/jspod) and [JavaScriptSolidServer](https://github.com/JavaScriptSolidServer/JavaScriptSolidServer).
109+
110+
---
111+
112+
**Made with ❤️ for the Solid community**
113+
114+
*"Your pod, instantly"*

index.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/usr/bin/env node
2+
3+
/**
4+
* solidpod - Solid Pod Server
5+
* The easiest way to run a Solid pod
6+
*/
7+
8+
import { spawn } from 'child_process';
9+
import { fileURLToPath } from 'url';
10+
import { dirname, join, delimiter } from 'path';
11+
12+
const __dirname = dirname(fileURLToPath(import.meta.url));
13+
14+
// Pass all arguments through to jspod
15+
const args = process.argv.slice(2);
16+
17+
// Start jspod with enhanced PATH
18+
const jspod = spawn('jspod', args, {
19+
stdio: 'inherit',
20+
env: {
21+
...process.env,
22+
PATH: `${join(__dirname, 'node_modules', '.bin')}${delimiter}${process.env.PATH}`
23+
}
24+
});
25+
26+
jspod.on('error', (error) => {
27+
console.error('Failed to start Solid pod server');
28+
console.error(error.message);
29+
process.exit(1);
30+
});
31+
32+
jspod.on('exit', (code) => {
33+
process.exit(code);
34+
});
35+
36+
// Forward signals
37+
process.on('SIGINT', () => {
38+
jspod.kill('SIGTERM');
39+
});
40+
41+
process.on('SIGTERM', () => {
42+
jspod.kill('SIGTERM');
43+
});

package.json

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"name": "solidpod",
3+
"version": "0.0.1",
4+
"description": "Solid Pod Server - The easiest way to run a Solid pod",
5+
"type": "module",
6+
"main": "index.js",
7+
"bin": {
8+
"solidpod": "./index.js"
9+
},
10+
"scripts": {
11+
"start": "node index.js"
12+
},
13+
"repository": {
14+
"type": "git",
15+
"url": "git+https://github.com/JavaScriptSolidServer/solidpod.git"
16+
},
17+
"keywords": [
18+
"solid",
19+
"pod",
20+
"server",
21+
"linked-data",
22+
"webid",
23+
"semantic-web",
24+
"decentralized",
25+
"rdf",
26+
"ldp"
27+
],
28+
"author": "Melvin Carvalho",
29+
"license": "MIT",
30+
"bugs": {
31+
"url": "https://github.com/JavaScriptSolidServer/solidpod/issues"
32+
},
33+
"homepage": "https://github.com/JavaScriptSolidServer/solidpod#readme",
34+
"engines": {
35+
"node": ">=18.0.0"
36+
},
37+
"dependencies": {
38+
"jspod": "^0.0.3"
39+
}
40+
}

0 commit comments

Comments
 (0)