A flexible graph-based modeling tool that supports multiple configurable metamodels for enterprise architecture (ArchiMate), project management, data integrations, and custom domains.
- Configurable Metamodels: Define your own node types, relationship types, and validation rules
- Visual Graph Editor: Interactive Streamlit UI for creating and managing graphs
- ArchiMate Support: Built-in ArchiMate Basic metamodel for enterprise architecture
- Flexible Storage: JSON-based storage with pluggable backend architecture
- Interactive Visualization: PyVis-powered graph visualization with metamodel-based styling
pip install -r requirements.txtpip install streamlit pyvis networkx python-dateutilRun the Streamlit app:
streamlit run src/ui/app.pyThe app will open in your browser at http://localhost:8501
- First Run: The app comes with the ArchiMate Basic metamodel pre-installed
- Create a Graph: Go to "Graph Editor" and create a new graph using the ArchiMate Basic metamodel
- Add Nodes: Use the "Add Node" tab to add elements like BusinessActor, ApplicationComponent, etc.
- Add Relationships: Use the "Add Relationship" tab to connect nodes with relationships like Serving, Assignment, etc.
- Visualize: View your graph in the "Visualization" tab with interactive pan/zoom
src/domain/- Core domain models (Node, Edge, Graph, Metamodel)src/metamodels/- Metamodel schemas and validationsrc/application/- Business logic servicessrc/infrastructure/- Storage implementationssrc/visualization/- Graph renderingsrc/ui/- Streamlit user interfacedata/- Graph and metamodel storage
ModelKG follows clean architecture principles with clear separation between domain logic, application services, and infrastructure:
- Repository Pattern: Pluggable storage backends (JSON, SQLite, Neo4j)
- Domain-Driven Design: Graph as aggregate root
- Service Layer: Business logic orchestration
- Dependency Injection: Loose coupling between layers
MIT