1337 Turbo Starter is a modern full-stack Web3 monorepo powered by Turborepo, integrating the official Aptos DApp boilerplate plus an IOTA wallet experience derived from iotaledger/iota/apps/wallet-dashboard.
It runs:
- ⚡️ Bun 1.3.2 for ultra-fast scripts and package management
- 🌀 Next.js 16.0.3 + React 19.2.0 for production-ready apps
- 🎨 Tailwind CSS 4.1 + shadcn/ui for polished UIs
- 🔗 Aptos, Move, and the IOTA wallet dashboard stack
- 🧱 Shared configs & UI across apps
- 🦪 Developer-first tooling and monorepo structure
- Bun 1.3.2 – Ultra-fast JS runtime & package manager
- Turborepo 2.6.1 – High-performance monorepo build system
- Next.js 16.0.3 / React 19.2.0 – Cache Components-ready app router stack
- Tailwind CSS 4.1 + shadcn/ui – Utility-first styling plus component primitives
- Aptos + Move – Layer 1 blockchain & smart contract language
- IOTA Wallet Dashboard – Ported dashboard experience with custom
@repo/iota-core
.
├── apps/
│ ├── aptos-boilerplate/ # Aptos DApp implementation
│ ├── landing-page/ # Landing page application
│ └── iota-wallet-dashboard/ # Next.js wallet dashboard (Cache Components)
├── packages/
│ ├── aptos-contract/ # Move smart contracts & scripts
│ ├── eslint-config/ # Shared ESLint rules
│ ├── iota-core/ # Custom IOTA core exports (see below)
│ ├── typescript-config/ # Shared TypeScript settings
│ └── ui/ # Shared UI components
└── .vscode/ # VS Code configuration📦 Shared packages ensure consistent styling, types, and components across all applications.
About
packages/iota-core: The published@iota/corepackage does not expose several components, hooks, and utilities used by the wallet dashboard (which is based on iotaledger/iota/apps/wallet-dashboard). To bridge that gap,packages/iota-coreis copied from iotaledger/iota/apps/core and kept in-repo until the upstream package exports everything we need.
| Path | Type | Purpose | Key Versions |
|---|---|---|---|
apps/aptos-boilerplate |
App | Official Aptos DApp boilerplate | Next.js 16.0.3, React 19.2.0 |
apps/landing-page |
App | Marketing/marketing site | Next.js 16.0.3, React 19.2.0 |
apps/iota-wallet-dashboard |
App | Wallet dashboard w/ Cache Components | Next.js 16.0.3, React 19.2.0 |
packages/aptos-contract |
Package | Move contracts + scripts | Move CLI (bun scripts) |
packages/iota-core |
Package | Local copy of IOTA core exports | React 18.3 (per upstream) |
packages/ui |
Package | Shared UI primitives/component wrappers | Tailwind 4.1 |
packages/eslint-config |
Package | Flat ESLint shareable config | ESLint 9 |
packages/typescript-config |
Package | Base tsconfig presets |
TypeScript 5.9 |
git clone [email protected]:servrox/1337-turbo-starter.git
cd 1337-turbo-starter
bun installFor the Aptos DApp (apps/aptos-boilerplate/.env):
# Get your API key from https://build.aptoslabs.com
NEXT_PUBLIC_APTOS_API_KEY=your_api_key_hereFor the Move contract (packages/aptos-contract/.env):
NEXT_MODULE_PUBLISHER_ACCOUNT_PRIVATE_KEY=your_private_key_here
NEXT_PUBLIC_MODULE_ADDRESS=your_module_address_here📜 NEXT_MODULE_PUBLISHER_ACCOUNT_ADDRESS will be set automatically when you run:
bun run move:publishbun run devNeed a single app?
- Wallet dashboard:
bun run dev:iota-wallet-dashboard(alias:bun run dev:wallet_dashboard) - Aptos dApp:
bun run dev:aptos-boilerplate - Landing page:
bun run dev:landing-page
| Script | Description |
|---|---|
bun run build |
Build all apps and packages |
bun run build:aptos-boilerplate |
Build only the Aptos boilerplate app |
bun run build:landing-page |
Build only the landing page |
bun run build:iota-wallet-dashboard |
Build only the wallet dashboard |
bun run dev |
Start all development servers |
bun run dev:aptos-boilerplate |
Start Aptos boilerplate development server |
bun run dev:landing-page |
Start landing page development server |
bun run dev:iota-wallet-dashboard |
Start wallet dashboard dev server |
bun run dev:wallet_dashboard |
Legacy alias for wallet dashboard dev server |
bun run lint |
Run ESLint (flat config) across the repo |
bun run lint:iota-wallet-dashboard |
Lint wallet dashboard only |
bun run lint -- --fix |
Auto-fix lint issues where possible |
bun run check-types |
Type-check all packages and apps |
bun run check-types:iota-wallet-dashboard |
Type-check wallet dashboard only |
bun run format |
Format codebase with Prettier |
- ⚡️ Fast Dev Workflow with Bun and Turborepo
- 🎨 4-way theme switcher select between banana, dark, light and system
- 📦 Shared UI Components via
@repo/ui - 🧠 Developer Experience: Prettier, ESLint (flat config), TypeScript, and VS Code settings out-of-the-box
- 💄 Tailwind v4: native Tailwind CSS v4 pipeline with PostCSS
- 📱 shadcn/ui monorepo using shadcn/ui components and CLI in a monorepo
- 🌐 create-aptos-dapp matched Aptos Move integration with the official AptosLabs boilerplate
| Location | Variable | Description |
|---|---|---|
apps/aptos-boilerplate/.env |
NEXT_PUBLIC_APP_NETWORK |
The network your module is deployed to |
apps/aptos-boilerplate/.env |
NEXT_PUBLIC_MODULE_ADDRESS |
Auto-filled by move:publish script |
apps/aptos-boilerplate/.env |
NEXT_PUBLIC_APTOS_API_KEY |
Your Aptos API key from Aptos Labs |
packages/aptos-contract/.env |
NEXT_PUBLIC_APP_NETWORK |
The network you want to deploy your module |
packages/aptos-contract/.env |
NEXT_MODULE_PUBLISHER_ACCOUNT_ADDRESS |
Account address used for module publishing |
packages/aptos-contract/.env |
NEXT_PUBLIC_MODULE_ADDRESS |
Auto-filled by move:publish script |
packages/aptos-contract/.env |
NEXT_MODULE_PUBLISHER_ACCOUNT_PRIVATE_KEY |
Private key used for module publishing |
💡 See the .env.example files in each package for more details.
💡 If you are using the Testnet network, you will need to fund a module publisher account manually through the faucet web view on https://aptos.dev/en/network/faucet and then fill out the NEXT_MODULE_PUBLISHER_ACCOUNT_PRIVATE_KEY and NEXT_MODULE_PUBLISHER_ACCOUNT_ADDRESS in your project .env file.
Always run bun run lint (optionally bun run lint -- --fix) and bun run check-types before opening a pull request. The repository relies on the shared flat config in packages/eslint-config; resolve errors instead of disabling rules so that future projects based on this starter inherit the best practices.