Get started with Console and website development—much simpler than node/provider setup!
This guide covers setting up development environments for:
- Akash Console - Web UI (React/Next.js)
- Akash Website - Documentation site (Astro)
Perfect for first-time contributors! These projects are easier to set up than node/provider development.
Prerequisites
Required Software
- Node.js - 22.14.0 or later (download)
- npm - Comes with Node.js (or use pnpm/yarn)
- Git - Version control
- Code Editor - VS Code recommended
Verify Installation
node --version # Should be v22.14.0 or highernpm --version # Should be 10.x or highergit --versionConsole Development Setup
Repository: github.com/akash-network/console
Tech Stack: React, Next.js, TypeScript, TailwindCSS
Step 1: Fork and Clone
# 1. Fork the repository on GitHub (click "Fork" button)
# 2. Clone your forkgit clone https://github.com/YOUR-USERNAME/console.gitcd console
# 3. Add upstream remotegit remote add upstream https://github.com/akash-network/console.git
# 4. Verify remotesgit remote -vStep 2: Install Dependencies
# Install all packagesnpm install
# Or use pnpm (faster alternative)npm install -g pnpmpnpm installStep 3: Set Up Environment
# Copy example environment filecp .env.example .env.local
# Edit .env.local with your configurationvim .env.local # or code .env.localTypical .env.local contents:
# API ConfigurationNEXT_PUBLIC_API_BASE_URL=https://console-api.akash.network
# Network ConfigurationNEXT_PUBLIC_MAINNET_RPC=https://rpc.akashnet.net:443NEXT_PUBLIC_TESTNET_RPC=https://rpc.sandbox-2.aksh.pw:443
# Feature Flags (optional)NEXT_PUBLIC_ENABLE_BETA_FEATURES=falseStep 4: Run Development Server
npm run devExpected output:
> [email protected] dev> next dev
- ready started server on 0.0.0.0:3000- Local: http://localhost:3000- Network: http://192.168.x.x:3000Open browser: Visit http://localhost:3000 to see the Console.
Step 5: Verify Setup
# Run testsnpm test
# Run linternpm run lint
# Auto-fix linting issuesnpm run lint:fix
# Type checknpm run type-check
# Build production versionnpm run buildAll checks should pass before submitting a PR.
Console Project Structure
console/├── src/│ ├── app/ # Next.js app router pages│ ├── components/ # React components│ ├── hooks/ # Custom React hooks│ ├── lib/ # Utility libraries│ ├── services/ # API services│ ├── stores/ # State management│ ├── types/ # TypeScript types│ └── styles/ # Global styles├── public/ # Static assets├── .env.example # Environment variables template└── package.jsonConsole Development Workflow
1. Create a Feature Branch
git checkout -b feature/add-deployment-filter2. Make Your Changes
Edit files in src/:
export const DeploymentCard: React.FC<Props> = ({ deployment }) => { return ( <div className="rounded-lg border p-4"> <h3>{deployment.dseq}</h3> <p>Status: {deployment.state}</p> </div> )}3. Test Your Changes
# Development server (hot reload)npm run dev
# Run testsnpm test
# Check typesnpm run type-check
# Lint codenpm run lint4. Build and Verify
# Build productionnpm run build
# Test production build locallynpm run start5. Commit and Push
git add .git commit -s -m "feat: add deployment filter component"git push origin feature/add-deployment-filter6. Open Pull Request
Go to GitHub and create a PR from your fork to akash-network/console.
Console Common Tasks
Update dependencies:
npm updatenpm audit fixClear cache and reinstall:
rm -rf node_modules .nextnpm installRun specific test:
npm test -- DeploymentCard.test.tsxFormat code:
npm run formatWebsite Development Setup
Repository: github.com/akash-network/website
Tech Stack: Astro, React, TypeScript, TailwindCSS, MDX
Step 1: Fork and Clone
# 1. Fork the repository on GitHub
# 2. Clone your forkgit clone https://github.com/YOUR-USERNAME/website.gitcd website
# 3. Add upstream remotegit remote add upstream https://github.com/akash-network/website.git
# 4. Verify remotesgit remote -vStep 2: Install Dependencies
npm installStep 3: Run Development Server
npm run devExpected output:
astro v4.x.x started in Xms
┃ Local http://localhost:4321/ ┃ Network use --host to expose
┃ watching for file changes...Open browser: Visit http://localhost:4321 to preview the docs.
Step 4: Verify Setup
# Build sitenpm run build
# Preview production buildnpm run preview
# Run Astro checksnpm run astro -- check
# Format codenpm run formatWebsite Project Structure
website/├── src/│ ├── content/│ │ └── Docs/ # All documentation (Markdown/MDX)│ │ ├── getting-started/│ │ ├── for-developers/│ │ ├── for-providers/│ │ └── learn/│ ├── components/ # React/Astro components│ ├── layouts/ # Page layouts│ ├── pages/ # Route pages│ └── styles/ # Global styles├── public/ # Static assets (images, fonts)└── astro.config.mjs # Astro configurationWebsite Development Workflow
1. Create a Feature Branch
git checkout -b docs/improve-cli-guide2. Make Your Changes
Edit documentation:
# Documentation is in src/content/Docs/vim src/content/Docs/for-developers/deployment/cli/index.mdExample edit:
---categories: ["Developers", "Deployment"]tags: ["CLI", "Command Line"]weight: 1title: "Akash CLI Guide"linkTitle: "CLI"description: "Deploy using the Akash command-line interface"---
# Akash CLI Guide
Deploy applications on Akash using the command-line interface...
## Installation
```bash# Install provider-services CLIcurl -sSfL https://raw.githubusercontent.com/akash-network/provider/main/install.sh | shYour First Deployment
- Create SDL file…
#### 3. Preview Your Changes
```bash# Development server with hot reloadnpm run dev
# Visit http://localhost:4321 and navigate to your page4. Build and Verify
# Build production sitenpm run build
# Check for errorsnpm run astro -- check
# Preview production buildnpm run preview5. Commit and Push
git add .git commit -s -m "docs: improve CLI installation instructions"git push origin docs/improve-cli-guide6. Open Pull Request
Create a PR from your fork to akash-network/website.
Website Common Tasks
Add new documentation page:
- Create new
.mdor.mdxfile insrc/content/Docs/ - Add frontmatter
- Write content
- Preview with
npm run dev
Update navigation:
Navigation is auto-generated from:
- Folder structure in
src/content/Docs/ weightin frontmatter (lower = higher in sidebar)categoriesin frontmatter (for breadcrumbs)
Add images:
<!-- Place images in public/images/ -->Test links:
# Build and check for broken linksnpm run build
# Any broken links will show errors during buildFormat all files:
npm run formatEditor Setup
VS Code (Recommended)
Install extensions:
code --install-extension astro-build.astro-vscodecode --install-extension dbaeumer.vscode-eslintcode --install-extension esbenp.prettier-vscodecode --install-extension bradlc.vscode-tailwindcssWorkspace settings (.vscode/settings.json):
{ "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, "[astro]": { "editor.defaultFormatter": "astro-build.astro-vscode" }, "[markdown]": { "editor.wordWrap": "on" }}Troubleshooting
Console Issues
Port 3000 already in use:
# Kill process on port 3000lsof -i :3000kill -9 <PID>
# Or use different portnpm run dev -- -p 3001Module not found errors:
# Clear cache and reinstallrm -rf node_modules .nextnpm installEnvironment variables not loading:
# Ensure .env.local existsls -la .env.local
# Verify environment variables start with NEXT_PUBLIC_grep NEXT_PUBLIC_ .env.localBuild fails:
# Check for TypeScript errorsnpm run type-check
# Check for linting errorsnpm run lint
# Clear Next.js cacherm -rf .nextnpm run buildWebsite Issues
Port 4321 already in use:
# Kill process on port 4321lsof -i :4321kill -9 <PID>Build fails:
# Check Astro configurationnpm run astro -- check
# Clear cacherm -rf .astro distnpm run buildImages not showing:
# Ensure images are in public/ directoryls -la public/images/
# Use absolute paths in markdown# **# **MDX parsing errors:
# Check frontmatter format# Ensure YAML is valid# Check for unclosed code blocksCommon Development Commands
Console
| Command | Purpose |
|---|---|
npm run dev | Start development server |
npm test | Run tests |
npm run lint | Check code quality |
npm run lint:fix | Auto-fix linting issues |
npm run type-check | Check TypeScript types |
npm run build | Build production bundle |
npm run start | Serve production build |
npm run format | Format code with Prettier |
Website
| Command | Purpose |
|---|---|
npm run dev | Start development server |
npm run build | Build production site |
npm run preview | Preview production build |
npm run astro -- check | Check for errors |
npm run format | Format code with Prettier |
Keep Your Fork Updated
Sync with Upstream
# Fetch upstream changesgit fetch upstream
# Switch to main branchgit checkout main
# Merge upstream changesgit merge upstream/main
# Push to your forkgit push origin mainUpdate Your Feature Branch
# Switch to your feature branchgit checkout feature/your-feature
# Rebase on latest maingit rebase main
# If conflicts, resolve them and continuegit add .git rebase --continue
# Force push to update PRgit push --force-with-lease origin feature/your-featureBest Practices
For Console Development
- Test in multiple browsers - Chrome, Firefox, Safari
- Check mobile responsiveness - Use browser dev tools
- Follow accessibility guidelines - Use semantic HTML, ARIA labels
- Keep components small - Single responsibility principle
- Write tests - For new components and functions
- Use TypeScript - Don’t use
anytype
For Documentation
- Test all commands - Every command must work
- Add code examples - Show, don’t just tell
- Use proper formatting - Code blocks, headings, lists
- Keep it concise - Remove unnecessary words
- Link related content - Help users navigate
- Check spelling - Use a spell checker
Getting Help
Console Help
- Discord: discord.akash.network - #developers channel
- GitHub Issues: console/issues
- Documentation: Check the Console README
Website Help
- Discord: discord.akash.network - #developers channel
- GitHub Issues: website/issues
- Astro Docs: docs.astro.build
Next Steps
Ready to contribute?
- Getting Started Guide - Make your first contribution
- Code Conventions - Learn coding standards
- Documentation Guide - Write great docs
- Pull Request Process - Submit your changes
Questions? Ask in Discord #developers!