How julianoivan10/forma works
Forma is a testnet staking dapp centered on creating programmable ERC-721 staking positions, earning and routing rewards, and using a separate liquid-staking vault. The graph follows the documented user journey and the sampled frontend read/write boundaries. Contract internals and several pages were not sampled, so their documented capabilities are represented at the enclosing contracts path without asserting unsupported call wiring.
Main entry points: reads.ts Contract read hooks · write.ts Transaction writes · layout.tsx Next.js app · index.ts Forma SDK
Components 21
Forma web app
- Next.js app
apps/web/src/app/layout.tsx - Create position
apps/web/src/app/stake/page.tsx - Position overview
apps/web/src/app/page.tsx - Position detail
apps/web/src/app/positions/[id]/page.tsx - Rewards and earn
apps/web/src/app/earn/page.tsx - Activity history
apps/web/src/app/activity/page.tsx - Positions list
apps/web/src/app/positions/page.tsx - Settings and faucet
apps/web/src/app/settings/page.tsx - Liquid vault UI
apps/web/src/app/liquid/page.tsx
Staking protocol
- FormaStaking
packages/contracts - Position NFT and renderer
packages/contracts - FORGE token
packages/contracts
Liquid staking
- LiquidStakingVault
packages/contracts
SDK and network
- Contract read hooks
apps/web/src/lib/reads.ts - Transaction writes
apps/web/src/lib/write.ts - Contract configuration
apps/web/src/lib/forma.ts - Forma SDK
packages/sdk/src/index.ts - Chain and deployments
packages/config/src/index.ts
Other components
- Wallet user
- EVM network
- Browser wallet
Connections 42
- Wallet user → Next.js app: uses
- Next.js app → Create position: routes to
- Next.js app → Position overview: routes to
- Next.js app → Position detail: routes to
- Next.js app → Rewards and earn: routes to
- Next.js app → Activity history: routes to
- Next.js app → Positions list: routes to
- Next.js app → Settings and faucet: routes to
- Next.js app → Liquid vault UI: routes to
- Create position → Contract read hooks: previews
- Create position → Transaction writes: submits stake
- Position overview → Contract read hooks: loads positions
- Positions list → Contract read hooks: loads positions
- Position detail → Contract read hooks: loads position
- Position detail → Transaction writes: sends actions
- Rewards and earn → Contract read hooks: loads rewards
- Activity history → Contract read hooks: loads activity
- Settings and faucet → Contract read hooks: loads settings
- Settings and faucet → Transaction writes: requests faucet
- Liquid vault UI → Contract read hooks: previews vault
- Liquid vault UI → Transaction writes: sends vault actions
- Contract read hooks → Contract configuration: gets addresses
- Transaction writes → Contract configuration: gets addresses
- Contract configuration → Chain and deployments: loads deployments
- Contract read hooks → FormaStaking: reads state
- Contract read hooks → LiquidStakingVault: reads vault
- Contract read hooks → FORGE token: reads balances
- Transaction writes → FormaStaking: calls methods
- Transaction writes → LiquidStakingVault: calls methods
- Transaction writes → FORGE token: approves token
- FormaStaking → Position NFT and renderer: mints positions
- FormaStaking → EVM network: stores protocol state
- Position NFT and renderer → EVM network: stores token state
- LiquidStakingVault → EVM network: stores vault state
- FORGE token → EVM network: stores token state
- Browser wallet → Transaction writes: signs transactions
- Contract read hooks → EVM network: queries
- Transaction writes → EVM network: broadcasts transactions
- Forma SDK → Create position: formats and models
- Forma SDK → Position detail: formats and models
- Forma SDK → Rewards and earn: formats rewards
- Forma SDK → Liquid vault UI: parses amounts