Skip to content

Priyanshu7439/to-do-stellar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors