# ICP Developer Docs > Developer documentation for building full-stack web applications, DeFi protocols, and cross-chain integrations on the Internet Computer. - [ICP Developer Docs](https://beta-docs.internetcomputer.org/index.md): Build full-stack web applications, DeFi protocols, and cross-chain integrations on the Internet Computer ## Getting Started - [Quickstart](https://beta-docs.internetcomputer.org/getting-started/quickstart.md): Install icp-cli, create a project, and deploy your first canister in under 10 minutes - [Project Structure](https://beta-docs.internetcomputer.org/getting-started/project-structure.md): Understand icp.yaml, recipes, binding generation, and the .icp/ directory - [What Next?](https://beta-docs.internetcomputer.org/getting-started/what-next.md): Choose your development path based on what you want to build ## Backends - [Data Persistence](https://beta-docs.internetcomputer.org/guides/backends/data-persistence.md): Store and retrieve data in canisters using stable structures, persistent actors, and upgrade hooks - [HTTPS Outcalls](https://beta-docs.internetcomputer.org/guides/backends/https-outcalls.md): Make HTTP GET and POST requests from canisters to external web APIs - [Timers](https://beta-docs.internetcomputer.org/guides/backends/timers.md): Schedule one-shot and periodic tasks in your canister - [Onchain Randomness](https://beta-docs.internetcomputer.org/guides/backends/randomness.md): Generate unpredictable random numbers using the IC management canister - [Certified Variables](https://beta-docs.internetcomputer.org/guides/backends/certified-variables.md): Return verifiable query responses using Merkle trees and certified data - [Onchain AI](https://beta-docs.internetcomputer.org/guides/backends/onchain-ai.md): Call large language models directly from canister code using the LLM canister ## Canister Calls - [Candid Interface](https://beta-docs.internetcomputer.org/guides/canister-calls/candid.md): Define and use Candid interfaces for type-safe canister communication - [Binding Generation](https://beta-docs.internetcomputer.org/guides/canister-calls/binding-generation.md): Generate type-safe JS/TS and Rust bindings from Candid interface files - [Onchain Calls](https://beta-docs.internetcomputer.org/guides/canister-calls/onchain-calls.md): Call functions on other canisters from your canister code - [Offchain Calls](https://beta-docs.internetcomputer.org/guides/canister-calls/offchain-calls.md): Call canister functions from frontends, scripts, and backend services using IC agent libraries - [Parallel Calls](https://beta-docs.internetcomputer.org/guides/canister-calls/parallel-calls.md): Execute multiple inter-canister calls concurrently for better performance ## Frontends - [Asset Canister](https://beta-docs.internetcomputer.org/guides/frontends/asset-canister.md): Deploy and serve frontend assets from an ICP canister - [Custom Domains](https://beta-docs.internetcomputer.org/guides/frontends/custom-domains.md): Point a custom domain to your ICP-hosted frontend with DNS and boundary node configuration - [Response Certification](https://beta-docs.internetcomputer.org/guides/frontends/certification.md): Verify that frontend responses are authentic and untampered using IC certificates - [Frontend Frameworks](https://beta-docs.internetcomputer.org/guides/frontends/frameworks.md): Integrate React, Svelte, Vue, Unity, and other frameworks with ICP canisters ## Authentication - [Internet Identity](https://beta-docs.internetcomputer.org/guides/authentication/internet-identity.md): Integrate passkey-based authentication with Internet Identity - [Wallet Integration](https://beta-docs.internetcomputer.org/guides/authentication/wallet-integration.md): Connect ICRC signer-standard wallets like OISY, Plug, and NFID - [Verifiable Credentials](https://beta-docs.internetcomputer.org/guides/authentication/verifiable-credentials.md): Issue and verify credentials on ICP using Internet Identity and the VC specification ## Testing - [Testing Strategies](https://beta-docs.internetcomputer.org/guides/testing/strategies.md): Test canisters with unit tests, PocketIC integration tests, and benchmarking - [PocketIC](https://beta-docs.internetcomputer.org/guides/testing/pocket-ic.md): Run integration tests against a lightweight IC replica with PocketIC ## Canister Management - [Canister Lifecycle](https://beta-docs.internetcomputer.org/guides/canister-management/lifecycle.md): Create, install, upgrade, and delete canisters with icp-cli - [Canister Settings](https://beta-docs.internetcomputer.org/guides/canister-management/settings.md): Configure controllers, memory limits, freezing threshold, and compute allocation - [Canister Logs](https://beta-docs.internetcomputer.org/guides/canister-management/logs.md): Debug and monitor canisters using the logging API and query statistics - [Canister Optimization](https://beta-docs.internetcomputer.org/guides/canister-management/optimization.md): Reduce Wasm size and improve canister performance with ic-wasm, SIMD, and memory tuning - [Canister Snapshots](https://beta-docs.internetcomputer.org/guides/canister-management/snapshots.md): Create, restore, and manage canister snapshots for backup and recovery - [Reproducible Builds](https://beta-docs.internetcomputer.org/guides/canister-management/reproducible-builds.md): Verify that deployed canister Wasm matches the source code using deterministic builds - [Cycles Management](https://beta-docs.internetcomputer.org/guides/canister-management/cycles-management.md): Acquire cycles, manage canister budgets, and deploy to mainnet - [Subnet Selection](https://beta-docs.internetcomputer.org/guides/canister-management/subnet-selection.md): Choose the right subnet for your canister deployment based on requirements - [Large Wasm Modules](https://beta-docs.internetcomputer.org/guides/canister-management/large-wasm.md): Deploy canisters that exceed the 2MB Wasm limit using chunk store and compression ## Security - [Access Management](https://beta-docs.internetcomputer.org/guides/security/access-management.md): Control who can call your canister with guards, caller checks, and controller management - [Secure Upgrades](https://beta-docs.internetcomputer.org/guides/security/canister-upgrades.md): Upgrade canisters safely with pre/post hooks, stable memory, and snapshot rollbacks - [Data Integrity](https://beta-docs.internetcomputer.org/guides/security/data-integrity.md): Protect data with VetKeys encryption, certified variables, and signature verification - [DoS Prevention](https://beta-docs.internetcomputer.org/guides/security/dos-prevention.md): Protect canisters from denial-of-service attacks with rate limiting and resource management - [Inter-Canister Call Safety](https://beta-docs.internetcomputer.org/guides/security/inter-canister-calls.md): Handle reentrancy, callback traps, and async safety in inter-canister calls - [Encryption with VetKeys](https://beta-docs.internetcomputer.org/guides/security/encryption.md): Encrypt and decrypt data on ICP using VetKeys for onchain privacy, key management, and identity-based encryption ## Chain Fusion - [Bitcoin Integration](https://beta-docs.internetcomputer.org/guides/chain-fusion/bitcoin.md): Send and receive BTC directly from ICP canisters using chain-key signatures - [Ethereum Integration](https://beta-docs.internetcomputer.org/guides/chain-fusion/ethereum.md): Interact with Ethereum and EVM chains from ICP canisters via the EVM RPC canister - [Solana Integration](https://beta-docs.internetcomputer.org/guides/chain-fusion/solana.md): Interact with Solana from ICP canisters using the Sol RPC canister - [Dogecoin Integration](https://beta-docs.internetcomputer.org/guides/chain-fusion/dogecoin.md): Send and receive DOGE from ICP canisters ## DeFi - [Token Ledgers](https://beta-docs.internetcomputer.org/guides/defi/token-ledgers.md): Transfer ICP and ICRC-1/ICRC-2 tokens from canisters and frontends - [Chain-Key Tokens](https://beta-docs.internetcomputer.org/guides/defi/chain-key-tokens.md): Work with ckBTC, ckETH, and other chain-key token representations - [Rosetta API](https://beta-docs.internetcomputer.org/guides/defi/rosetta.md): Integrate with exchanges and block explorers using the Rosetta API ## Governance - [Launching an SNS](https://beta-docs.internetcomputer.org/guides/governance/launching.md): Decentralize your dapp with an SNS: token economics, governance setup, and NNS proposal - [Managing an SNS](https://beta-docs.internetcomputer.org/guides/governance/managing.md): Operate a live SNS: proposals, cycles, asset updates, and neuron management - [Testing SNS Governance](https://beta-docs.internetcomputer.org/guides/governance/testing.md): Test your SNS locally with PocketIC and on mainnet with testflight ## Tools - [Agentic Development](https://beta-docs.internetcomputer.org/guides/tools/agentic-development.md): Use AI agents with icskills to build ICP applications faster - [Developer Tools](https://beta-docs.internetcomputer.org/guides/tools/overview.md): Overview of the ICP developer toolchain: icp-cli, CDKs, icp.ninja, and more - [Migrating from dfx](https://beta-docs.internetcomputer.org/guides/tools/migrating-from-dfx.md): Migrate your project from dfx to icp-cli with command mappings and config conversion ## Guides - [Guides](https://beta-docs.internetcomputer.org/guides/index.md): Task-oriented how-to guides for building, shipping, and scaling ICP applications ## Concepts - [Network Overview](https://beta-docs.internetcomputer.org/concepts/network-overview.md): How the Internet Computer works: subnets, nodes, consensus, and boundary nodes - [Application Architecture](https://beta-docs.internetcomputer.org/concepts/app-architecture.md): How ICP applications are structured: canisters, frontends, and inter-canister communication - [Canisters](https://beta-docs.internetcomputer.org/concepts/canisters.md): Smart contracts that run WebAssembly, hold state, serve HTTP, and pay for their own compute - [Reverse Gas Model](https://beta-docs.internetcomputer.org/concepts/reverse-gas-model.md): Why users never pay gas on ICP: canisters pay cycles for compute, storage, and bandwidth - [Orthogonal Persistence](https://beta-docs.internetcomputer.org/concepts/orthogonal-persistence.md): How canister memory survives across executions and upgrades without databases - [HTTPS Outcalls](https://beta-docs.internetcomputer.org/concepts/https-outcalls.md): How canisters make HTTP requests to external services with consensus on responses - [Onchain Randomness](https://beta-docs.internetcomputer.org/concepts/onchain-randomness.md): How ICP generates unpredictable random numbers using threshold VRF - [Timers](https://beta-docs.internetcomputer.org/concepts/timers.md): How the IC schedules periodic and one-shot tasks via the global timer mechanism - [Chain-Key Cryptography](https://beta-docs.internetcomputer.org/concepts/chain-key-cryptography.md): Threshold signatures that enable cross-chain integration, fast finality, and chain evolution - [Chain Fusion](https://beta-docs.internetcomputer.org/concepts/chain-fusion.md): How ICP connects to Bitcoin, Ethereum, Solana, and other blockchains natively - [VetKeys](https://beta-docs.internetcomputer.org/concepts/vetkeys.md): Verifiable encrypted threshold key derivation for onchain encryption and secret management - [Security Model](https://beta-docs.internetcomputer.org/concepts/security.md): The IC security model: canister isolation, trust boundaries, and the threat model for dapp developers - [Governance](https://beta-docs.internetcomputer.org/concepts/governance.md): How ICP is governed: the NNS, SNS for dapp governance, neurons, and proposals - [Concepts](https://beta-docs.internetcomputer.org/concepts/index.md): Developer-focused explanations of ICP architecture, capabilities, and design decisions ## Motoko - [Motoko](https://beta-docs.internetcomputer.org/languages/motoko/index.md): A language designed for the Internet Computer with built-in actor model and orthogonal persistence ## Rust - [Rust CDK](https://beta-docs.internetcomputer.org/languages/rust/index.md): Build ICP canisters with Rust using the ic-cdk canister development kit - [Stable Structures](https://beta-docs.internetcomputer.org/languages/rust/stable-structures.md): Use StableBTreeMap, StableVec, and MemoryManager for upgrade-safe Rust data - [Testing Rust Canisters](https://beta-docs.internetcomputer.org/languages/rust/testing.md): Unit and integration testing patterns for Rust canisters with PocketIC ## Languages - [Overview](https://beta-docs.internetcomputer.org/languages/index.md): Languages and CDKs for building ICP canisters ## Reference - [Management Canister](https://beta-docs.internetcomputer.org/reference/management-canister.md): API reference for the IC management canister (aaaaa-aa): canister lifecycle, signing, randomness, and more - [System Canisters](https://beta-docs.internetcomputer.org/reference/system-canisters.md): NNS canisters, Internet Identity, ICP ledger, and other system-level canisters with IDs - [Protocol Canisters](https://beta-docs.internetcomputer.org/reference/protocol-canisters.md): Bitcoin canister, EVM RPC canister, exchange rate canister, and other protocol-level canisters - [Application Canisters](https://beta-docs.internetcomputer.org/reference/application-canisters.md): Asset canister, SNS canisters, and other notable application-layer canisters - [Token Standards](https://beta-docs.internetcomputer.org/reference/token-standards.md): ICRC-1 fungible tokens, ICRC-2 approval, ICRC-3 transaction log, and ICRC-7 NFTs - [Cycles Costs](https://beta-docs.internetcomputer.org/reference/cycles-costs.md): Exact cycle costs for compute, storage, HTTPS outcalls, signing, and canister operations - [Subnet Types Reference](https://beta-docs.internetcomputer.org/reference/subnet-types.md): All subnet types with node counts, replication factors, and cycle cost multipliers - [Execution Errors](https://beta-docs.internetcomputer.org/reference/execution-errors.md): Common canister execution errors with explanations and fixes - [IC Interface Specification](https://beta-docs.internetcomputer.org/reference/ic-interface-spec.md): Summary and links to the IC interface specification: System API, HTTP interface, certified data - [HTTP Gateway Specification](https://beta-docs.internetcomputer.org/reference/http-gateway-spec.md): How boundary nodes serve canister HTTP responses with certification verification - [Candid Specification](https://beta-docs.internetcomputer.org/reference/candid-spec.md): The Candid interface description language: type system, encoding, and subtyping rules - [Internet Identity Specification](https://beta-docs.internetcomputer.org/reference/internet-identity-spec.md): Internet Identity protocol: delegation chains, passkey management, and canister signatures - [Glossary](https://beta-docs.internetcomputer.org/reference/glossary.md): Definitions of ICP-specific terms: canister, cycle, principal, subnet, and more - [Reference](https://beta-docs.internetcomputer.org/reference/index.md): Specifications, canister IDs, token standards, cycle costs, and technical reference for ICP