Part of the ODW ASSETTECH Legacy RWA / STO Reference Stack
This is the ERC-1400 Token Dashboard: a Next.js-based admin and ops dashboard for ERC-1400 security tokens. It provides token monitoring, transfers, partition management, document handling, and role-based administrative controls, integrated with the same on-chain contracts used by the rest of the stack.
Back in 2024, the ODW Team built a full Security Token Offering (STO) solution using the ERC‑1400 token standard on a private EVM chain running ConsenSys Quorum. Since then, the ecosystem has evolved: Quorum is no longer actively supported by ConsenSys (with Hyperledger Besu recommended as the successor), and STOs are now more commonly framed under the broader Real‑World Assets (RWA) narrative.
On the token side, ERC‑3643 (T‑REX) and ERC‑1155 have emerged as the most commonly used standards for regulated STO/RWA projects, with ERC‑3643 gaining prominence for its advanced, on‑chain compliance (DID, KYC/AML, transfer restrictions), and ERC‑1155 enabling efficient multi‑asset, multi‑class tokenization.
We are open‑sourcing this repository as a reference implementation to share architecture, design patterns, and integration approaches around ERC‑1400‑based STOs on permissioned EVM chains.
Important: This repository is not intended for production use. A production‑grade RWA/STO system today should:
- Migrate from Quorum → Hyperledger Besu (or another actively maintained EVM execution client), and
- Refactor token logic from ERC‑1400 → ERC‑3643 and/or ERC‑1155, with modern compliance and identity tooling.
This repository is part of the ODW ASSETTECH legacy RWA collection:
- ERC1400 Token Dashboard ← You are here (Frontend Dashboard)
- STO Backend API (Express.js API with JWT, Wallet Auth)
- STO Web Client (Next.js Web Interface)
- ERC1400 Smart Contracts (Solidity Implementation)
Each repository can be explored independently, but together they form a complete STO platform architecture.
This dashboard enables users to interact with ERC1400 token contracts through a modern, responsive web interface. Key features include:
- Token Management: View balances, transfer tokens, and manage partitions
- Document Management: Upload, view, and manage token documents
- Administrative Functions: Manage controllers, allowlists, and validators
- Wallet Integration: Seamless integration with MetaMask and other Web3 wallets via RainbowKit
- Dark Mode Support: Full dark/light theme support
- Responsive Design: Works on desktop and mobile devices
- Framework: Next.js 13.4 (React 18.2)
- UI Library: NextUI 2.1
- Web3: Wagmi 1.4, Ethers.js 6.7, RainbowKit 1.0
- State Management: Zustand 4.4
- Styling: Tailwind CSS 3.3
- Charts: ApexCharts 3.35
- Type Safety: TypeScript 5.2
dashboard-ui/
├── components/ # React components
│ ├── accounts/ # Account and transfer components
│ ├── charts/ # Chart components
│ ├── document/ # Document management components
│ ├── home/ # Home page components
│ ├── layout/ # Layout components (sidebar, navbar)
│ ├── management/ # Admin management components
│ ├── wallet/ # Wallet connection components
│ └── ...
├── config/ # Configuration and state management
├── pages/ # Next.js pages
├── services/ # Business logic and contract interactions
├── typechain/ # Generated TypeScript types for contracts
├── utils/ # Utility functions
└── styles/ # Global styles
-
Services Layer (
services/)erc1400Services.ts: ERC1400 contract interactionswalletServices.ts: Wallet utilities and error handling
-
State Management (
config/)configStorage.ts: Zustand stores for theme and wallet state
-
Components
- Modular, reusable React components
- Type-safe with TypeScript
- Responsive design with Tailwind CSS
- Node.js 18.x or 20.x
- npm or yarn
- A Web3 wallet (MetaMask recommended)
- Access to an ERC1400 token contract
- Clone the repository:
git clone https://github.com/OnDemandWorld/erc1400-dashboard.git
cd erc1400-dashboard- Install dependencies:
npm install
# or
yarn install-
Set up environment variables (see Environment Variables)
-
Run the development server:
npm run dev- Open http://localhost:3000 in your browser
The project uses strict TypeScript settings. Key configurations:
strict: true- Enables strict type checkingnoImplicitAny: false- Allows implicit any (consider enabling for better type safety)
Extended ESLint rules for Next.js and TypeScript:
- Warns on
anytypes - Warns on unused variables
- Restricts console usage (warn/error allowed)
Code formatting with Prettier:
- 2-space indentation
- Semicolons enabled
- 100 character line width
- LF line endings
Create a .env.local file in the root directory with the following variables:
# Blockchain Configuration
NEXT_PUBLIC_CHAIN_ID=2023 # Chain ID (default: 2023)
NEXT_PUBLIC_QUORUM_CHAIN=Quorum # Chain name
NEXT_PUBLIC_RPC_URL=http://localhost:8545 # RPC endpoint URL
NEXT_PUBLIC_BLOCK_EXPLORER=http://localhost:4000 # Block explorer URL
# Contract Addresses
NEXT_PUBLIC_ERC1400_TOKEN_ADDRESS=0x... # ERC1400 token contract address
# WalletConnect (Optional)
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=... # Get from https://cloud.walletconnect.com
# Feature Flags
NEXT_PUBLIC_ENABLE_TESTNETS=false # Enable testnet chainsNEXT_PUBLIC_ERC1400_TOKEN_ADDRESS: The deployed ERC1400 token contract addressNEXT_PUBLIC_RPC_URL: RPC endpoint for blockchain interactionsNEXT_PUBLIC_CHAIN_ID: Network chain ID
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID: For WalletConnect integration (defaults to demo ID)NEXT_PUBLIC_ENABLE_TESTNETS: Enable testnet support
npm run dev # Start development servernpm run build # Build for production
npm run start # Start production servernpm run lint # Run ESLint
npm run lint:fix # Fix ESLint issues
npm run format # Format code with Prettier
npm run format:check # Check code formatting
npm run type-check # Run TypeScript type checking- Push your code to GitHub
- Import the project in Vercel
- Configure environment variables in Vercel dashboard
- Deploy
- Build the project:
npm run build- Start the production server:
npm run startEnsure all required environment variables are set in your deployment platform:
- Vercel: Project Settings → Environment Variables
- Netlify: Site Settings → Environment Variables
- Other platforms: Refer to their documentation
Problem: Wallet not connecting
- Solution: Ensure MetaMask or another Web3 wallet is installed
- Check that you're on the correct network
- Verify RPC URL is accessible
Problem: Transactions failing
- Solution:
- Check wallet has sufficient balance for gas
- Verify token contract address is correct
- Ensure user has required permissions (for admin functions)
- Check network connectivity
Problem: TypeScript or build errors
- Solution:
- Run
npm run type-checkto identify type errors - Ensure all environment variables are set
- Clear
.nextfolder and rebuild:rm -rf .next && npm run build
- Run
Problem: Features not working, undefined values
- Solution:
- Ensure all
NEXT_PUBLIC_*variables are set - Restart development server after changing
.env.local - Check variable names match exactly (case-sensitive)
- Ensure all
Enable debug logging by checking browser console. The app logs:
- Wallet connection status
- Transaction submissions
- Error details
- Create a feature branch from
mainordevelop - Make your changes
- Run code quality checks:
npm run lint npm run format:check npm run type-check
- Commit with descriptive messages
- Push and create a Pull Request
- Follow TypeScript best practices
- Use functional components with hooks
- Add JSDoc comments for public functions
- Keep components small and focused
- Use meaningful variable names
While test infrastructure is being set up, manual testing should cover:
- Wallet connection/disconnection
- Token transfers (all variants)
- Document management operations
- Admin functions (if applicable)
- Responsive design on different screen sizes
MIT
If this repository is useful to you as a reference for STO/RWA design, please consider:
- Giving the project a ⭐ star on GitHub
- Watching the repo to follow updates
- Opening issues for questions, ideas, or problems you hit
- Submitting pull requests with improvements or fixes
Your feedback and contributions help us decide how much more to invest in evolving these open‑source building blocks.
ODW ASSETTECH specializes in:
- RWA / STO architecture & solution design
- Frontend development - User interfaces for blockchain applications
- Smart contract engineering (ERC‑3643, ERC‑1155, custom compliance modules)
- Migration of legacy ERC‑1400 / Quorum stacks to Hyperledger Besu and modern standards
- Backend & frontend integration (wallet flows, KYC/AML, dashboards, ops tooling)
- Regulated environments: focusing on compliance‑aware tokenization flows
If you are:
- A financial institution or issuer exploring tokenization,
- A startup building an RWA platform, or
- An engineering team looking to modernize an existing STO stack,
we'd be happy to discuss how we can help.
- Email: office@odw.ai
- Contact Page: https://ondemandworld.com/contact-us/
- GitHub Issues: Report bugs and request features
- GitHub Discussions: Ask questions and share ideas
- ERC1400 Token Dashboard – Next.js dashboard UI for managing ERC‑1400 tokens
- STO Backend API – TypeScript/Express backend for auth, users, and wallet integration
- STO Web Client – Next.js web client for end‑user STO workflows
- ERC1400 Smart Contracts – Solidity implementation of ERC‑1400 and related extensions
This repository is one component of a 4‑repo reference stack. For a fuller picture, explore the other repos in the ODW ASSETTECH organization.
Made by the ODW Team – sharing our 2024 STO stack as a reference for today's RWA builders.