Skip to content

Commit d8daa6c

Browse files
committed
🚀: Launch DASL CAR and atproto repo explorer tool
1 parent 47e0094 commit d8daa6c

File tree

17 files changed

+2162
-1
lines changed

17 files changed

+2162
-1
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[workspace]
2-
members = [ "rsky-common", "rsky-crypto","rsky-feedgen", "rsky-firehose", "rsky-identity", "rsky-labeler", "rsky-lexicon", "rsky-pds", "rsky-syntax", "rsky-jetstream-subscriber", "rsky-repo", "cypher/backend", "cypher/frontend"]
2+
members = [ "rsky-common", "rsky-crypto","rsky-feedgen", "rsky-firehose", "rsky-identity", "rsky-labeler", "rsky-lexicon", "rsky-pds", "rsky-syntax", "rsky-jetstream-subscriber", "rsky-repo", "cypher/backend", "cypher/frontend", "rsky-satnav"]
33
resolver = "2"
44

55
[workspace.dependencies]

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ rsky (/ˈrɪski/) is intended to be a full implementation of [AT Protocol](https
4747
- `rsky-jetstream-subscriber`: Firehose consumer for Jetstream.
4848
- `rsky-labeler`: Firehose consumer that labels content.
4949
- `Cypher`: An AT Protocol app-view designed for local-only posting and global views.
50+
- `rsky-satnav`: "Structured Archive Traversal, Navigation & Verification", a DASL CAR and AT Protocol repository explorer.
5051

5152
## About AT Protocol
5253

rsky-satnav/.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Generated by Cargo
2+
# will have compiled files and executables
3+
/target
4+
.DS_Store
5+
6+
# These are backup files generated by rustfmt
7+
**/*.rs.bk

rsky-satnav/Cargo.toml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
[package]
2+
name = "rsky-satnav"
3+
version = "0.1.0"
4+
authors = ["Rudy Fraser <him@rudyfraser.com>"]
5+
edition = "2021"
6+
7+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
8+
9+
[dependencies]
10+
getrandom = { version = "0.2", features = ["js"] }
11+
dioxus = { version = "0.6.0", features = [] }
12+
wasm-bindgen = "0.2.100"
13+
web-sys = { version = "0.3.77",features = [
14+
"File",
15+
"FileList",
16+
"HtmlInputElement",
17+
"EventTarget",
18+
"Event"] }
19+
wasm-bindgen-futures = "0.4.50"
20+
gloo-file = { version = "0.3.0",features = ["futures"] }
21+
anyhow = "1.0.97"
22+
dioxus-web = "0.6.3"
23+
iroh-car = "0.5.1"
24+
serde_ipld_dagcbor = {workspace = true}
25+
serde_json = {workspace = true}
26+
base64 = "0.22.1"
27+
ipld-core = "0.4.2"
28+
hex = "0.4"
29+
30+
[features]
31+
default = ["web"]
32+
web = ["dioxus/web"]
33+
desktop = ["dioxus/desktop"]
34+
mobile = ["dioxus/mobile"]

rsky-satnav/Dioxus.toml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
[application]
2+
3+
[web.app]
4+
5+
# HTML title tag content
6+
title = "rsky-satnav"
7+
8+
# include `assets` in web platform
9+
[web.resource]
10+
11+
# Additional CSS style files
12+
style = []
13+
14+
# Additional JavaScript files
15+
script = []
16+
17+
[web.resource.dev]
18+
19+
# Javascript code file
20+
# serve: [dev-server] only
21+
script = []

rsky-satnav/README.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# rsky-satnav: Structured Archive Traversal, Navigation & Verification 🛰️ 🚘
2+
3+
**Work-in-Progress:**
4+
rsky-satnav is a prototype tool for visually exploring DASL CAR and AT Protocol repositories entirely in your browser. All processing is done locally—no data is tracked or sent externally.
5+
6+
## Overview
7+
8+
rsky-satnav lets you load a CAR file (Content-Addressable Archive) and visually inspect its contents using a collapsible, directory-style UI. It leverages MST (Merkle Sorted Tree) logic to group records by collection for an intuitive file-directory-like experience.
9+
10+
## Features
11+
12+
- **Local-Only Processing:**
13+
All CAR file processing happens in your browser. No data is transmitted or stored externally.
14+
15+
- **Visual Exploration:**
16+
View repository data in a collapsible, directory-style listing that mimics a file explorer.
17+
18+
- **MST-Based Grouping:**
19+
Automatically groups repository records by collection, making it easier to navigate complex data structures.
20+
21+
## Roadmap
22+
23+
- **CAR Diffing:**
24+
Compare different CAR files to identify changes and differences.
25+
26+
- **CAR Slicing:**
27+
Extract and work with subsets of repository data.
28+
29+
- **Enhanced Sorting & Filtering:**
30+
Improve UI controls to sort and filter collections more easily.
31+
32+
- **Blob Retrieval & Verification:**
33+
Retrieve embedded Blobs and cryptographically verify CAR files.
34+
35+
- **External API Integration (if needed):**
36+
- Look up DIDs and fetch public signing keys for commit signature verification.
37+
- Retrieve current PDS data using `com.atproto.sync.getRepo` for downloading repositories.
38+
39+
## Development
40+
41+
rsky-satnav is built with [Dioxus](https://github.com/DioxusLabs/dioxus) for the UI and styled with [Tailwind CSS](https://tailwindcss.com/).
42+
43+
### Prerequisites
44+
45+
- **Rust:** A recent version is required.
46+
- **Node.js & npm:** Needed for managing Tailwind CSS.
47+
48+
### Setup
49+
50+
1. Install npm: https://docs.npmjs.com/downloading-and-installing-node-js-and-npm
51+
2. Install the Tailwind CSS CLI: https://tailwindcss.com/docs/installation
52+
3. Run the following command in the root of the project to start the Tailwind CSS compiler:
53+
54+
```bash
55+
npx tailwindcss -i ./input.css -o ./assets/tailwind.css --watch
56+
```
57+
58+
### Serving The App
59+
60+
Run the following command in the root of your project to start developing with the default platform:
61+
62+
```bash
63+
dx serve
64+
```
65+
66+
To run for a different platform, use the `--platform platform` flag. E.g.
67+
```bash
68+
dx serve --platform desktop
69+
```
70+
71+
## Privacy
72+
73+
All file processing and data exploration is performed entirely on your local machine in the browser. No external tracking or data transmission occurs.
74+
75+
## License
76+
77+
This project is released under the [Apache License 2.0](../LICENSE).

rsky-satnav/assets/favicon.ico

15 KB
Binary file not shown.

rsky-satnav/assets/header.svg

Lines changed: 45 additions & 0 deletions
Loading

rsky-satnav/assets/main.css

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
body {
2+
background-color: #f1ecec;
3+
color: #000;
4+
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
5+
margin: 20px;
6+
}
7+
8+
#hero {
9+
margin: 0;
10+
display: flex;
11+
flex-direction: column;
12+
justify-content: left;
13+
align-items: start;
14+
}
15+
16+
#header {
17+
max-width: 1200px;
18+
}
19+
20+
details.folder > summary::before {
21+
content: "📁 ";
22+
margin-right: 0.25em;
23+
}
24+
25+
details.file > summary::before {
26+
content: "📄 ";
27+
margin-right: 0.25em;
28+
}
29+
30+
details > summary {
31+
cursor: pointer;
32+
font-weight: bold;
33+
}
34+
35+
ul {
36+
list-style: none;
37+
padding-left: 1em;
38+
margin: 0.25em 0;
39+
}
40+
41+
li {
42+
margin-left: 0.5em;
43+
}
44+
45+
h1, h2 {
46+
color: #3642e3;
47+
}
48+
.car-content {
49+
margin-top: 20px;
50+
}
51+
.car-block {
52+
margin-bottom: 1em;
53+
padding: 0.5em;
54+
border: 1px solid #ccc;
55+
border-radius: 6px;
56+
}
57+
.repo-structure {
58+
margin-top: 2em;
59+
padding: 1em;
60+
background: #f3f3f3;
61+
border-radius: 6px;
62+
}
63+
.collection-group {
64+
margin-bottom: 1em;
65+
padding: 0.5em;
66+
border: 1px solid #aaa;
67+
border-radius: 4px;
68+
background: #fff;
69+
}

0 commit comments

Comments
 (0)