Skip to content

Commit

Permalink
🚀: Launch DASL CAR and atproto repo explorer tool
Browse files Browse the repository at this point in the history
  • Loading branch information
rudyfraser committed Mar 9, 2025
1 parent 47e0094 commit d8daa6c
Show file tree
Hide file tree
Showing 17 changed files with 2,162 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[workspace]
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"]
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"]
resolver = "2"

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

## About AT Protocol

Expand Down
7 changes: 7 additions & 0 deletions rsky-satnav/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Generated by Cargo
# will have compiled files and executables
/target
.DS_Store

# These are backup files generated by rustfmt
**/*.rs.bk
34 changes: 34 additions & 0 deletions rsky-satnav/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[package]
name = "rsky-satnav"
version = "0.1.0"
authors = ["Rudy Fraser <[email protected]>"]
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
getrandom = { version = "0.2", features = ["js"] }
dioxus = { version = "0.6.0", features = [] }
wasm-bindgen = "0.2.100"
web-sys = { version = "0.3.77",features = [
"File",
"FileList",
"HtmlInputElement",
"EventTarget",
"Event"] }
wasm-bindgen-futures = "0.4.50"
gloo-file = { version = "0.3.0",features = ["futures"] }
anyhow = "1.0.97"
dioxus-web = "0.6.3"
iroh-car = "0.5.1"
serde_ipld_dagcbor = {workspace = true}
serde_json = {workspace = true}
base64 = "0.22.1"
ipld-core = "0.4.2"
hex = "0.4"

[features]
default = ["web"]
web = ["dioxus/web"]
desktop = ["dioxus/desktop"]
mobile = ["dioxus/mobile"]
21 changes: 21 additions & 0 deletions rsky-satnav/Dioxus.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
[application]

[web.app]

# HTML title tag content
title = "rsky-satnav"

# include `assets` in web platform
[web.resource]

# Additional CSS style files
style = []

# Additional JavaScript files
script = []

[web.resource.dev]

# Javascript code file
# serve: [dev-server] only
script = []
77 changes: 77 additions & 0 deletions rsky-satnav/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# rsky-satnav: Structured Archive Traversal, Navigation & Verification 🛰️ 🚘

**Work-in-Progress:**
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.

## Overview

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.

## Features

- **Local-Only Processing:**
All CAR file processing happens in your browser. No data is transmitted or stored externally.

- **Visual Exploration:**
View repository data in a collapsible, directory-style listing that mimics a file explorer.

- **MST-Based Grouping:**
Automatically groups repository records by collection, making it easier to navigate complex data structures.

## Roadmap

- **CAR Diffing:**
Compare different CAR files to identify changes and differences.

- **CAR Slicing:**
Extract and work with subsets of repository data.

- **Enhanced Sorting & Filtering:**
Improve UI controls to sort and filter collections more easily.

- **Blob Retrieval & Verification:**
Retrieve embedded Blobs and cryptographically verify CAR files.

- **External API Integration (if needed):**
- Look up DIDs and fetch public signing keys for commit signature verification.
- Retrieve current PDS data using `com.atproto.sync.getRepo` for downloading repositories.

## Development

rsky-satnav is built with [Dioxus](https://github.com/DioxusLabs/dioxus) for the UI and styled with [Tailwind CSS](https://tailwindcss.com/).

### Prerequisites

- **Rust:** A recent version is required.
- **Node.js & npm:** Needed for managing Tailwind CSS.

### Setup

1. Install npm: https://docs.npmjs.com/downloading-and-installing-node-js-and-npm
2. Install the Tailwind CSS CLI: https://tailwindcss.com/docs/installation
3. Run the following command in the root of the project to start the Tailwind CSS compiler:

```bash
npx tailwindcss -i ./input.css -o ./assets/tailwind.css --watch
```

### Serving The App

Run the following command in the root of your project to start developing with the default platform:

```bash
dx serve
```

To run for a different platform, use the `--platform platform` flag. E.g.
```bash
dx serve --platform desktop
```

## Privacy

All file processing and data exploration is performed entirely on your local machine in the browser. No external tracking or data transmission occurs.

## License

This project is released under the [Apache License 2.0](../LICENSE).
Binary file added rsky-satnav/assets/favicon.ico
Binary file not shown.
45 changes: 45 additions & 0 deletions rsky-satnav/assets/header.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
69 changes: 69 additions & 0 deletions rsky-satnav/assets/main.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
body {
background-color: #f1ecec;
color: #000;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
margin: 20px;
}

#hero {
margin: 0;
display: flex;
flex-direction: column;
justify-content: left;
align-items: start;
}

#header {
max-width: 1200px;
}

details.folder > summary::before {
content: "📁 ";
margin-right: 0.25em;
}

details.file > summary::before {
content: "📄 ";
margin-right: 0.25em;
}

details > summary {
cursor: pointer;
font-weight: bold;
}

ul {
list-style: none;
padding-left: 1em;
margin: 0.25em 0;
}

li {
margin-left: 0.5em;
}

h1, h2 {
color: #3642e3;
}
.car-content {
margin-top: 20px;
}
.car-block {
margin-bottom: 1em;
padding: 0.5em;
border: 1px solid #ccc;
border-radius: 6px;
}
.repo-structure {
margin-top: 2em;
padding: 1em;
background: #f3f3f3;
border-radius: 6px;
}
.collection-group {
margin-bottom: 1em;
padding: 0.5em;
border: 1px solid #aaa;
border-radius: 4px;
background: #fff;
}
Loading

0 comments on commit d8daa6c

Please sign in to comment.