mkdocs-roadmap 1.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ include mkdocs_roadmap/roadmap.advanced.md.j2
2
+ include README.md
3
+
@@ -0,0 +1,147 @@
1
+ Metadata-Version: 2.4
2
+ Name: mkdocs-roadmap
3
+ Version: 1.3.1
4
+ Summary: MkDocs plugin for rendering roadmap.yml files to roadmap.md files
5
+ Home-page: https://github.com/SierraSoftworks/roadmap
6
+ Author: SierraSoftworks
7
+ License-Expression: MIT
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.9
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
18
+ Requires-Python: >=3.7
19
+ Description-Content-Type: text/markdown
20
+ Requires-Dist: mkdocs>=1.0
21
+ Requires-Dist: jinja2>=2.10
22
+ Requires-Dist: pyyaml>=5.1
23
+ Dynamic: home-page
24
+ Dynamic: requires-python
25
+
26
+ # MkDocs Roadmap Plugin
27
+
28
+ The MkDocs Roadmap plugin allows you to define `roadmap.yml` files in your MkDocs project and automatically generate corresponding `roadmap.md` files during the build process. This plugin uses Jinja2 templates based on the advanced roadmap template to render beautiful, styled roadmap documentation.
29
+
30
+ ## Installation
31
+
32
+ Install the plugin using pip:
33
+
34
+ ```bash
35
+ pip install mkdocs-roadmap
36
+ ```
37
+
38
+ Or install from source:
39
+
40
+ ```bash
41
+ cd tools/mkdocs-roadmap
42
+ pip install .
43
+ ```
44
+
45
+ ## Usage
46
+
47
+ ### Configuration
48
+
49
+ Add the plugin to your `mkdocs.yml` configuration file:
50
+
51
+ ```yaml
52
+ plugins:
53
+ - roadmap:
54
+ roadmaps:
55
+ - path/to/roadmap.yml
56
+ - another/path/to/roadmap.yml
57
+ ```
58
+
59
+ The `roadmaps` configuration option is a list of paths to `roadmap.yml` files relative to your `docs_dir`. The plugin will:
60
+
61
+ 1. Read each `roadmap.yml` file
62
+ 2. Render it using the Jinja2 template
63
+ 3. Generate a corresponding `roadmap.md` file in the same location (replacing `.yml` or `.yaml` with `.md`)
64
+
65
+ ### Example
66
+
67
+ If you have a `roadmap.yml` file at `docs/roadmap.yml`, configure it like this:
68
+
69
+ ```yaml
70
+ plugins:
71
+ - roadmap:
72
+ roadmaps:
73
+ - roadmap.yml
74
+ ```
75
+
76
+ This will generate `docs/roadmap.md` during the build process, which you can then reference in your `nav` configuration:
77
+
78
+ ```yaml
79
+ nav:
80
+ - Home: index.md
81
+ - Roadmap: roadmap.md
82
+ ```
83
+
84
+ ### Roadmap File Format
85
+
86
+ The plugin expects roadmap files to follow the roadmap schema. See the main [roadmap documentation](https://roadmap.sierrasoftworks.com/) for details on the schema.
87
+
88
+ Example `roadmap.yml`:
89
+
90
+ ```yaml
91
+ title: Example Road Map
92
+ description: |
93
+ This is an example of what a road map might look like.
94
+
95
+ authors:
96
+ - name: Benjamin Pannell
97
+ email: contact@sierrasoftworks.com
98
+
99
+ timeline:
100
+ - date: 2021-04-21
101
+ title: Project Start
102
+ description: This is when we will start working on the project, get the team ready!
103
+
104
+ objectives:
105
+ - title: Market Dominance
106
+ description: |
107
+ Provide actionable analytics drawn from big data to improve our brand identity in
108
+ the advertainment sector, maximizing clickbait and establishing ourselves as a disruptor
109
+ in this industry.
110
+
111
+ milestones:
112
+ - id: team
113
+ title: Build the Team
114
+ description: We don't yet have anyone, that's not gonna work...
115
+ deliverables:
116
+ - title: Team Lead
117
+ state: TODO
118
+ requirement: MUST
119
+ description: This person needs to know enough about this domain to be able to run with the project.
120
+
121
+ - title: Senior Engineer 1
122
+ - title: Intern 1..50
123
+ description: This should be cheaper than hiring a proper team (right?).
124
+
125
+ - id: done
126
+ title: Finish the Project
127
+ description: We don't need other milestones, do we?
128
+ dependencies:
129
+ - team
130
+ deliverables:
131
+ - title: MVP
132
+ description: Who needs a polished product? Let's just ship the MVP and call it done.
133
+ - title: Marketing
134
+ - title: VC Funding
135
+ - title: Yacht
136
+ reference: https://lmgtfy.app/?q=yacht&t=i
137
+ ```
138
+
139
+ ## Development
140
+
141
+ To develop or modify the plugin:
142
+
143
+ 1. Clone the repository
144
+ 2. Navigate to `tools/mkdocs-roadmap`
145
+ 3. Install in development mode: `pip install -e .`
146
+ 4. Make your changes
147
+ 5. Test with your MkDocs project
@@ -0,0 +1,122 @@
1
+ # MkDocs Roadmap Plugin
2
+
3
+ The MkDocs Roadmap plugin allows you to define `roadmap.yml` files in your MkDocs project and automatically generate corresponding `roadmap.md` files during the build process. This plugin uses Jinja2 templates based on the advanced roadmap template to render beautiful, styled roadmap documentation.
4
+
5
+ ## Installation
6
+
7
+ Install the plugin using pip:
8
+
9
+ ```bash
10
+ pip install mkdocs-roadmap
11
+ ```
12
+
13
+ Or install from source:
14
+
15
+ ```bash
16
+ cd tools/mkdocs-roadmap
17
+ pip install .
18
+ ```
19
+
20
+ ## Usage
21
+
22
+ ### Configuration
23
+
24
+ Add the plugin to your `mkdocs.yml` configuration file:
25
+
26
+ ```yaml
27
+ plugins:
28
+ - roadmap:
29
+ roadmaps:
30
+ - path/to/roadmap.yml
31
+ - another/path/to/roadmap.yml
32
+ ```
33
+
34
+ The `roadmaps` configuration option is a list of paths to `roadmap.yml` files relative to your `docs_dir`. The plugin will:
35
+
36
+ 1. Read each `roadmap.yml` file
37
+ 2. Render it using the Jinja2 template
38
+ 3. Generate a corresponding `roadmap.md` file in the same location (replacing `.yml` or `.yaml` with `.md`)
39
+
40
+ ### Example
41
+
42
+ If you have a `roadmap.yml` file at `docs/roadmap.yml`, configure it like this:
43
+
44
+ ```yaml
45
+ plugins:
46
+ - roadmap:
47
+ roadmaps:
48
+ - roadmap.yml
49
+ ```
50
+
51
+ This will generate `docs/roadmap.md` during the build process, which you can then reference in your `nav` configuration:
52
+
53
+ ```yaml
54
+ nav:
55
+ - Home: index.md
56
+ - Roadmap: roadmap.md
57
+ ```
58
+
59
+ ### Roadmap File Format
60
+
61
+ The plugin expects roadmap files to follow the roadmap schema. See the main [roadmap documentation](https://roadmap.sierrasoftworks.com/) for details on the schema.
62
+
63
+ Example `roadmap.yml`:
64
+
65
+ ```yaml
66
+ title: Example Road Map
67
+ description: |
68
+ This is an example of what a road map might look like.
69
+
70
+ authors:
71
+ - name: Benjamin Pannell
72
+ email: contact@sierrasoftworks.com
73
+
74
+ timeline:
75
+ - date: 2021-04-21
76
+ title: Project Start
77
+ description: This is when we will start working on the project, get the team ready!
78
+
79
+ objectives:
80
+ - title: Market Dominance
81
+ description: |
82
+ Provide actionable analytics drawn from big data to improve our brand identity in
83
+ the advertainment sector, maximizing clickbait and establishing ourselves as a disruptor
84
+ in this industry.
85
+
86
+ milestones:
87
+ - id: team
88
+ title: Build the Team
89
+ description: We don't yet have anyone, that's not gonna work...
90
+ deliverables:
91
+ - title: Team Lead
92
+ state: TODO
93
+ requirement: MUST
94
+ description: This person needs to know enough about this domain to be able to run with the project.
95
+
96
+ - title: Senior Engineer 1
97
+ - title: Intern 1..50
98
+ description: This should be cheaper than hiring a proper team (right?).
99
+
100
+ - id: done
101
+ title: Finish the Project
102
+ description: We don't need other milestones, do we?
103
+ dependencies:
104
+ - team
105
+ deliverables:
106
+ - title: MVP
107
+ description: Who needs a polished product? Let's just ship the MVP and call it done.
108
+ - title: Marketing
109
+ - title: VC Funding
110
+ - title: Yacht
111
+ reference: https://lmgtfy.app/?q=yacht&t=i
112
+ ```
113
+
114
+ ## Development
115
+
116
+ To develop or modify the plugin:
117
+
118
+ 1. Clone the repository
119
+ 2. Navigate to `tools/mkdocs-roadmap`
120
+ 3. Install in development mode: `pip install -e .`
121
+ 4. Make your changes
122
+ 5. Test with your MkDocs project
@@ -0,0 +1,153 @@
1
+ """
2
+ MkDocs plugin for rendering roadmap.yml files to roadmap.md files.
3
+ """
4
+
5
+ from mkdocs.plugins import BasePlugin
6
+ from mkdocs.config import config_options
7
+ from mkdocs.config.base import Config
8
+ import os
9
+ import yaml
10
+ import jinja2
11
+ from pathlib import Path
12
+ from typing import Dict, Any
13
+
14
+
15
+ def state_color(state: str) -> str:
16
+ """Convert state to color."""
17
+ colors = {
18
+ "TODO": "#aaa",
19
+ "DOING": "#63B2EB",
20
+ "DONE": "#3EAF7C",
21
+ "SKIP": "#F65BD2",
22
+ }
23
+ return colors.get(state, "#aaa")
24
+
25
+
26
+ def requirement_color(requirement: str) -> str:
27
+ """Convert requirement to color."""
28
+ colors = {
29
+ "MUST": "#E06446",
30
+ "SHOULD": "#E0AF2F",
31
+ "MAY": "#3ABDE0",
32
+ }
33
+ return colors.get(requirement, "#888")
34
+
35
+
36
+ def date_format(date_value) -> str:
37
+ """Format date to YYYY-MM-DD format."""
38
+ from datetime import datetime, date
39
+
40
+ if isinstance(date_value, (datetime, date)):
41
+ return date_value.strftime("%Y-%m-%d")
42
+ elif isinstance(date_value, str):
43
+ # Try to parse common date formats
44
+ try:
45
+ # Try ISO format first
46
+ dt = datetime.fromisoformat(date_value.replace('Z', '+00:00'))
47
+ return dt.strftime("%Y-%m-%d")
48
+ except ValueError:
49
+ # If that fails, try other common formats
50
+ for fmt in ["%Y-%m-%d", "%Y/%m/%d", "%d/%m/%Y"]:
51
+ try:
52
+ dt = datetime.strptime(date_value, fmt)
53
+ return dt.strftime("%Y-%m-%d")
54
+ except ValueError:
55
+ continue
56
+ return str(date_value)
57
+
58
+
59
+ class RoadmapPlugin(BasePlugin):
60
+ """MkDocs plugin for rendering roadmap.yml files."""
61
+
62
+ config_scheme = (
63
+ ('roadmaps', config_options.Type(list, default=[])),
64
+ )
65
+
66
+ def __init__(self):
67
+ super().__init__()
68
+ self.template = None
69
+
70
+ def on_config(self, config: Config, **kwargs) -> Config:
71
+ """Load the Jinja2 template when config is loaded."""
72
+ template_path = Path(__file__).parent / "roadmap.advanced.md.j2"
73
+ with open(template_path, 'r') as f:
74
+ template_content = f.read()
75
+
76
+ # Create Jinja2 environment with custom filters
77
+ env = jinja2.Environment(
78
+ loader=jinja2.DictLoader({'roadmap': template_content}),
79
+ autoescape=False
80
+ )
81
+ env.filters['state_color'] = state_color
82
+ env.filters['requirement_color'] = requirement_color
83
+ env.filters['date_format'] = date_format
84
+
85
+ self.template = env.get_template('roadmap')
86
+ return config
87
+
88
+ def on_files(self, files, config: Config, **kwargs):
89
+ """Process roadmap.yml files and generate .md files."""
90
+ docs_dir = Path(config['docs_dir'])
91
+
92
+ # Get roadmap files from config
93
+ roadmap_files = self.config.get('roadmaps', [])
94
+
95
+ for roadmap_file in roadmap_files:
96
+ roadmap_path = docs_dir / roadmap_file
97
+
98
+ if not roadmap_path.exists():
99
+ continue
100
+
101
+ # Read and parse YAML
102
+ with open(roadmap_path, 'r') as f:
103
+ roadmap_data = yaml.safe_load(f)
104
+
105
+ # Handle empty or invalid YAML
106
+ if roadmap_data is None:
107
+ roadmap_data = {}
108
+
109
+ # Ensure defaults are set
110
+ roadmap_data.setdefault('authors', [])
111
+ roadmap_data.setdefault('timeline', [])
112
+ roadmap_data.setdefault('objectives', [])
113
+ roadmap_data.setdefault('milestones', [])
114
+ roadmap_data.setdefault('title', 'Roadmap')
115
+ roadmap_data.setdefault('description', '')
116
+
117
+ # Set defaults for deliverables
118
+ for milestone in roadmap_data.get('milestones', []):
119
+ for deliverable in milestone.get('deliverables', []):
120
+ if 'requirement' not in deliverable:
121
+ deliverable['requirement'] = 'SHOULD'
122
+ if 'state' not in deliverable:
123
+ deliverable['state'] = 'TODO'
124
+
125
+ # Render template - pass roadmap_data as root context to match Go template structure
126
+ rendered = self.template.render(**roadmap_data)
127
+
128
+ # Determine output path (replace .yml/.yaml with .md)
129
+ output_path = roadmap_path.with_suffix('.md')
130
+
131
+ # Write output
132
+ with open(output_path, 'w') as f:
133
+ f.write(rendered)
134
+
135
+ # Add the generated .md file to MkDocs files if it doesn't exist
136
+ rel_path = str(output_path.relative_to(docs_dir))
137
+ # Normalize path separators for cross-platform compatibility
138
+ rel_path = rel_path.replace('\\', '/')
139
+
140
+ # Check if file already exists in files list
141
+ existing_files = [f.src_path for f in files]
142
+ if rel_path not in existing_files:
143
+ from mkdocs.structure.files import File
144
+ file_obj = File(
145
+ path=rel_path,
146
+ src_dir=str(docs_dir),
147
+ dest_dir=config['site_dir'],
148
+ use_directory_urls=config['use_directory_urls']
149
+ )
150
+ files.append(file_obj)
151
+
152
+ return files
153
+
@@ -0,0 +1,78 @@
1
+ # {{ title }}
2
+
3
+ {% if authors %}
4
+ <div style="display: flex; flex-direction: row; background: rgba(200, 200, 200, 0.15); padding: 1rem; border-radius: 6px; margin-bottom: 2rem;">
5
+ <div style="vertical-align: middle; font-size: 0.7rem; line-height: 1.8rem; opacity: 0.6;">Authored by</div>
6
+ {% for author in authors %}
7
+ <div style="margin-left: 1rem; padding-left: 1rem; border-left: 1px solid rbga(200, 200, 200, 0.5);">
8
+ <h5 style="font-size: 0.8rem; margin: 0;">{{ author.name }}</h5>
9
+ {% if author.contact %}<p style="font-size: 0.6rem; margin: 0;">{{ author.contact }}</p>{% endif %}
10
+ </div>
11
+ {% endfor %}
12
+ </div>
13
+ {% endif %}
14
+
15
+
16
+ {% if description %}{{ description }}{% endif %}
17
+
18
+ {% if timeline %}
19
+ ## Important Dates
20
+
21
+ <div style="border-left: 4px solid gray; border-radius: 0 4px 4px 0; background: rgba(200, 200, 200, 0.15); margin: 2rem auto; padding: 1rem 2rem; position: relative; text-align: center; margin-left: 7rem;">
22
+ {% for entry in timeline %}
23
+ <div style="text-align: left; position: relative; padding-bottom: 1rem; margin-bottom: 1rem;">
24
+ <div style="position: absolute; left: -10rem; text-align: right; font-size: 0.9rem; font-weight: 700; opacity: 0.7; min-width: 6rem; top: 2px;">{{ entry.date | date_format }}</div>
25
+
26
+ <h3>{{ entry.title }}</h3>
27
+ {% if entry.description %}{{ entry.description }}{% endif %}
28
+
29
+ <div style="position: absolute; box-shadow: 0 0 0 4px gray; left: -2.5rem; background: #444; border-radius: 50%; height: 11px; width: 11px; top: 5px;"></div>
30
+ </div>
31
+ {% endfor %}
32
+ </div>
33
+ {% endif %}
34
+
35
+ {% if objectives %}
36
+ ## Objectives
37
+ {% for objective in objectives %}
38
+ ### {{ objective.title }}
39
+ {% if objective.description %}{{ objective.description }}{% endif %}
40
+
41
+ {% endfor %}
42
+ {% endif %}
43
+
44
+ {% if milestones %}
45
+ ## Milestones
46
+
47
+ <div style="border-left: 4px solid gray; border-radius: 0 4px 4px 0; background: rgba(200, 200, 200, 0.15); margin: 2rem auto; padding: 1rem 2rem; position: relative; text-align: center; margin-left: 7rem;">
48
+ {% for milestone in milestones %}
49
+ <div style="text-align: left; position: relative; padding-bottom: 1rem; margin-bottom: 1rem;">
50
+ <div style="position: absolute; left: -10rem; text-align: right; font-size: 0.9rem; font-weight: 700; opacity: 0.7; min-width: 6rem; top: 2px;">M{{ loop.index }}</div>
51
+
52
+ <h3>{{ milestone.title }}</h3>
53
+ {% if milestone.description %}{{ milestone.description }}{% endif %}
54
+
55
+ {% if milestone.deliverables %}
56
+ {% for deliverable in milestone.deliverables %}
57
+ <div style="position: relative; border-radius: 4px; box-shadow: 2px 2px 10px rgba(0,0,0,0.3); background-color: rgba(0, 0, 0, 0.1); padding: 10px; 20px; margin: 2rem 0; padding-left: 20px;">
58
+ <div style="position: absolute; top: 0; left: 0; bottom: 0; width: 8px; border-radius: 4px 0 0 4px; background-color: {{ deliverable.state | default('TODO') | state_color }}"></div>
59
+ <h4 style="margin-top: 0">
60
+ <span style="float: right; margin: 0;">{{ deliverable.state | default('TODO') }}</span>
61
+
62
+ {{ deliverable.title }}
63
+ {% if deliverable.requirement %}<span style="display: inline; font-size: 90%; padding: 3px 5px; border-radius: 4px; background-color: {{ deliverable.requirement | requirement_color }}; color: white; margin: 0 2px;"> {{ deliverable.requirement }}</span>{% endif %}
64
+ </h4>
65
+
66
+ {% if deliverable.description %}{{ deliverable.description }}{% endif %}
67
+
68
+ {% if deliverable.reference %}[Read more &rarr;]({{ deliverable.reference }}){% endif %}
69
+ </div>
70
+ {% endfor %}
71
+ {% endif %}
72
+
73
+ <div style="position: absolute; box-shadow: 0 0 0 4px gray; left: -2.5rem; background: #444; border-radius: 50%; height: 11px; width: 11px; top: 5px;"></div>
74
+ </div>
75
+ {% endfor %}
76
+ </div>
77
+ {% endif %}
78
+
@@ -0,0 +1,147 @@
1
+ Metadata-Version: 2.4
2
+ Name: mkdocs-roadmap
3
+ Version: 1.3.1
4
+ Summary: MkDocs plugin for rendering roadmap.yml files to roadmap.md files
5
+ Home-page: https://github.com/SierraSoftworks/roadmap
6
+ Author: SierraSoftworks
7
+ License-Expression: MIT
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.9
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
18
+ Requires-Python: >=3.7
19
+ Description-Content-Type: text/markdown
20
+ Requires-Dist: mkdocs>=1.0
21
+ Requires-Dist: jinja2>=2.10
22
+ Requires-Dist: pyyaml>=5.1
23
+ Dynamic: home-page
24
+ Dynamic: requires-python
25
+
26
+ # MkDocs Roadmap Plugin
27
+
28
+ The MkDocs Roadmap plugin allows you to define `roadmap.yml` files in your MkDocs project and automatically generate corresponding `roadmap.md` files during the build process. This plugin uses Jinja2 templates based on the advanced roadmap template to render beautiful, styled roadmap documentation.
29
+
30
+ ## Installation
31
+
32
+ Install the plugin using pip:
33
+
34
+ ```bash
35
+ pip install mkdocs-roadmap
36
+ ```
37
+
38
+ Or install from source:
39
+
40
+ ```bash
41
+ cd tools/mkdocs-roadmap
42
+ pip install .
43
+ ```
44
+
45
+ ## Usage
46
+
47
+ ### Configuration
48
+
49
+ Add the plugin to your `mkdocs.yml` configuration file:
50
+
51
+ ```yaml
52
+ plugins:
53
+ - roadmap:
54
+ roadmaps:
55
+ - path/to/roadmap.yml
56
+ - another/path/to/roadmap.yml
57
+ ```
58
+
59
+ The `roadmaps` configuration option is a list of paths to `roadmap.yml` files relative to your `docs_dir`. The plugin will:
60
+
61
+ 1. Read each `roadmap.yml` file
62
+ 2. Render it using the Jinja2 template
63
+ 3. Generate a corresponding `roadmap.md` file in the same location (replacing `.yml` or `.yaml` with `.md`)
64
+
65
+ ### Example
66
+
67
+ If you have a `roadmap.yml` file at `docs/roadmap.yml`, configure it like this:
68
+
69
+ ```yaml
70
+ plugins:
71
+ - roadmap:
72
+ roadmaps:
73
+ - roadmap.yml
74
+ ```
75
+
76
+ This will generate `docs/roadmap.md` during the build process, which you can then reference in your `nav` configuration:
77
+
78
+ ```yaml
79
+ nav:
80
+ - Home: index.md
81
+ - Roadmap: roadmap.md
82
+ ```
83
+
84
+ ### Roadmap File Format
85
+
86
+ The plugin expects roadmap files to follow the roadmap schema. See the main [roadmap documentation](https://roadmap.sierrasoftworks.com/) for details on the schema.
87
+
88
+ Example `roadmap.yml`:
89
+
90
+ ```yaml
91
+ title: Example Road Map
92
+ description: |
93
+ This is an example of what a road map might look like.
94
+
95
+ authors:
96
+ - name: Benjamin Pannell
97
+ email: contact@sierrasoftworks.com
98
+
99
+ timeline:
100
+ - date: 2021-04-21
101
+ title: Project Start
102
+ description: This is when we will start working on the project, get the team ready!
103
+
104
+ objectives:
105
+ - title: Market Dominance
106
+ description: |
107
+ Provide actionable analytics drawn from big data to improve our brand identity in
108
+ the advertainment sector, maximizing clickbait and establishing ourselves as a disruptor
109
+ in this industry.
110
+
111
+ milestones:
112
+ - id: team
113
+ title: Build the Team
114
+ description: We don't yet have anyone, that's not gonna work...
115
+ deliverables:
116
+ - title: Team Lead
117
+ state: TODO
118
+ requirement: MUST
119
+ description: This person needs to know enough about this domain to be able to run with the project.
120
+
121
+ - title: Senior Engineer 1
122
+ - title: Intern 1..50
123
+ description: This should be cheaper than hiring a proper team (right?).
124
+
125
+ - id: done
126
+ title: Finish the Project
127
+ description: We don't need other milestones, do we?
128
+ dependencies:
129
+ - team
130
+ deliverables:
131
+ - title: MVP
132
+ description: Who needs a polished product? Let's just ship the MVP and call it done.
133
+ - title: Marketing
134
+ - title: VC Funding
135
+ - title: Yacht
136
+ reference: https://lmgtfy.app/?q=yacht&t=i
137
+ ```
138
+
139
+ ## Development
140
+
141
+ To develop or modify the plugin:
142
+
143
+ 1. Clone the repository
144
+ 2. Navigate to `tools/mkdocs-roadmap`
145
+ 3. Install in development mode: `pip install -e .`
146
+ 4. Make your changes
147
+ 5. Test with your MkDocs project
@@ -0,0 +1,12 @@
1
+ MANIFEST.in
2
+ README.md
3
+ pyproject.toml
4
+ setup.py
5
+ mkdocs_roadmap/__init__.py
6
+ mkdocs_roadmap/roadmap.advanced.md.j2
7
+ mkdocs_roadmap.egg-info/PKG-INFO
8
+ mkdocs_roadmap.egg-info/SOURCES.txt
9
+ mkdocs_roadmap.egg-info/dependency_links.txt
10
+ mkdocs_roadmap.egg-info/entry_points.txt
11
+ mkdocs_roadmap.egg-info/requires.txt
12
+ mkdocs_roadmap.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ [mkdocs.plugins]
2
+ roadmap = mkdocs_roadmap:RoadmapPlugin
@@ -0,0 +1,3 @@
1
+ mkdocs>=1.0
2
+ jinja2>=2.10
3
+ pyyaml>=5.1
@@ -0,0 +1 @@
1
+ mkdocs_roadmap
@@ -0,0 +1,48 @@
1
+ [build-system]
2
+ requires = ["setuptools>=45", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "mkdocs-roadmap"
7
+ version = "1.3.1"
8
+ description = "MkDocs plugin for rendering roadmap.yml files to roadmap.md files"
9
+ readme = "README.md"
10
+ requires-python = ">=3.9"
11
+ license = "MIT"
12
+ authors = [
13
+ {name = "SierraSoftworks"}
14
+ ]
15
+ classifiers = [
16
+ "Development Status :: 3 - Alpha",
17
+ "Intended Audience :: Developers",
18
+ "Operating System :: OS Independent",
19
+ "Programming Language :: Python :: 3",
20
+ "Programming Language :: Python :: 3.9",
21
+ "Programming Language :: Python :: 3.10",
22
+ "Programming Language :: Python :: 3.11",
23
+ "Programming Language :: Python :: 3.12",
24
+ "Programming Language :: Python :: 3.13",
25
+ "Programming Language :: Python :: 3.14",
26
+ ]
27
+ dependencies = [
28
+ "mkdocs>=1.0",
29
+ "jinja2>=2.10",
30
+ "pyyaml>=5.1",
31
+ ]
32
+
33
+ [dependency-groups]
34
+ dev = [
35
+ "mkdocs>=1.0",
36
+ "jinja2>=2.10",
37
+ "pyyaml>=5.1",
38
+ ]
39
+
40
+ [project.entry-points."mkdocs.plugins"]
41
+ roadmap = "mkdocs_roadmap:RoadmapPlugin"
42
+
43
+ [tool.setuptools]
44
+ packages = ["mkdocs_roadmap"]
45
+
46
+ [tool.setuptools.package-data]
47
+ mkdocs_roadmap = ["roadmap.advanced.md.j2"]
48
+
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,40 @@
1
+ """Setup script for mkdocs-roadmap plugin."""
2
+
3
+ from setuptools import setup, find_packages
4
+
5
+ with open("README.md", "r", encoding="utf-8") as fh:
6
+ long_description = fh.read()
7
+
8
+ setup(
9
+ name="mkdocs-roadmap",
10
+ version="1.3.1",
11
+ author="SierraSoftworks",
12
+ description="MkDocs plugin for rendering roadmap.yml files to roadmap.md files",
13
+ long_description=long_description,
14
+ long_description_content_type="text/markdown",
15
+ url="https://github.com/SierraSoftworks/roadmap",
16
+ packages=find_packages(),
17
+ include_package_data=True,
18
+ package_data={
19
+ 'mkdocs_roadmap': ['roadmap.advanced.md.j2'],
20
+ },
21
+ classifiers=[
22
+ "Development Status :: 3 - Alpha",
23
+ "Intended Audience :: Developers",
24
+ "Operating System :: OS Independent",
25
+ "Programming Language :: Python :: 3",
26
+ "Programming Language :: Python :: 3.9",
27
+ "Programming Language :: Python :: 3.10",
28
+ "Programming Language :: Python :: 3.11",
29
+ "Programming Language :: Python :: 3.12",
30
+ "Programming Language :: Python :: 3.13",
31
+ "Programming Language :: Python :: 3.14",
32
+ ],
33
+ python_requires=">=3.7",
34
+ # Dependencies are defined in pyproject.toml to avoid duplication
35
+ entry_points={
36
+ "mkdocs.plugins": [
37
+ "roadmap = mkdocs_roadmap:RoadmapPlugin",
38
+ ],
39
+ },
40
+ )