7.5 KiB
sidebar_position
sidebar_position |
---|
2 |
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
:::info First Install
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/
:::tip Hot Reloading 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.
:::warning Test Before Push
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