SkillAgentSearch skills...

Rabbithole

Rabbithole.app is an encrypted file storage service based on the decentralized Internet Computer (IC)

Install / Use

/learn @rabbithole-app/Rabbithole
About this skill

Quality Score

0/100

Supported Platforms

Zed

README

The Rabbit Hole

Rabbithole.app is an encrypted file storage service based on the decentralized Internet Computer.

<img src="images/screen.png" alt="The Rabbit Hole" width="800" /> <details> <summary>Upload scheme</summary> <img src="images/upload-scheme.png" alt="Upload scheme" width="800" /> </details> <details> <summary>Download scheme</summary> <img src="images/download-scheme.png" alt="Download scheme" width="800" /> </details>

Deploy locally

Prerequisites

  1. dfx
  2. vessel 0.7.0 and later
vessel install
vessel verify --version 0.9.8
  1. node v18 (v19 is not suitable), I use nvm to work with several versions of Node at once:
nvm install 18
nvm use 18

Deploy

If this is your first time installing a project, then just type:

yarn install # npm install
./scripts/deploy.sh

Building canisters

Table of available arguments for scripts: | Argument | Default | Values | Description | | -------- | ------- | ------ | ----------- | | $1 | local | ic, local, ... | the network alias | | $2 | upgrade | install, reinstall, upgrade | specifies the type of deployment |

The project comes with scripts for building all 3 types of canisters:

main:

./scripts/build.sh
# ./scripts/build.sh ic
# ./scripts/build.sh ic reinstall

journal:

./scripts/build_journal.sh

storage:

./scripts/build_storage.sh

You can also use a node script to upgrade user canisters:

node ./scripts/ic.installcode.mjs
<img src="images/installcode.gif" alt="node ./scripts/ic.installcode.mjs" width="300" />

Table of available arguments for scripts: | Argument | Default | Values | Description | | -------- | ------- | ------ | ----------- | | -l, --list ||| Show only the list of canisters | | --canister-id <journalId> ||| Install code to specific canister id | | -t, --type <type> |journal|journal, storage| User canister type | | -m, --mode <mode> | upgrade | install, reinstall, upgrade | Specifies the type of deployment | | -n, --network <network> | local | ic, local, ... | Overrides the environment to connect to | | -c, --concurrent <number> | Infinity || Maximum number of concurrent canister upgrade requests |

Roadmap

  • [x] Basic operations
    • [x] create folders
    • [x] rename
    • [x] move with drag and drop
    • [x] move using a dialog with a destination folder selection
    • [x] delete
  • [x] Extended operations
    • [x] recursive folder merging
    • [x] replace old file in case of name conflict
    • [x] share public
    • [x] share with users
    • [x] share with time-lock option
    • [x] multi-color folders
    • [ ] file history
    • [ ] batch operations
  • [x] Navigation
    • [x] folder navigation by path
    • [x] breadcrumbs
  • [x] Uploading
    • [x] upload files
    • [x] upload folders
    • [x] pausable/resumable uploads
    • [x] queue with the number of concurrent uploads
    • [x] e2ee with vetkd
  • [ ] Downloading
    • [x] files
    • [ ] folders as zip-archive
  • [ ] I18n
    • [x] English
    • [ ] Russian
    • [ ] Deutsch
  • [ ] Thumbnails
    • [x] images
    • [ ] audio
    • [ ] video
    • [ ] pdf
  • [ ] Account wallet
    • [x] check balance
    • [x] transfer tokens
    • [x] validating amount/recipient
    • [x] ICP
    • [ ] ckBTC
    • [ ] ckETH/ckUSDT
  • [x] Web Workers to improve UI performance
    • [x] upload/download files
    • [x] polling canisters
    • [x] user session
    • [x] generating thumbnails
    • [x] keep batch alive when upload is paused
  • [x] Registration
    • [x] with ICP
    • [x] with an invitatation code
  • [x] Developers scripts
    • [x] upgrading canisters
    • [x] storage capacity testing
  • [ ] Auto top-up user canisters
  • [ ] Notification canister (WebSockets feature)
    • [ ] email (https outcalls)
  • [ ] Collaborative journal (vetKD)
    • [ ] managing users and their rights (read/write/admin)
    • [ ] active upload of a file by a journal member
  • [ ] Selling files
  • [ ] Search
  • [ ] Statistics
  • [ ] File preview (audio/video/images/pdf)
  • [ ] SNS DAO?
View on GitHub
GitHub Stars14
CategoryDevelopment
Updated9mo ago
Forks2

Languages

TypeScript

Security Score

67/100

Audited on Jul 2, 2025

No findings