Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

34 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ’ป ICPad - Internet Computer Development Platform

A modern, web-based IDE and development platform for building decentralized applications (dApps) on the Internet Computer (IC) blockchain.


๐Ÿš€ Overview

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.


โœจ Features

  • ๐Ÿ–Š 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

๐Ÿ—๏ธ Architecture

๐Ÿ”น Frontend (React + Vite)

  • 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

๐Ÿ”น Backend (Rust + Internet Computer)

  • Language: Rust with IC CDK
  • Canister Type: Rust canister for backend logic
  • Interface: Candid for type-safe communication

External Server / Docker Controller

  • A separate backend service that manages isolated Docker containers for code execution and session orchestration.
  • Repository: ICP Docker Controller

๐Ÿ“‚ Project Structure

โ”œโ”€โ”€ 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

๐Ÿ› ๏ธ Prerequisites

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

Installing DFX

# Install DFX
sh -ci "$(curl -fsSL https://internetcomputer.org/install.sh)"

# Verify installation
dfx --version

๐Ÿš€ Quick Start

1. Clone the Repository

git clone <repository-url>
cd ICPad

2. Install Dependencies

# Install root dependencies
npm install

# Install frontend dependencies
cd src/ICPad_frontend
npm install
cd ../..

3. Start the Local Internet Computer Network

# Start local IC network in background
dfx start --clean --background

4. Deploy the Backend Canister

# Deploy the backend canister
dfx deploy ICPad_backend

5. Start the Frontend Development Server

# Start the frontend (from project root)
cd src/ICPad_frontend
npm start

The application will be available at:

๐Ÿ“ฑ Application Pages

Landing Page

Welcome page with project overview and quick start guide.

Dashboard

Central hub for managing your dApp projects and deployed canisters.

IDE

Integrated development environment with:

  • Code editor with syntax highlighting
  • File explorer
  • Integrated terminal
  • Real-time deployment capabilities

Marketplace

Browse and download pre-built canister templates and components.

Deploy

Deploy your dApps to different networks:

  • Local development network
  • IC testnet
  • IC mainnet

Settings

Configure your development environment and preferences.

๐Ÿ”ง Development

Frontend Development

cd src/ICPad_frontend

# Start development server
npm start

# Build for production
npm run build

# Format code
npm run format

Backend Development

# 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

Adding New Features

  1. Frontend Components: Add new components in src/ICPad_frontend/src/components/
  2. Pages: Create new pages in src/ICPad_frontend/src/Pages/
  3. Backend Functions: Add new functions in src/ICPad_backend/src/lib.rs
  4. Canister Interface: Update src/ICPad_backend/ICPad_backend.did

๐ŸŒ Network Configuration

Local Development

  • Network: local
  • URL: http://localhost:4943

Testnet

  • Network: ic_testnet
  • URL: https://ic0.testnet.app

Mainnet

  • Network: ic
  • URL: https://ic0.app

๐Ÿ”— Canister Integration

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");

๐Ÿš€ Deployment

Deploy to Mainnet

# Deploy backend canister to mainnet
dfx deploy --network ic ICPad_backend

# Deploy frontend canister to mainnet
dfx deploy --network ic ICPad_frontend

Environment Variables

The application uses environment variables for configuration:

  • CANISTER_ID_ICPAD_BACKEND: Backend canister ID
  • DFX_NETWORK: Target network (local, ic_testnet, ic)

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ†˜ Support

  • Documentation: Check the project wiki for detailed guides
  • Issues: Report bugs and request features via GitHub Issues
  • Discussions: Join community discussions on GitHub Discussions

๐Ÿ”ฎ Roadmap

  • 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

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages