Development ​
Want to contribute or run locally? Here's how.
What you need ​
- Node.js 18+
- Docker & Docker Compose
- Git
Setup ​
bash
git clone https://github.com/Ketbome/minepanel.git
cd minepanelProject structure ​
minepanel/
├── backend/ # NestJS API
│ ├── src/
│ │ ├── auth/
│ │ ├── server-management/
│ │ ├── discord/
│ │ ├── system-monitoring/
│ │ ├── docker-compose/
│ │ ├── settings/
│ │ └── users/
│ └── test/
├── frontend/ # Next.js UI
│ ├── src/
│ │ ├── app/
│ │ ├── components/
│ │ ├── lib/
│ │ └── services/
│ └── public/
└── doc/ # VitePress docsRun locally ​
Backend ​
bash
cd backend
npm install
npm run start:devRuns on http://localhost:8091
Frontend ​
bash
cd frontend
npm install
npm run devRuns on http://localhost:3000
Environment files ​
backend/.env:
bash
FRONTEND_URL= 'http://localhost:3000' # URL of the frontend application
# Generate a strong random secret: openssl rand -base64 32
JWT_SECRET= # Example: your-super-secret-jwt-key-change-this-in-production
CLIENT_PASSWORD= # Password for client
CLIENT_USERNAME= # Username for the client
DB_PATH=./data/minepanel.db
SERVERS_DIR=../serversfrontend/.env:
bash
NEXT_PUBLIC_BACKEND_URL='http://localhost:8091' # URL of the backend API, it's important start with http:// or https://
NEXT_PUBLIC_FILEBROWSER_URL='http://localhost:8080' # URL of the FileBrowser instance, it's important start with http:// or https://
NEXT_PUBLIC_DEFAULT_LANGUAGE=en # es or enTech stack ​
Backend ​
- NestJS
- TypeORM + SQLite (sql.js)
- Docker API
- Passport JWT
Frontend ​
- Next.js 14 (App Router)
- React
- TailwindCSS
- shadcn/ui
Build for production ​
bash
# Build image
docker build -t minepanel:local .
# Run it
docker compose up -dContributing ​
Check CONTRIBUTING.md
Quick version ​
- Fork the repo
- Create a branch:
git checkout -b feature/thing - Make changes
- Test:
npm test - Lint:
npm run lint - Push and open PR
Commit format ​
feat(server): add Purpur support
fix(ui): button alignment
docs: update install guideCode style ​
- Use TypeScript
- Follow ESLint rules
- Write meaningful variable names
- Keep functions small
- Add comments for complex logic
Testing ​
bash
# Backend
cd backend && npm test
# Frontend
cd frontend && npm testDocumentation ​
Docs are in doc/ using VitePress.
bash
cd doc
npm install
npm run docs:devRuns on http://localhost:5173
Common tasks ​
Add a new server type ​
- Add to
backend/src/docker-compose/docker-compose.service.ts - Add to frontend dropdown
- Test it
Add a translation ​
- Create
frontend/src/lib/translations/[lang].ts - Copy from
en.tsand translate - Register in
index.ts - Test it
Debug ​
Backend:
bash
npm run start:debugFrontend:
bash
# Check browser console
# Check Network tabLogs:
bash
docker compose logs -f minepanelTroubleshooting ​
Port already in use ​
Change ports in .env or docker-compose
Docker permission errors ​
bash
sudo usermod -aG docker $USER
# Log out and back inNode modules issues ​
bash
rm -rf node_modules package-lock.json
npm installRelease process ​
- Update version in
package.json - Update CHANGELOG
- Create git tag
- Push to main
- GitHub Actions builds and pushes to Docker Hub
