-
-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
🚀: Launch DASL CAR and atproto repo explorer tool
- Loading branch information
1 parent
47e0094
commit d8daa6c
Showing
17 changed files
with
2,162 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 = [] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} |
Oops, something went wrong.