old version of Odoc can be found here
-
first download the pocketic https://github.com/dfinity/pocketic/releases
-
add this to dfx.json
"internet_identity": { "candid": "https://github.com/dfinity/internet-identity/releases/latest/download/internet_identity.did", "remote": { "id": { "ic": "rdmx6-jaaaa-aaaaa-aaadq-cai" } }, "type": "custom", "wasm": "https://github.com/dfinity/internet-identity/releases/latest/download/internet_identity_dev.wasm.gz" },
-
in your .env file add
- When you run
dfx deploy
you will get 3 links, frontend, backend and internet_identity copy the value with localhost and the port after it VITE_IC_HOST='http://localhost:<the port of your host canisters eg localhost:4943 or 127.0.0.1:5000 etc>
VITE_INTERNET_IDENTITY=<internet_identity id at the end of link after ?id=.....>
POCKET_IC_BIN=/<path to>/pocket-ic
BACKEND_WASM=/<ur dir>/odoc/target/wasm32-unknown-unknown/release/backend.wasm
VITE_DFX_NETWORK='local'
VITE_DFX_PORT=<the port from dfx deploy urls>
- When you run
-
read this https://crates.io/crates/pocket-ic
-
and read this https://www.npmjs.com/package/@hadronous/pic
dfx start --background --clean
dfx deploy
dfx deploy generate
yarn start
- open http://127.0.0.1:5173/
- You should see this page
Odoc
This app is Notion.so clone, roam research clone and obsidian clone. The main purpose of this app is not to just clone these note-taking apps but to make an all-in-one Open source note-taking app with automation features.
- documentations
- overview
- Custom smart contracts
- privacy plan
- the code
- project plan
- drag and drop
- live collaboration
-
Plugins : plugins or extensions are customizations that you can add to your Odoc application. For example, you can add grammar correction plugin like grammarly, or a machine learning plugin that help you abbreviation your text.
-
Components : In notion you may notice that you can import a table when you hit
/
then type table then hit enter. The table called a component. In Odoc you can create your own custom components. For example, you can create flash cards. Also, you can use plugins to enhance your components. For example, you can use Google translator plugin with flash card component so everytime you add a word you will get automatic translation. -
Services : The is the core goal of Odoc where you can create a Google translator plugin and create flashcard components then put them all in one workspace (page) and you can publish that page so other people can use it. In other word you don't need to create new plugin and component for every user, instead one user can create all of them and share it with others.
-
search : We will have 6 search functionaries.
- search for words in file
- search for files names
- global search for words in any files in any directory you choose
- regular expression search.
- save your search results and reuse them again.
-
spreadsheet : similar to Microsoft Excel you will have a spreadsheet where you can store your data and implement formulas. Also, with plugins you can implement custom formulas like a Google translator. Last but not least, you can use these spreadsheets as a backend for your services. In other word the components will act as a frontend that interact with this spreadsheet.
- Features:
- Columns permissions: You can decide who can see, update each column or comment on a column
- Views permission: You can decide who can see each view. Also, the views permission called rows permission because you can add a file for a view to event specific users from sewing septic rows. And this filter can't be removed by anyone so others can only add more filters but can't touch your filter.
- Custom smart contract: you can write somthing
like
if (approved = true) {transfer(100$).to(columns.assigned)}
this will automatically release the payment of a ser when you approve the delivery of an item.
-
Ownership : when you create a component, or a plugin or a service you will own it as an NFT. Hence, you can make money from it. There are three ways to make money with NFTs. One by selling it. Second, by getting percentage on every sell. Third, by requiring subscriptions fees like 7$ a month without selling the plugin or the service.
-
Privacy : You will have the option to upload your data on the blockchain internet computer in order to share it with other people.
- First of all, I believe this new system will replace Microsoft Office and apple iwork.
- Users, will have safe place to store their data on the blockchain on IC.
- Users can do whatever they can imagine with all these customizations.
- there are more feature that I will work one like Real time data, so you can share your documents and update them in real time. or like page components. So, you can have an entire page as a spreadsheet.
- Success: I believe Odoc will be successful because the market is already huge, if I just take all docs apps like events, microsoft words and notion then I put all of their features in one place, of course I will get at least few users.
- Disability: Because I am using rust and wasm everything became durable and easy, even the code editor. With
rust
I can execute any program langauge seamlessly. - I also ran few experiment before building this project in order to reach to the ultimate way.
- make sure to install
zstd
llvm
,clang
andopenssl
,gcc
,rocksdb
in order for the desktop app to work ( surealdb requirements). brew tap homebrew/versions; brew install gcc7 --use-llvm
- Quick Start
- SDK Developer Tools
- Rust Canister Development Guide
- ic-cdk
- ic-cdk-macros
- Candid Introduction
- JavaScript API Reference
- check tauri prerequisites
especially the following prerequisites.
- $
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- or run $
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
- or run $
- install xcode
- to check that run $
xcode-select --install
- to check that run $
- make sure to have c++
- $
- $
cd Desktop
- $
git clone https://github.com/aliscie/Odoc-tauri
- $
cd Odoc-tauri
- $
cargo tauri dev
rustup target remove wasm32-unknown-unknown
rustup self uninstall
brew uninstall rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install --locked wasm-bindgen-cli
rustup target add wasm32-unknown-unknown
cargo clean
cargo update
rm -r rustup
sudo port uninstall rustup
history | grep cargo