Daniel Ioni

🏗️ Building a Tokenization Ecosystem: MyZubster Gateway × Singapore Real Estate

The Vision

"What if anyone could invest in prime Singapore real estate with just $500, using privacy-first payments, all powered by open-source infrastructure?"

That's exactly what we built.

Two projects, one ecosystem:

  1. MyZubster Gateway — The payment and order infrastructure
  2. Tokenization Singapore — The real estate tokenization platform

They work together to create a seamless, private, and inclusive investment ecosystem.


📍 Project Links


🏢 Tokenization Singapore

What We've Tokenized

Token Symbol Total Supply Price Status
Marina Bay Tower MBFT 8,000 1,000 SGD ✅ Active
Singapore Real Estate SRET 10,000 1,000 SGD ✅ Active

Real Results

Metric Value
Tokens Minted 18,000
Tokens Sold 2,470 (13.7%)
Total Raised 2.47M SGD (≈ 1.85M USD)
Investors 12
Orders Processed 34
Orders Completed 28
Total Fees Earned 94,500 SGD

Smart Contract Features

The SingaporeRealEstateToken is an ERC-20 token with additional features:

  • Whitelist: Only accredited investors can buy tokens
  • Automatic Price: Fixed price per token (1000 SGD)
  • Rent Distribution: SPV can distribute rental income to token holders
  • Pausable: Owner can pause transactions in case of emergency
  • ReentrancyGuard: Protection against reentrancy attacks

solidity
// Quick overview
contract SingaporeRealEstateToken is ERC20, Ownable, Pausable, ReentrancyGuard {
    uint256 public constant TOKEN_PRICE = 1000 * 10**18; // 1 token = 1000 SGD
    uint256 public maxSupply;
    address public spvAddress;
    mapping(address => bool) public accreditedInvestors;

    function buyTokens(uint256 amount) external payable whenNotPaused onlyAccredited;
    function distributeRent() external onlySPV;
    function whitelistInvestor(address investor) external onlyOwner;
}
🎯 Why Monero?

Monero was chosen for its unique properties:
Feature Monero  PayPal  Bank Transfer
Micro-payments (€0.10)    ✅ ❌ ❌
Privacy ✅ ❌ ❌
No bank account needed  ✅ ❌ ❌
Global access   ✅ ❌ ❌
Decentralized   ✅ ❌ ❌
Low fees    ✅ ❌ ❌
Subaddress support  ✅ ❌ ❌
Privacy Features

    Stealth addresses — One-time addresses per transaction

    RingCT — Hides transaction amounts

    Ring signatures — Hides which output is being spent

    Subaddresses — Unique addresses per order

📊 API Overview
Authentication
Method  Endpoint    Description Auth
POST    /api/auth/register  Register a new user Public
POST    /api/auth/login Login and receive JWT   Public
GET /api/auth/profile   Get user profile    JWT
Tokens
Method  Endpoint    Description Auth
POST    /api/tokens Create a new token  Admin
GET /api/tokens List all tokens JWT
GET /api/tokens/:id/stats   Get token statistics    JWT
POST    /api/tokens/:id/deploy  Deploy smart contract   Admin
Orders
Method  Endpoint    Description Auth
POST    /api/orders Create an order JWT
GET /api/orders Get user orders JWT
PUT /api/orders/:id/confirm-payment Confirm payment Admin
PUT /api/orders/:id/complete    Complete an order   Admin
🤝 Contributing

We have 3 open bounties for contributors:
#   Issue   Bounty (XMR)    Value (€)
#1  Token Balance Endpoint  0.05 XMR    €10.00
#2  Email Notifications 0.05 XMR    €10.00
#3  P2P Messaging System    0.07 XMR    €14.00
How to Contribute

    Check open issues for available tasks

    Fork the repository

    Create a new branch (git checkout -b feature/amazing-feature)

    Commit your changes (git commit -m 'Add some amazing feature')

    Push to the branch (git push origin feature/amazing-feature)

    Open a Pull Request with a clear description

    Include your Monero address in the PR for payment

Bounty Program
Type    Bounty (XMR)    Value (€)
Typo/Link Fix   0.0005 XMR  €0.10
Warning/Comment 0.001 XMR   €0.20
Test/README 0.003 XMR   €0.60
Bug Fix 0.005-0.01 XMR  €1.00-2.00
Feature 0.01-0.08 XMR   €2.00-16.00
📈 Key Lessons Learned
What Worked Well

✅ Monero Integration — Subaddresses work perfectly for tracking payments
✅ Smart Contract Design — OpenZeppelin provided excellent security
✅ API Structure — Clean separation of concerns (routes, controllers, models)
✅ i18n Support — Multi-language made the platform more accessible
✅ JWT Authentication — Simple and effective role management
What We'd Do Differently

🔄 Better Documentation — Swagger/OpenAPI should have been there from day one
🔄 Docker First — Containerization would have made deployment easier
🔄 Webhooks Early — Event notifications would have improved integration
🚀 Getting Started
Prerequisites

    Node.js: v18.x or higher

    MongoDB: v5.0 or higher

    Monero RPC: A running Monero wallet RPC

    Ethereum Node: Infura or Alchemy endpoint

Installation
bash

# 1. Clone the repository
git clone https://github.com/DanielIoni-creator/tokenization-singapore.git
cd tokenization-singapore

# 2. Install backend dependencies
cd backend
npm install

# 3. Configure environment
cp .env.example .env
nano .env  # Edit with your MongoDB URI, Ethereum RPC URL, and Monero RPC URL

# 4. Create admin user
node scripts/createAdmin.js

# 5. Start the server
npm run dev

The API will be available at http://localhost:3000.
🔮 The Future
MyZubster Gateway

    Swagger/OpenAPI — Interactive API documentation

    Docker — One-command deployment

    PGP Encryption — Encrypted order data

    Webhooks — Real-time event notifications

    P2P Messaging — Investor communication

    Mobile App — React Native for iOS/Android

Tokenization Singapore

    Property #3 — Orchard Road (5,000 tokens)

    Secondary Market — Token trading platform

    Dividend Distribution — Automated rent distribution

    Portfolio Analytics — Advanced investor metrics

    Mobile App — Portfolio management

💬 Join the Discussion

    GitHub Issues: Report a bug

    Telegram: t.me/myzubster

    Twitter: @MyZubster

    Tor: http://olqcnbdlt35k2stmmwvzhvuetu2fc4us2jnn5wg6y6wlcddihfmdomid.onion

📜 License

MIT — Free for everyone to use, modify, and build upon.
🌟 Acknowledgments

    OpenZeppelin for secure smart contract libraries

    Monero for privacy-preserving payments

    Ethereum for smart contract infrastructure

    All contributors who help make this project better

"Not how much you give, but how many give it." — Spiccioli in Monero

Built with ❤️ by the MyZubster team.

Enter fullscreen mode Exit fullscreen mode