OIBus Developer Handbook
Welcome to the OIBus developer community! This guide will help you get started with contributing to OIBus.
🚀 Getting Started
Prerequisites
Before you begin, ensure you have the following installed:
- Git
- Node.js (check
.nvmrcfor required version) - nvm (recommended for Node.js version management)
- SQLite browser or DBeaver (for database inspection)
- Your preferred IDE (VS Code, IntelliJ, etc.)
Recommended Tools
| Tool | Purpose | Installation |
|---|---|---|
| Node.js | JavaScript runtime | Download |
| nvm | Node version manager | Installation guide |
| DBeaver | Database management | Download |
| VS Code | Code editor | Download |
| Angular CLI | Frontend development | Installed via npm |
📥 Setting Up Your Development Environment
1. Get the Source Code
Choose one of these options:
Option A: For Contributors (Recommended)
# Fork the repository on GitHub first
git clone git@github.com:<your-username>/OIBus.git
cd OIBus
git remote add upstream git@github.com:OptimistikSAS/OIBus.git
Option B: For Evaluation Only
git clone git@github.com:OptimistikSAS/OIBus.git
cd OIBus
2. Install Dependencies
# Install Node.js version specified in .nvmrc
nvm install
nvm use
3. Set Up the Backend
cd backend
npm install
npm start # Starts on http://localhost:2223
4. Set Up the Frontend
cd frontend
npm install
npm start # Builds and watches for changes
Frontend Note
The frontend is served by the backend. While npm start watches for changes, you'll need to manually refresh your browser to see updates.
5. Set Up Documentation
cd documentation
npm install
npm start # Starts on http://localhost:3000
6. Verify Your Setup
- Backend: http://localhost:2223
- Documentation: http://localhost:3000
🛠 Development Workflow
Project Structure
OIBus/
├── backend/ # Backend server (Node.js)
├── frontend/ # Frontend application (Angular)
├── documentation/ # Project documentation (Docusaurus)
└── data-folder/ # Runtime data (created automatically)
Quick Test Setup
To verify everything works:
- Create a FolderScanner South connector (reads files from a directory)
- Create a Console North connector (outputs to console)
- Configure them to work together
🔧 Development Guidelines
Branch Naming
<type>/<descriptive-name>#<issue-number>
Examples:
feature/add-new-connector#1234fix/folder-scanner-bug#5678docs/update-readme#9101
Commit Messages
Follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]
Common types: feat, fix, docs, style, refactor, test, chore
Testing Requirements
All changes must include tests:
Run tests with:
# Backend tests
cd backend
npm test
# Frontend tests
cd frontend
npm test
# Linting
npm run lint
📤 Submitting Contributions
Before You Start
- Check existing issues for similar work
- Create a feature issue if adding new functionality
- Discuss your approach with maintainers before coding
Pull Request Process
- Create a branch from
mainwith proper naming - Make your changes and commit with clear messages
- Push to your fork
- Create a Pull Request to
OptimistikSAS/OIBus:main - Ensure all tests pass
- Wait for code review and address feedback
Pull Request Checklist
- Code follows project style guidelines
- All tests pass
- Documentation updated (if applicable)
- Changes are backward compatible
- New features include tests
🤝 Community Guidelines
How to Contribute
- Start small: Fix typos, improve docs, or tackle "good first issue" labels
- Ask questions: Use GitHub discussions or issues
- Be patient: We'll review your PR as soon as possible
- Stay engaged: Be responsive to feedback
Code of Conduct
We follow a Code of Conduct to ensure a welcoming community.
📚 Learning Resources
Technologies Used
| Area | Technology | Learning Resources |
|---|---|---|
| Backend | Node.js | Node.js Docs |
| Frontend | Angular | Angular Docs |
| Documentation | Docusaurus | Docusaurus Docs |
| Testing | Jest/Jasmine | Jest Docs, Jasmine Docs |
Recommended Reading
🎯 First Contributions
Looking for your first contribution? Check out:
Ready to contribute? We're excited to have you! 🎉