Thanks for your interest in contributing to ModularIoT! This guide covers how to set up your environment, the repository layout, and our development workflow.
By participating, you agree to abide by our Code of Conduct.
ModularIoT is a four-workspace monorepo:
| Workspace | Role | Stack |
|---|---|---|
quarkus-srv/ |
Integration — data ingestion, real-time monitoring, anomaly detection | Quarkus, Java 21, PostgreSQL |
ecm-srv/ |
Coordinator — workflows, document management, compliance | Alfresco ECM |
turbo-repo/ |
Frontend — dashboards, admin UI, documentation | Next.js, TypeScript, npm |
miot-harness/ |
AI harness — ASK MIOT agents, tools, approvals | Python, LangChain Deep Agents |
Install the toolchains for the workspace(s) you plan to work on:
- Node.js (LTS) and npm — for
turbo-repo/ - Java 21 and Maven (use the bundled
./mvnwwrapper) — forquarkus-srv/ - Docker — for
ecm-srv/and local services - uv (
brew install uv) — formiot-harness/
cd turbo-repo
npm install
npx turbo devUseful scripts (run from turbo-repo/):
npm run build # build all packages
npm run lint # lint all code
npm run test # run all tests
npm run format # format with Prettiercd quarkus-srv
./mvnw quarkus:dev -pl miot-clicd ecm-srv
# See the workspace README for setup details.cd miot-harness
uv sync
uv run miot-harness demo "Tell me the story of delivery compliance this month."Direct pushes to develop and based/develop are blocked by a Husky
pre-push hook. Always work on a feature branch and open a pull request:
git checkout -b feat/short-descriptionWe follow Conventional Commits:
type(scope): subject. Common types: feat, fix, docs, refactor,
test, chore, ci. Examples:
feat(app): add fleet status widget
fix(bff): handle empty connection list
docs(dashboard): clarify alert thresholds
ci: paginate preview comment lookup
- Run the relevant lint and test suites (e.g.
npm run lintandnpm run testinturbo-repo/). - Update documentation when behavior or APIs change.
- Fill out the pull request template, linking any related issues
(e.g.
Closes #123). - Request review and address feedback.
- Bugs and feature requests: open an issue using one of our issue templates.
- Questions and ideas: use GitHub Discussions.
- Security vulnerabilities: do not open a public issue — follow our Security Policy.
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.