A modern, web-based IDE and development platform for building decentralized applications (dApps) on the Internet Computer (IC) blockchain.
ICPad is a comprehensive development environment that combines a modern React-based UI with Internet Computer canister deployment capabilities.
It provides developers with an intuitive interface for creating, testing, and deploying dApps on the IC network.
- 🖊 Modern Web IDE – React-based interface with syntax highlighting and real-time editing
- 🛠 Canister Management – Deploy and manage Internet Computer canisters
- 📦 Template Marketplace – Browse and use pre-built canister templates
- 🌐 Multi-Network Support – Deploy to local, testnet, and mainnet networks
- 🌓 Dark/Light Theme – Customizable UI themes for better dev experience
- 🖥 Real-time Terminal – Integrated terminal for deployment and debugging
- Framework: React 18 with React Router
- Build Tool: Vite for fast development and building
- Styling: Tailwind CSS with custom theme system
- State Management: React Context for theme management
- Language: Rust with IC CDK
- Canister Type: Rust canister for backend logic
- Interface: Candid for type-safe communication
- A separate backend service that manages isolated Docker containers for code execution and session orchestration.
- Repository: ICP Docker Controller
├── src/
│ ├── ICPad_backend/ # Rust backend canister (core logic, DFS, code handling)
│ │ ├── Cargo.toml
│ │ └── src/
│ │ └── lib.rs
│ │
│ ├── ICPad_frontend/ # React/Next.js frontend (UI for the IDE)
│ │ ├── package.json
│ │ ├── public/
│ │ └── src/
│ │ ├── components/
│ │ ├── pages/
│ │ └── styles/
│ │
│ ├── ICPad_user/ # User management canister (auth, profiles, permissions)
│ │ ├── Cargo.toml
│ │ └── src/
│ │ └── lib.rs
│ │
│ ├── ICPad_marketplace/ # Marketplace canister (template/code sharing, future tokens)
│ │ ├── Cargo.toml
│ │ └── src/
│ │ └── lib.rs
│ │
│ ├── ICPad_rustfrontend/ # Rust-based frontend canister (alt frontend for WASM delivery)
│ │ ├── Cargo.toml
│ │ └── src/
│ │ └── lib.rs
│
├── dfx.json # Internet Computer project configuration
├── package.json # Root-level package dependencies
├── tsconfig.json # TypeScript configuration (if present)
├── Cargo.lock # Rust lockfile
├── README.md # Project documentation
Before running this project, ensure you have the following installed:
- Node.js (>= 16.0.0)
- npm (>= 7.0.0)
- Rust (latest stable)
- DFX (Internet Computer SDK)
- Git
# Install DFX
sh -ci "$(curl -fsSL https://internetcomputer.org/install.sh)"
# Verify installation
dfx --versiongit clone <repository-url>
cd ICPad# Install root dependencies
npm install
# Install frontend dependencies
cd src/ICPad_frontend
npm install
cd ../..# Start local IC network in background
dfx start --clean --background# Deploy the backend canister
dfx deploy ICPad_backend# Start the frontend (from project root)
cd src/ICPad_frontend
npm startThe application will be available at:
- Frontend: http://localhost:3000 (or 3001 if 3000 is busy)
- Canister Interface: http://127.0.0.1:4943/?canisterId=[CANISTER_ID]
Welcome page with project overview and quick start guide.
Central hub for managing your dApp projects and deployed canisters.
Integrated development environment with:
- Code editor with syntax highlighting
- File explorer
- Integrated terminal
- Real-time deployment capabilities
Browse and download pre-built canister templates and components.
Deploy your dApps to different networks:
- Local development network
- IC testnet
- IC mainnet
Configure your development environment and preferences.
cd src/ICPad_frontend
# Start development server
npm start
# Build for production
npm run build
# Format code
npm run format# Build the Rust canister
dfx build ICPad_backend
# Deploy to local network
dfx deploy ICPad_backend
# Deploy to mainnet
dfx deploy --network ic ICPad_backend- Frontend Components: Add new components in
src/ICPad_frontend/src/components/ - Pages: Create new pages in
src/ICPad_frontend/src/Pages/ - Backend Functions: Add new functions in
src/ICPad_backend/src/lib.rs - Canister Interface: Update
src/ICPad_backend/ICPad_backend.did
- Network:
local - URL:
http://localhost:4943
- Network:
ic_testnet - URL:
https://ic0.testnet.app
- Network:
ic - URL:
https://ic0.app
The project includes generated TypeScript/JavaScript bindings for the backend canister:
import { createActor, ICPad_backend } from 'declarations/ICPad_backend';
// Create actor instance
const actor = createActor(process.env.CANISTER_ID_ICPAD_BACKEND);
// Call canister functions
const greeting = await actor.greet("World");# Deploy backend canister to mainnet
dfx deploy --network ic ICPad_backend
# Deploy frontend canister to mainnet
dfx deploy --network ic ICPad_frontendThe application uses environment variables for configuration:
CANISTER_ID_ICPAD_BACKEND: Backend canister IDDFX_NETWORK: Target network (local, ic_testnet, ic)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: Check the project wiki for detailed guides
- Issues: Report bugs and request features via GitHub Issues
- Discussions: Join community discussions on GitHub Discussions
- Real-time collaboration features
- Advanced debugging tools
- Canister performance monitoring
- Template marketplace integration
- Multi-language support (Motoko, Rust, TypeScript)
- CI/CD pipeline integration
Built with ❤️ for the Internet Computer ecosystem