Skip to content

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

Notifications You must be signed in to change notification settings

rabbithole-app/rabbithole

Repository files navigation

The Rabbit Hole

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

The Rabbit Hole

Upload scheme Upload scheme
Download scheme Download scheme

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

node ./scripts/ic.installcode.mjs

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

  • Basic operations
    • create folders
    • rename
    • move with drag and drop
    • move using a dialog with a destination folder selection
    • delete
  • Extended operations
    • recursive folder merging
    • replace old file in case of name conflict
    • share public
    • share with users
    • share with time-lock option
    • multi-color folders
    • file history
    • batch operations
  • Navigation
    • folder navigation by path
    • breadcrumbs
  • Uploading
    • upload files
    • upload folders
    • pausable/resumable uploads
    • queue with the number of concurrent uploads
    • e2ee with vetkd
  • Downloading
    • files
    • folders as zip-archive
  • I18n
    • English
    • Russian
    • Deutsch
  • Thumbnails
    • images
    • audio
    • video
    • pdf
  • Account wallet
    • check balance
    • transfer tokens
    • validating amount/recipient
    • ICP
    • ckBTC
    • ckETH/ckUSDT
  • Web Workers to improve UI performance
    • upload/download files
    • polling canisters
    • user session
    • generating thumbnails
    • keep batch alive when upload is paused
  • Registration
    • with ICP
    • with an invitatation code
  • Developers scripts
    • upgrading canisters
    • 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?

About

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

Resources

Stars

Watchers

Forks