Skip to content

Latest commit

Β 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌐 Global Permissionless To-Do List

A decentralized, permissionless To-Do List dApp built on Stellar Testnet using Soroban smart contracts and a lightweight Vanilla JS frontend.

No accounts. No ownership. Anyone can modify the global state β€” by design.

✨ Overview

This project explores a fully open shared-state system where:

Tasks are stored on-chain

No user authentication exists

Any connected wallet can interact with the same data

It challenges the traditional model of user-restricted applications and demonstrates how true permissionless systems behave in practice.

🧱 Tech Stack Layer Technology Smart Contract Rust (Soroban SDK) Frontend HTML, CSS, Vanilla JS Wallet Freighter (CDN integration) Blockchain Stellar SDK (window.StellarSdk) πŸ“ Project Structure

.
β”œβ”€β”€ contract/
β”‚   β”œβ”€β”€ contracts/contract/src/
β”‚   β”‚   β”œβ”€β”€ lib.rs        # Core contract logic
β”‚   β”‚   └── test.rs       # Contract test suite
β”‚   └── Cargo.toml
β”‚
β”œβ”€β”€ index.html            # UI structure + CDN imports
β”œβ”€β”€ style.css             # Styling (Glassmorphism)
└── app.js                # Wallet + transaction logic

Interface: Screenshot (9)

βš™οΈ Core Features

  1. Permissionless State

No require_auth()

Shared global storage (DataKey::Tasks)

Anyone can add, update, or delete tasks

  1. Direct Ledger Interaction

Uses Soroban RPC directly

Converts inputs β†’ nativeToScVal on client side

  1. Transaction Lifecycle Handling

Simulation β†’ fee calculation β†’ signing β†’ submission

Dynamic polling to prevent UI blocking

  1. Tested Smart Contract

Covers all state transitions

Ensures stability despite open access

πŸš€ Getting Started

  1. Clone Repository

git clone cd

  1. Run Frontend

No build tools required.

Open index.html directly OR

python -m http.server 3000

  1. Setup Wallet

Install Freighter

Switch to Testnet

Fund wallet with Testnet XLM

πŸ”— Usage

Connect wallet

Add a task

Complete or delete tasks

Observe shared global state updates

🚒 Deploy Smart Contract cd contract cargo build --target wasm32-unknown-unknown --release

Deploy soroban contract deploy
--wasm target/wasm32-unknown-unknown/release/contract.wasm
--source
--network testnet

Configure Frontend

Update in app.js:

const CONTRACT_ID = "YOUR_CONTRACT_ID";

⚠️ Known Limitations

No access control (intentional)

Anyone can overwrite or delete tasks

Not suitable for private or user-specific data

πŸ›  Debugging Issue Fix Transaction fails Ensure wallet is funded UI stuck/loading Check network + Freighter popup Read errors Verify contract ID πŸ“Œ Philosophy

This is not a productivity app. It is a system design experiment.

What happens when everyone owns the same state?

πŸ“„ License

MIT License

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages