https://github.com/msallin/project-management
https://github.com/msallin/project-management
Last synced: 6 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/msallin/project-management
- Owner: msallin
- License: mit
- Created: 2025-05-30T19:11:01.000Z (8 months ago)
- Default Branch: master
- Last Pushed: 2025-05-31T10:20:23.000Z (8 months ago)
- Last Synced: 2025-05-31T19:19:34.965Z (8 months ago)
- Language: C#
- Size: 56.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Project Management Toolkit
As a software architect, I often face the challenge of parallel projects that need alignment.
For this, I require multiple representations of the same tasks — each tailored to different stakeholders.
Since tasks inherently form a graph, I wanted a unified in-memory model that I can build programmatically or via Markdown.
Then, I needed to generate various artifacts from that model. Generation is done using a visitor pattern so that it remains extensible.
So that I can create specialized visitors later for specific stakeholder needs or contexts.
A .NET-based project-planning library and console application that lets you:
- **Model** tasks as a hybrid WBS + directed-acyclic graph (DAG) with dependencies, descriptions and tags in code
- **Import** your work-breakdown structure (WBS) from Markdown files
- **Export** to multiple formats (Markdown tables, PlantUML WBS & Gantt, GraphViz DOT, Mermaid, PlantUML dependency diagrams)
- **Analyze** critical paths
---
## Features
- **Flexible WBS import**
- Heading levels (`#` → root, `##` → children, …) become task hierarchy
- Hierarchical IDs auto-generated (`1`, `1.1`, `1.1.1`, …) or picked up from numeric prefixes
- Multiline task descriptions from paragraphs under headings
- **Inline markers**
- `@(X.Y…)` in text → dependency on task with ID `X.Y…` (e.g., `@(1.1.1)`))
- `#tagName` anywhere in text → adds a tag to the current task (e.g., `#critical`, `#feasibility`)
- `#color:blue` → sets task color on export (e.g., `#color:red` for critical tasks)
- **Unified in-memory model**
- `TaskNode` objects hold `Id`, `Name`, `Description`, `Tags`, `Children` (WBS), `Dependencies` (DAG)
- `ProjectGraph` manages tasks, parent-child hierarchy, dependency cycle-checks, topological sort
- **Visitor-based exporters**
- **`MarkdownTableVisitor`** → plain Markdown task table
- **`MindMapVisitor`** → `@startmindmap` tasks by tag Mindmap diagram
- **`PlantUmlWbsVisitor`** → `@startwbs`…`@endwbs` WBS diagram
- **`PlantUmlGanttVisitor`** → `@startgantt`… Gantt chart
- **`DotVisitor`** → GraphViz `.dot` directed graph
- **`MermaidVisitor`** → `graph TD` for Mermaid.js
- **`PlantUmlDependencyVisitor`** → `@startuml`… dependency diagram
- **`CriticalPathVisitor`** → runs CP analysis and emits a Markdown report
- **Analysis**
- **Critical-path analysis**: earliest/latest starts and finishes, slack, zero-slack path
---
## Getting Started
### Prerequisites
- [.NET 9.0 SDK](https://dotnet.microsoft.com/download) or later
### Installation
```bash
git clone https://github.com/msallin/project-management.git
cd project-management
dotnet restore
dotnet build