3 releases
0.0.2 | Jan 21, 2024 |
---|---|
0.0.1 | Dec 4, 2023 |
0.0.0 | Nov 13, 2022 |
#32 in #link-shortener
25KB
529 lines
Gear URL Shortener (GURLS)
A URL shortener built on top of Deno Deploy and Gear, inspired by goo.gl, git.io, yaus
- Frontend script / browser logic: ./www/script.js
- Contract: ./lib.rs
Live Demo
- DEV_KEY:
bottom drive obey lake curtain smoke basket hold race lonely fit walk//Alice
- RPC_NODE:
wss://rpc-node.gear-tech.io
- PROGRAM_ID:
0x2b99cdff9640bfbe22bd505d945bafd7efe22c0ec302519d905ed37add15aefe
Visit one of the links for a live version
Deploy
Before you proceed, make sure you have git
, yarn
, rustup
, deno
, node
,
jq
installed
$ git clone https://github.com/btwiuse/gurls && cd gurls
$ make init
...
$ make deploy
...
Deploying program...
CodeID already exists, skipping upload...
{
codeId: "0x83239c38c37f77a1943c7ac4d44ab5f09fae588c50ca6c602b1c7a93763b9fc8",
programId: "0x648df8e155670708c61327f0d9e0aefdea21c257acd5638d6a9a3d31e127ef3d"
}
Posting metadata...
{
name: "github.com/btwiuse/gurls",
meta: '{"types":"0x180010146775726c7314636f64656318616374696f6e18416374696f6e0001041841646455726c080110636f...',
title: "github.com/btwiuse/gurls",
metaWasm: "AGFzbQEAAAABTw1gAX8AYAF/AX9gAAF/YAN/f38Bf2AAAGADf39/AGACf38Bf2ACf38AYAR/f39/AGAEf39/fwF/YAV/f39/fwBg...",
signature: "0x2e778426cd1ff638eba215ee6f210828bb7703cd320a45dd80b04f7bb3c7681a6a7d99f45b90d2cce58f887a93551b9439...",
programId: "0x648df8e155670708c61327f0d9e0aefdea21c257acd5638d6a9a3d31e127ef3d",
genesis: "0xd144f24baf0b991be22ea8dc7dd4540d9d1e971e6bf17b1770b9fc9c88272484"
}
Program deloyed: https://idea.gear-tech.io/programs/0x648df8e155670708c61327f0d9e0aefdea21c257acd5638d6a9a3d31e127ef3d?node=wss://rpc-node.gear-tech.io
Directory Layout
.
├── Makefile // Make targets: build, deploy, publish, clean, ...
├── script/ // Utility scripts
├── dist/ // Artifacts to be published at https://unpkg.com/browse/gurls/dist/
├── lib.rs // Gear contract
├── build.rs // Custom build script
├── Cargo.toml // Cargo crate config
├── rust-toolchain // Rust toolchain config
├── target/ // Cargo build cache
├── gurls.ts // Browser script
├── esbuild.config.mjs // Esbuild bundler config
├── package.json // Npm package config
├── node_modules/ // Node module cache
└── README.md // This file
Objectives
In this workshop, you will learn how to
- Implement basic contract logic
- Deploy your contract using Gear Idea
- Use
@gear-js/api
- to interact with published contract
- read ( get program state )
- write ( sending message )
- from both frontend and backend
- browser
- nodejs
- deno
- to interact with published contract
References
- https://wiki.gear-tech.io/docs/getting-started-in-5-minutes/
- https://github.com/gear-tech/gear/tree/master/examples
- https://en.wikipedia.org/wiki/Static_(keyword)
- https://doc.rust-lang.org/reference/items/static-items.html#mutable-statics
- https://www.pwnthebox.net/rust/2020/11/01/deciphering-no-mangle.html
- https://docs.rust-embedded.org/book/interoperability/rust-with-c.html#building-a-c-api
- https://github.com/gear-tech/gear-js/blob/main/api/README.md
Dependencies
~5.5–8.5MB
~152K SLoC