Local Development
This guide covers how to set up and run the TFT Minting Transition Plan site locally for development and testing.
Prerequisites
Required Software
- Node.js: Version 18.0 or higher
- npm: Comes with Node.js
- Git: For version control
Check Your Versions
node --version # Should be v18.0.0 or higher
npm --version # Should be 8.0.0 or higher
git --version # Any recent version
Installing Node.js
If you don't have Node.js 18+:
Linux (Ubuntu/Debian):
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
macOS:
brew install node@18
Using nvm (recommended):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 18
nvm use 18
Initial Setup
1. Clone the Repository
git clone https://github.com/mik-tf/minting_plan.git
cd minting_plan
2. Install Dependencies
npm install
This will install all required packages listed in package.json
, including:
- Docusaurus core
- React
- MDX support
- Theme packages
The first npm install
will take 1-2 minutes as it downloads all dependencies. Subsequent installs will be faster thanks to npm cache.
Development Server
Start the Dev Server
npm start
This command:
- Starts a local development server
- Opens your browser to
http://localhost:3000
- Enables hot reloading (changes appear immediately)
- Shows build errors in the terminal and browser
What You'll See
[INFO] Starting the development server...
[SUCCESS] Docusaurus website is running at: http://localhost:3000/
Edit any markdown file and save - your browser will automatically refresh with changes. No need to restart the server!
Stop the Server
Press Ctrl+C
in the terminal where the server is running.
Building for Production
Create Production Build
npm run build
This command:
- Creates optimized production files in
build/
directory - Minifies JavaScript and CSS
- Generates static HTML for all pages
- Checks for broken links
Preview Production Build
npm run serve
This serves the production build locally at http://localhost:3000
so you can test it before deployment.
Always run npm run build
before pushing to ensure there are no build errors. The production build is stricter than dev mode.
Common Development Tasks
Adding a New Page
-
Create a new
.md
file in the appropriate docs folder:touch docs/core-concepts/new-concept.md
-
Add frontmatter:
---
sidebar_position: 5
---
# New Concept Title
Your content here... -
The page appears automatically in the sidebar!
Editing Existing Content
- Navigate to the file (e.g.,
docs/intro.md
) - Make your changes
- Save the file
- Browser auto-refreshes with changes
Adding Images
-
Place images in
static/img/
:cp ~/my-image.png static/img/
-
Reference in markdown:

Project Structure
minting_plan/
├── docs/ # All documentation content
│ ├── intro.md # Homepage
│ ├── core-concepts/ # Core concept docs
│ ├── appendix/ # Meeting notes, etc.
│ └─ ─ ops/ # Operations guides
├── static/ # Static assets
│ ├── img/ # Images
│ └── CNAME # Custom domain file
├── src/ # Custom React components
│ ├── css/ # Custom styles
│ └── pages/ # Custom pages (optional)
├── docusaurus.config.js # Site configuration
├── sidebars.js # Sidebar structure
├── package.json # Dependencies
└── .github/workflows/ # GitHub Actions
└── deploy.yml # Auto-deployment
Useful Commands
Clear Cache
If you see weird behavior, clear the cache:
npm run clear
Check for Build Issues
npm run build
Look for:
- ✅ Success: Build completed
- ❌ Errors: Broken links, invalid markdown, missing files
Format Code (if using Prettier)
npx prettier --write "docs/**/*.md"
Development Workflow
Typical Workflow
-
Pull latest changes
git pull origin main
-
Start dev server
npm start
-
Make changes
- Edit markdown files in
docs/
- See changes instantly in browser
- Edit markdown files in
-
Test production build
npm run build
-
Commit and push
git add .
git commit -m "Description of changes"
git push origin main -
Auto-deployment
- GitHub Actions builds and deploys automatically
- Check Actions tab for status
- Site updates at plan.threefold.pro in ~3 minutes
Troubleshooting
Port 3000 Already in Use
Error: Something is already running on port 3000
Solution:
# Find and kill the process
lsof -i :3000
kill -9 <PID>
# Or use a different port
npm start -- --port 3001
Module Not Found Errors
Error: Cannot find module '@docusaurus/...'
Solution:
# Delete node_modules and reinstall
rm -rf node_modules package-lock.json
npm install
Build Fails Locally
Error: Build fails with various errors
Solution:
# Clear cache and rebuild
npm run clear
npm run build
Changes Not Appearing
Problem: Saved changes don't show in browser
Solution:
- Check the terminal for build errors
- Hard refresh browser:
Ctrl+Shift+R
(Linux/Win) orCmd+Shift+R
(Mac) - Restart dev server:
Ctrl+C
, thennpm start
Node Version Issues
Error: The engine "node" is incompatible with this module
Solution:
# Check your version
node --version
# Install correct version using nvm
nvm install 18
nvm use 18
Best Practices
Before Committing
✅ Do:
- Test build locally:
npm run build
- Check for broken links in build output
- Preview with
npm run serve
- Write clear commit messages
❌ Don't:
- Commit
node_modules/
(it's in .gitignore) - Commit
build/
directory (it's generated) - Push without testing build
- Use absolute URLs for internal links
Writing Documentation
✅ Good practices:
- Use relative links:
[link](./other-page.md)
- Add alt text to images:

- Use frontmatter for sidebar position
- Keep markdown files in appropriate folders
❌ Avoid:
- Absolute URLs for internal pages
- Missing alt text on images
- Inconsistent heading levels
- Very long lines (wrap at ~100 chars)
IDE Setup
VS Code (Recommended)
Install these extensions for better experience:
- Markdown All in One: Markdown preview and shortcuts
- Prettier: Code formatting
- ESLint: JavaScript linting
Settings
Add to .vscode/settings.json
:
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[markdown]": {
"editor.wordWrap": "on"
}
}
Next Steps
- Deployment - Deploy to plan.threefold.pro
- Content Updates - Learn content management workflows