Open-source Modelling tool with Graphical Diagram Editor using Cyclic Entity-based Modeling and Metamodelling capabilities.
- Frontend Framework: Next.js 13 (Page Router)
- Language: TypeScript 5+
- Diagram Library: GoJS 3.0
- State Management: Redux Toolkit
- Rendering: React 18 (Server Components)
- Build System: Turborepo
- Styling: Tailwind CSS + CSS Modules + Shadcn
- Basic Knowledge graph
- Object/node Relationship/edge arrays based on types defined in Metamodel with Objecttype and Relationshiptypes.
- π GoJS-Powered Node Editor
- Objectview and Relationship in Modelviews(diagrams) for presentation of views.
- Advanced Relationship/link routing and automatic layout.
- Objectviewstyles to define visualisation of objects and relationships.
- Next.js Optimized Rendering
- Redux State Syncing
- Real-time collaboration through state synchronization
- Time-travel debugging capabilities
- Type-Safe Development
- Strict TypeScript configuration
- Generated API types from OpenAPI spe
- Customizable templates & components
- Web based Cross-platform support (Windows/Linux/macOS)
- **Clone repository
# Clone the repository
git clone https://github.com/Mimris/mimris-modelling-app.git
cd mimris-modelling-app
```bash
- **Install dependencies
```bash
# Install with npm
npm install
- **Launch development mode
# Start the development server
npm run dev
- Node.js v18+
- npm v9+
- Next.js v13+
- GoJS v2.2+
See INSTALLATION.md for detailed instructions.
- Drag Objecttypes from the Palette in to the modelling area
- Connect nodes using relationships. Click on the obects edge and drag to another object to create a relationship
- Arrange the objects in the modelling area by dragging them to the desired position and arrange them in Containers.
- Click on the Hamburger menu in the top left corner to open the menu to Save, Export or Import a model.
/public - Static files
/docs - Documentation files
/src
/components - React components
/utils - Utility functions
/hooks - Custom hooks
/styles - CSS styles
/akmm - akmm modules
/pages - Next.js pages
/api - API routes
/helpblogs - Help blogs
/posts - Blog posts
/reducers - Redux reducers
/store - Redux store
/saga - Redux saga
/defs - ?
/modelProjects - Model projects
npm test (no tests implemented yet)
initialState = {
phData, // Metamodel and Model data
phFocus, // Current focus data. i.e. focusModel, focusModelview, focusObjectvieiw etx.
phUser, // User preferences
phSource, // Sourcefile (local or github)
lastUpdate: new Date().toISOString()
}
// lib/gojsConfig.ts
import * as go from 'gojs';
export function initializeDiagram(): go.Diagram {
const $ = go.GraphObject.make;
return $(go.Diagram, {
'undoManager.isEnabled': true,
layout: $(go.ForceDirectedLayout),
model: $(go.GraphLinksModel, {
linkKeyProperty: 'key'
})
});
}
// Custom node template
export const nodeTemplate = (
<Node
locationSpot={go.Spot.Center}
selectionAdorned={true}
>
<Shape
figure="Rectangle"
fill="#2F80ED"
strokeWidth={0}
/>
<TextBlock
text="{name}"
margin={8}
stroke="white"
/>
</Node>
);
We welcome contributions to the Mimris Modelling App! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated. We welcome contributions under these guidelines:
- Fork the repository
- Create a feature branch
- Submit a pull request
Review our CONTRIBUTING GUIDE before submitting code.
Priority Areas:
- π Bug fixes
- π Documentation improvements
- π Security enhancements
- π§© Migrate from Redux to Redux Toolkit
- π§© Migrate from Bootstrap CSS to TailwindCSS and Shadch
- π§© Enhance GoJS Dialogs and Menus (Shadcn?)
- π§© Add more examples and documentation
- π§© Add tests
- π§© Add more components
- π§© Add more features
- π§© Add more templates
- π§© Add more themes
- π§© Add more Metamodels
- π§© Add more modelling tools
- π§© Add more modelling languages
- π§© Add more modelling paradigms/metamodels
- π§© Add more modelling techniques
- π§© Add more modelling methods
- π§© Add more modelling frameworks
- π§© Add more modelling standards
This project is licensed under the GNU General Public License v3.0 - see LICENSE file for details.
Key License Requirements:
- All derivative works must remain open-source
- Modifications must be clearly marked
- Source code must be distributed with any binaries
Maintained by [Mimris]
β’ π§ contact@example.com
β’ Live Demo