diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..13566b81b018ad684f3a35fee301741b2734c8f4
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/aws.xml b/.idea/aws.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ec328d0bbf68db9e7322932181cc811412e3ca87
--- /dev/null
+++ b/.idea/aws.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="accountSettings">
+    <option name="activeProfile" value="profile:default" />
+    <option name="activeRegion" value="eu-west-1" />
+    <option name="recentlyUsedProfiles">
+      <list>
+        <option value="profile:default" />
+      </list>
+    </option>
+    <option name="recentlyUsedRegions">
+      <list>
+        <option value="eu-west-1" />
+      </list>
+    </option>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/markdown.xml b/.idea/markdown.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ec0b30fa7ea2824af6923493653e32595b0907a8
--- /dev/null
+++ b/.idea/markdown.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="MarkdownSettings">
+    <enabledExtensions>
+      <entry key="MermaidLanguageExtension" value="false" />
+      <entry key="PlantUMLLanguageExtension" value="true" />
+    </enabledExtensions>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..639900d13c6182e452e33a3bd638e70a0146c785
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2b7718b265b7186a2250aa2c91b4b2dc3b9949ad
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/requirements-manager.iml" filepath="$PROJECT_DIR$/requirements-manager.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_create_table.xml b/.idea/runConfigurations/go_build_requirements_manager_and_run_create_table.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fdf9d9eca86653aba0ab309cf90b8ea3f169c7f6
--- /dev/null
+++ b/.idea/runConfigurations/go_build_requirements_manager_and_run_create_table.xml
@@ -0,0 +1,13 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="go build requirements-manager and run create table" type="GoApplicationRunConfiguration" factoryName="Go Application">
+    <module name="requirements-manager" />
+    <working_directory value="$PROJECT_DIR$/application/source" />
+    <parameters value="meta print -c id -c name -c percent -c YES -p $PROJECT_DIR$/development/examples/example1" />
+    <kind value="DIRECTORY" />
+    <package value="gitlab.schukai.com/oss/utilities/requirements-manager" />
+    <directory value="$PROJECT_DIR$/application/source" />
+    <filePath value="$PROJECT_DIR$/application/source/main.go" />
+    <output_directory value="$PROJECT_DIR$/deployment/build" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_items.xml b/.idea/runConfigurations/go_build_requirements_manager_and_run_print_items.xml
new file mode 100644
index 0000000000000000000000000000000000000000..41912c1d9f57f8a9043cacee561101219e4edd7b
--- /dev/null
+++ b/.idea/runConfigurations/go_build_requirements_manager_and_run_print_items.xml
@@ -0,0 +1,13 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="go build requirements-manager and run print items" type="GoApplicationRunConfiguration" factoryName="Go Application">
+    <module name="requirements-manager" />
+    <working_directory value="$PROJECT_DIR$/application/source" />
+    <parameters value="items print -p $PROJECT_DIR$/development/examples/example1" />
+    <kind value="DIRECTORY" />
+    <package value="gitlab.schukai.com/oss/utilities/requirements-manager" />
+    <directory value="$PROJECT_DIR$/application/source" />
+    <filePath value="$PROJECT_DIR$/application/source/main.go" />
+    <output_directory value="$PROJECT_DIR$/deployment/build" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_overview.xml b/.idea/runConfigurations/go_build_requirements_manager_and_run_print_overview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..64cef3c23fb852dc330cf53cbc1cef88a3c9638e
--- /dev/null
+++ b/.idea/runConfigurations/go_build_requirements_manager_and_run_print_overview.xml
@@ -0,0 +1,13 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="go build requirements-manager and run print overview" type="GoApplicationRunConfiguration" factoryName="Go Application">
+    <module name="requirements-manager" />
+    <working_directory value="$PROJECT_DIR$/application/source" />
+    <parameters value="overview print -c ID -c Title -c Version -p $PROJECT_DIR$/development/examples/example1 -t $PROJECT_DIR$/development/examples/example1/overview.template" />
+    <kind value="DIRECTORY" />
+    <package value="gitlab.schukai.com/oss/utilities/requirements-manager" />
+    <directory value="$PROJECT_DIR$/application/source" />
+    <filePath value="$PROJECT_DIR$/application/source/main.go" />
+    <output_directory value="$PROJECT_DIR$/deployment/build" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_todo.xml b/.idea/runConfigurations/go_build_requirements_manager_and_run_print_todo.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8bdeda3473145a293d5453886544dcaca03a55d0
--- /dev/null
+++ b/.idea/runConfigurations/go_build_requirements_manager_and_run_print_todo.xml
@@ -0,0 +1,13 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="go build requirements-manager and run print todo" type="GoApplicationRunConfiguration" factoryName="Go Application">
+    <module name="requirements-manager" />
+    <working_directory value="$PROJECT_DIR$/application/source" />
+    <parameters value="todos print -p $PROJECT_DIR$/development/examples/example1" />
+    <kind value="DIRECTORY" />
+    <package value="gitlab.schukai.com/oss/utilities/requirements-manager" />
+    <directory value="$PROJECT_DIR$/application/source" />
+    <filePath value="$PROJECT_DIR$/application/source/main.go" />
+    <output_directory value="$PROJECT_DIR$/deployment/build" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_version.xml b/.idea/runConfigurations/go_build_requirements_manager_and_run_version.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6082c3de7968fda89b2982347f63449a06c88738
--- /dev/null
+++ b/.idea/runConfigurations/go_build_requirements_manager_and_run_version.xml
@@ -0,0 +1,13 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="go build requirements-manager and run version" type="GoApplicationRunConfiguration" factoryName="Go Application">
+    <module name="requirements-manager" />
+    <working_directory value="$PROJECT_DIR$/application/source" />
+    <parameters value="version" />
+    <kind value="DIRECTORY" />
+    <package value="gitlab.schukai.com/oss/utilities/requirements-manager" />
+    <directory value="$PROJECT_DIR$/application/source" />
+    <filePath value="$PROJECT_DIR$/application/source/main.go" />
+    <output_directory value="$PROJECT_DIR$/deployment/build" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ce7ffb58dc082e4ba0b8931780271ad81debdab9
--- /dev/null
+++ b/.idea/watcherTasks.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectTasksOptions">
+    <TaskOptions isEnabled="true">
+      <option name="arguments" value="fmt $FilePath$" />
+      <option name="checkSyntaxErrors" value="true" />
+      <option name="description" />
+      <option name="exitCodeBehavior" value="ERROR" />
+      <option name="fileExtension" value="go" />
+      <option name="immediateSync" value="false" />
+      <option name="name" value="go fmt" />
+      <option name="output" value="$FilePath$" />
+      <option name="outputFilters">
+        <array />
+      </option>
+      <option name="outputFromStdout" value="false" />
+      <option name="program" value="$GoExecPath$" />
+      <option name="runOnExternalChanges" value="false" />
+      <option name="scopeName" value="Project Files" />
+      <option name="trackOnlyRoot" value="true" />
+      <option name="workingDir" value="$ProjectFileDir$" />
+      <envs>
+        <env name="GOROOT" value="$GOROOT$" />
+        <env name="GOPATH" value="$GOPATH$" />
+        <env name="PATH" value="$GoBinDirs$" />
+      </envs>
+    </TaskOptions>
+    <TaskOptions isEnabled="true">
+      <option name="arguments" value="-w $FilePath$" />
+      <option name="checkSyntaxErrors" value="true" />
+      <option name="description" />
+      <option name="exitCodeBehavior" value="ERROR" />
+      <option name="fileExtension" value="go" />
+      <option name="immediateSync" value="false" />
+      <option name="name" value="goimports" />
+      <option name="output" value="$FilePath$" />
+      <option name="outputFilters">
+        <array />
+      </option>
+      <option name="outputFromStdout" value="false" />
+      <option name="program" value="goimports" />
+      <option name="runOnExternalChanges" value="false" />
+      <option name="scopeName" value="Project Files" />
+      <option name="trackOnlyRoot" value="true" />
+      <option name="workingDir" value="$ProjectFileDir$" />
+      <envs>
+        <env name="GOROOT" value="$GOROOT$" />
+        <env name="GOPATH" value="$GOPATH$" />
+        <env name="PATH" value="$GoBinDirs$" />
+      </envs>
+    </TaskOptions>
+  </component>
+</project>
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..e22a849263f82505e59d79dae015522fee916245
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,236 @@
+#############################################################################################
+#############################################################################################
+##
+## PROJECT-DEFINITIONS
+##
+#############################################################################################
+#############################################################################################
+
+COPYRIGHT_TEXT       := © schukai GmbH, Released under the AGPL 3.0 License.
+COMPONENTNAME        := RequirementManager
+COMPONENTSLUG        := $(shell echo "$COMPONENTNAME" | tr '[:upper:]' '[:lower:]')
+
+#############################################################################################
+#############################################################################################
+##
+## more general block with standard definitions
+##
+#############################################################################################
+#############################################################################################
+
+# get Makefile directory name: http://stackoverflow.com/a/5982798/376773
+THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
+THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)/
+THIS_MAKEFILE:=$(THIS_DIR)$(THIS_MAKEFILE_PATH)
+
+# colors
+BLACK        := $(shell tput -Txterm setaf 0)
+RED          := $(shell tput -Txterm setaf 1)
+GREEN        := $(shell tput -Txterm setaf 2)
+YELLOW       := $(shell tput -Txterm setaf 3)
+LIGHTPURPLE  := $(shell tput -Txterm setaf 4)
+PURPLE       := $(shell tput -Txterm setaf 5)
+BLUE         := $(shell tput -Txterm setaf 6)
+WHITE        := $(shell tput -Txterm setaf 7)
+RESET        := $(shell tput -Txterm sgr0)
+
+INFO    := $(GREEN)
+COMMENT := $(YELLOW)
+
+# Output control and standard outputs
+MARKER           := $(BLUE)[+]$(RESET)
+ERRORMARKER      := $(RED)[-]$(RESET)
+## Deactivate the quite mode by overwriting the value with space
+
+ifndef DEBUG
+    QUIET = @
+else
+    QUIET = 
+endif
+
+ifndef DONTOPENBROWSER
+    OPENBROWSER = false
+else
+    OPENBROWSER = true
+endif
+
+ECHO             := @echo
+ECHOMARKER       := @echo "$(MARKER) $0"
+ECHOERRORMARKER  := @echo "$(ERRORMARKER) $0"
+
+# Use bash instead of sh
+## Sets the shell used
+SHELL            =  bash
+
+# path and binaries
+AWK              := awk
+CP               := cp
+CD               := cd
+KILL             := /bin/kill
+M4               := m4
+MV               := mv
+RM               := rm -f
+MKDIR            := mkdir -p
+SED              := sed
+FIND             := find
+SORT             := sort
+TOUCH            := touch
+WGET             := wget
+CHMOD            := chmod
+RSYNC            := rsync
+DOCKER           := docker
+NPX              := npx
+AWS              := aws
+XARGS            := xargs
+GREP             := grep
+NPM              := npm
+make             := make
+GIT              := git
+NPX              := npx
+NODE             := node
+LN               := ln -s
+
+# Executable Programs the Installed be have to
+EXECUTABLES = $(AWK) $(CP) $(KILL) $(M4) $(MV) rm mkdir $(SED) $(SORT) $(TOUCH) $(WGET) $(CHMOD) $(NPX) $(FIND) $(XARGS) $(GREP) $(NPM) $(GIT) $(NPX) $(NODE) ln; 
+K := $(foreach exec,$(EXECUTABLES),\
+        $(if $(shell which $(exec)),some string,$(error "Missing $(exec) in PATH; please install")))
+
+check_defined = \
+    $(strip $(foreach 1,$1, \
+        $(call __check_defined,$1,$(strip $(value 2)),$3)))
+__check_defined = \
+    $(if $(value $1),, \
+      $(ECHOERRORMARKER) $(if $2, $2, $1))
+
+#############################################################################################
+#############################################################################################
+##
+## DEFAULT-TARGETS
+##
+#############################################################################################
+#############################################################################################
+
+# @see .PHONY https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html#Phony-Targets
+
+.DEFAULT_GOAL := help
+
+.PHONY: print
+print:
+	$(ECHO) "THIS_MAKEFILE:      $(THIS_MAKEFILE)"
+	$(ECHO) "THIS_MAKEFILE_PATH: $(THIS_MAKEFILE_PATH)"
+	$(ECHO) "THIS_DIR:           $(THIS_DIR)"
+
+# Add a comment to the public targets so that it appears
+# in this help Use two # characters for a help comment
+.PHONY: help
+help:
+	@printf "${COMMENT}Usage:${RESET}\n"
+	@printf " make [target] [arg=\"val\"...]\n\n"
+	@printf "${COMMENT}Available targets:${RESET}\n"
+	@awk '/^[a-zA-Z\-\_0-9\.@]+:/ { \
+		helpMessage = match(lastLine, /^## (.*)/); \
+		if (helpMessage) { \
+			helpCommand = substr($$1, 0, index($$1, ":")); \
+			helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
+			printf " ${INFO}%-22s${RESET} %s\n", helpCommand, helpMessage; \
+		} \
+	} \
+	{ lastLine = $$0 }' $(MAKEFILE_LIST)
+	@printf "\n${COMMENT}Available arguments:${RESET}\n\n"
+	@awk '/^(([a-zA-Z\-\_0-9\.@]+)\s=)/ { \
+		helpMessage = match(lastLine, /^## (.*)/); \
+		if (helpMessage) { \
+			helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
+			printf " ${INFO}%-22s${RESET} %s (Default: %s)\n", $$1, helpMessage, $$3; \
+		} \
+	} \
+	{ lastLine = $$0 }' $(MAKEFILE_LIST)
+
+.PHONY: variables
+## Print all Variables
+variables:
+	@$(foreach v, $(.VARIABLES), $(if $(filter file,$(origin $(v))), $(info $(INFO)$(v)$(RESET)=$($(v))$(RESET))))
+
+check_defined = \
+    $(strip $(foreach 1,$1, \
+        $(call __check_defined,$1,$(strip $(value 2)))))
+__check_defined = \
+    $(if $(value $1),, \
+      $(error Undefined $1$(if $2, ($2))))
+      
+
+
+#############################################################################################
+#############################################################################################
+##
+## DIRECTORIES
+##
+#############################################################################################
+#############################################################################################
+
+APPLICATION_PATH     :=   $(THIS_DIR)application/
+RESOURCE_PATH        :=   $(THIS_DIR)application/resource/
+SOURCE_PATH          :=   $(THIS_DIR)application/source/
+WEB_PATH             :=   $(THIS_DIR)application/web/
+DEPLOYMENT_PATH      :=   $(THIS_DIR)deployment/
+VENDOR_PATH          :=   $(THIS_DIR)deployment/vendor/
+DEVELOPMENT_PATH     :=   $(THIS_DIR)development/
+SCRIPTS_PATH         :=   $(THIS_DIR)development/scripts/
+DOCUMENTATION_PATH   :=   $(THIS_DIR)documentation/
+
+## Build path
+BUILD_PATH            =   $(THIS_DIR)deployment/build/
+
+
+#############################################################################################
+#############################################################################################
+##
+## DEPENDENCIES (JEKYLL, MINERVA, ...)
+##
+#############################################################################################
+#############################################################################################
+
+
+#############################################################################################
+#############################################################################################
+##
+## PROJECT-DEFINITIONS
+##
+#############################################################################################
+#############################################################################################
+
+
+
+#############################################################################################
+#############################################################################################
+##
+## PROJECT-TARGETS
+##
+#############################################################################################
+#############################################################################################
+
+ 
+
+#############################################################################################
+#############################################################################################
+##
+## DIRECTORIES
+##
+#############################################################################################
+#############################################################################################
+
+
+#############################################################################################
+#############################################################################################
+##
+## PROJECT-TARGETS
+##
+#############################################################################################
+#############################################################################################
+
+compile: 
+	echo "Compiling for every OS and Platform"
+	GOOS=linux GOARCH=arm $(GO) build -o $(BUILD_PATH)/reqman-linux-arm main.go
+	GOOS=linux GOARCH=arm32 $(GO) build -o $(BUILD_PATH)/reqman-linux-arm32 main.go
+	GOOS=linux GOARCH=arm64 $(GO) build -o $(BUILD_PATH)/reqman-linux-arm64 main.go
+	GOOS=freebsd GOARCH=386 $(GO) build -o $(BUILD_PATH)/reqman-freebsd-386 main.go
\ No newline at end of file
diff --git a/README.md b/README.md
index 6aa7a024236848558ad7ff0ecd3aaecf68d03f6f..f04569adb31eb30f6d3e2a1c78747876069ce514 100644
--- a/README.md
+++ b/README.md
@@ -1,92 +1,11 @@
 # Requirements Manager
 
+This tool helps to manage requirements written in Markdown.
 
+### Create Table
 
-## Getting started
-
-To make it easy for you to get started with GitLab, here's a list of recommended next steps.
-
-Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
-
-## Add your files
-
-- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
-- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
-
-```
-cd existing_repo
-git remote add origin https://gitlab.schukai.com/oss/libraries/go/utilities/requirements-manager.git
-git branch -M master
-git push -uf origin master
+```bash
+requirements-manger table 
 ```
 
-## Integrate with your tools
-
-- [ ] [Set up project integrations](https://gitlab.schukai.com/oss/libraries/go/utilities/requirements-manager/-/settings/integrations)
-
-## Collaborate with your team
-
-- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
-- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
-- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
-- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
-- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
-
-## Test and Deploy
-
-Use the built-in continuous integration in GitLab.
-
-- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
-- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
-- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
-- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
-- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
-
-***
-
-# Editing this README
-
-When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!).  Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
-
-## Suggestions for a good README
-Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
-
-## Name
-Choose a self-explaining name for your project.
-
-## Description
-Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
-
-## Badges
-On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
-
-## Visuals
-Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
-
-## Installation
-Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
-
-## Usage
-Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
-
-## Support
-Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
-
-## Roadmap
-If you have ideas for releases in the future, it is a good idea to list them in the README.
-
-## Contributing
-State if you are open to contributions and what your requirements are for accepting them.
-
-For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
-
-You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
-
-## Authors and acknowledgment
-Show your appreciation to those who have contributed to the project.
-
-## License
-For open source projects, say how it is licensed.
 
-## Project status
-If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
diff --git a/application/source/config.go b/application/source/config.go
new file mode 100644
index 0000000000000000000000000000000000000000..8829bc907fe2b278882aef12c45e4643695af189
--- /dev/null
+++ b/application/source/config.go
@@ -0,0 +1,197 @@
+package main
+
+import (
+	"fmt"
+	"os"
+	"os/user"
+	"path"
+
+	"github.com/jessevdk/go-flags"
+	"gopkg.in/yaml.v3"
+)
+
+const exitCodeParseArgumentError = 2
+
+type configPathsStruct struct {
+	current string
+	user    string
+	main    string
+}
+
+var (
+	configPaths = configPathsStruct{
+		main: "/etc/requirements-manager/config.yaml",
+	}
+)
+
+// Exporting interface instead of struct
+//type Configuration interface{}
+
+// Configuration
+type Configuration struct {
+	Path string `yaml:"path"`
+
+	Locale struct {
+		DateFormat string `yaml:"date-format"`
+	} `yaml:"Locale"`
+
+	Table struct {
+		Columns []string `yaml:"columns"`
+	} `yaml:"table"`
+
+	Overview struct {
+		Template string `yaml:"columns"`
+	} `yaml:"overview"`
+}
+
+func fileExists(name string) (found bool) {
+	if f, err := os.Stat(name); err == nil {
+		return f.Mode().IsRegular()
+	}
+	return false
+}
+
+type commandLineOptions struct {
+	Path       string `short:"p" long:"path" description:"define the path where the specifications are located" default:"."`
+	DateFormat string `short:"f" long:"date-format" description:"date format" default:"2006-01-02"`
+	Meta       struct {
+		Print struct {
+			Columns []string `short:"c" long:"column" description:"defines the columns used"`
+		} `command:"print"`
+	} `command:"meta"`
+	ToDos struct {
+		Print struct {
+		} `command:"print"`
+	} `command:"todos"`
+	Items struct {
+		Print struct {
+		} `command:"print"`
+	} `command:"items"`
+	Overview struct {
+		Print struct {
+			Columns      []string `short:"c" long:"column" description:"defines the columns used"`
+			TemplatePath string   `short:"t" long:"template" description:"file name of the template of the overview page"`
+		} `command:"print"`
+	} `command:"overview"`
+	Version struct {
+	} `command:"version"`
+}
+
+// NewConfiguration
+func NewConfiguration() (*flags.Command, *commandLineOptions, *Configuration) {
+
+	arguments := new(commandLineOptions)
+	p := flags.NewParser(arguments, flags.Default)
+	_, err := p.Parse()
+	if err != nil {
+		os.Exit(-1)
+	}
+
+	current, err := os.Getwd()
+	if err != nil {
+		panic(err)
+	}
+
+	filename := path.Clean(current + "/config.yaml")
+
+	cfg := Configuration{}
+
+	usr, err := user.Current()
+	if err == nil {
+		configPaths.user = usr.HomeDir + "/.config/requirements-manager/config.yaml"
+	}
+
+	switch {
+	case fileExists(filename):
+		readFile(&cfg, filename)
+	case err == nil && fileExists(current):
+		readFile(&cfg, current)
+	case fileExists(configPaths.user):
+		readFile(&cfg, configPaths.user)
+	case fileExists(configPaths.main):
+		readFile(&cfg, configPaths.main)
+	}
+
+	//readEnv(&cfg)
+
+	if arguments.Path != "" {
+		cfg.Path = arguments.Path
+	}
+
+	if arguments.DateFormat != "" {
+		cfg.Locale.DateFormat = arguments.DateFormat
+	}
+
+	activeCommand := p.Command.Active
+
+	switch activeCommand.Name {
+
+	case "version":
+
+	case "overview":
+		subcommand := activeCommand.Active
+		switch subcommand.Name {
+		case "print":
+
+			if len(arguments.Overview.Print.Columns) > 0 {
+				cfg.Table.Columns = validateColumns(arguments.Overview.Print.Columns)
+			}
+
+			if arguments.Overview.Print.TemplatePath != "" {
+				dat, err := os.ReadFile(arguments.Overview.Print.TemplatePath)
+				if err != nil {
+					printErrorAndExit(exitCodeCatchAll, "the specified template "+arguments.Overview.Print.TemplatePath+" was not found.")
+				}
+				fmt.Print(string(dat))
+			}
+		}
+	case "meta":
+		subcommand := activeCommand.Active
+		switch subcommand.Name {
+		case "print":
+			if len(arguments.Meta.Print.Columns) > 0 {
+				cfg.Table.Columns = validateColumns(arguments.Meta.Print.Columns)
+			}
+		}
+	}
+
+	return p.Command.Active, arguments, &cfg
+}
+
+func validateColumns(columns []string) []string {
+
+	// VALIDATE COLUMS NAME
+
+	//
+	//for _, name := range config.Meta.Columns {
+	//
+	//	field := reflect.Indirect(r).FieldByName(name)
+	//	if field == (reflect.Value{}) {
+	//		printError("the specified column " + name + " for the table does not exist")
+	//		continue
+
+	//	}
+
+	return columns
+
+}
+
+func processError(err error) {
+	fmt.Println(err)
+	os.Exit(2)
+}
+
+func readFile(cfg *Configuration, filename string) {
+	f, err := os.Open(filename)
+	if err != nil {
+		processError(err)
+	}
+
+	defer f.Close()
+
+	decoder := yaml.NewDecoder(f)
+	err = decoder.Decode(cfg)
+	if err != nil {
+		processError(err)
+	}
+}
diff --git a/application/source/config_test.go b/application/source/config_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..000e4f0ec794358520b43fb4c767c46b130419e5
--- /dev/null
+++ b/application/source/config_test.go
@@ -0,0 +1,10 @@
+package main
+
+import "testing"
+
+func TestNewConfiguration(t *testing.T) {
+	command, _, _ := NewConfiguration()
+	if command.Name == "test" {
+		t.Errorf("Command name was incorrect, got: %s, want: %d.", command.Name, 10)
+	}
+}
diff --git a/application/source/const.go b/application/source/const.go
new file mode 100644
index 0000000000000000000000000000000000000000..b9c15c9ca9a2cc281980ec7c6cdee79f457f1efb
--- /dev/null
+++ b/application/source/const.go
@@ -0,0 +1,9 @@
+package main
+
+const exitOK = 0
+
+// - Catchall for general errors
+const exitCodeCatchAll = 1
+
+// Invalid argument to exit
+const exitCodeInvalidArgument = 128
diff --git a/application/source/files.go b/application/source/files.go
new file mode 100644
index 0000000000000000000000000000000000000000..e0fc797b27f0e89476cdc43f94324a41dadb5c6b
--- /dev/null
+++ b/application/source/files.go
@@ -0,0 +1,89 @@
+package main
+
+import (
+	"errors"
+	"io/ioutil"
+	"os"
+	"path"
+	"path/filepath"
+	"strings"
+
+	"gopkg.in/yaml.v3"
+)
+
+//
+func GetPageData(directory string) (error, []pageData) {
+
+	cleanedDirectory := path.Clean(directory)
+	pageDataList := []pageData{}
+
+	err := filepath.Walk(cleanedDirectory,
+		func(current string, info os.FileInfo, err error) error {
+			if err != nil {
+				return err
+			}
+
+			cleanedPath := path.Clean(current)
+
+			if !info.IsDir() {
+
+				content, err := ioutil.ReadFile(cleanedPath)
+
+				if err != nil {
+					return err
+				}
+
+				err, p := importData(content)
+
+				if err != nil {
+					printError(cleanedPath + " does not contain a valid yaml definition")
+					return nil
+				}
+
+				bd := []byte(cleanedDirectory)
+				bp := []byte(cleanedPath)
+				bs := string(bp[len(bd):len(bp)])
+
+				p.File = "." + bs
+				p.Absolute = cleanedPath
+				p.ToDos = findToDos(content)
+				//pageData[cleanedPath] = pageData
+
+				pageDataList = append(pageDataList, p)
+
+			}
+
+			return nil
+		})
+
+	return err, pageDataList
+}
+
+func importData(content []byte) (error, pageData) {
+
+	data := pageData{}
+
+	s := string(content)
+	a := strings.Index(s, "\n---")
+	if a == -1 {
+		return errors.New("the file does not contain a definition block"), pageData{}
+	}
+	s = s[a+4 : len(s)-1]
+	b := strings.Index(s, "\n...")
+
+	if b == -1 {
+		b = strings.Index(s, "\n---")
+	}
+
+	if b > -1 {
+		s = s[0:b]
+	}
+
+	err := yaml.Unmarshal([]byte(s), &data)
+
+	if err != nil {
+		return err, pageData{}
+	}
+
+	return nil, data
+}
diff --git a/application/source/go.mod b/application/source/go.mod
new file mode 100644
index 0000000000000000000000000000000000000000..2c19d654f33e4ceab288cc0b9e414a4180e58def
--- /dev/null
+++ b/application/source/go.mod
@@ -0,0 +1,23 @@
+module gitlab.schukai.com/oss/utilities/requirements-manager
+
+go 1.18
+
+require (
+	github.com/gookit/color v1.5.0
+	github.com/jessevdk/go-flags v1.5.0
+	github.com/olekukonko/tablewriter v0.0.5
+	go.uber.org/zap v1.21.0
+	golang.org/x/text v0.3.7
+	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
+)
+
+require (
+	github.com/mattn/go-runewidth v0.0.9 // indirect
+	github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
+	go.uber.org/atomic v1.9.0 // indirect
+	go.uber.org/multierr v1.8.0 // indirect
+	golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect
+	golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886 // indirect
+	golang.org/x/tools v0.1.10 // indirect
+	golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
+)
diff --git a/application/source/go.sum b/application/source/go.sum
new file mode 100644
index 0000000000000000000000000000000000000000..a888c8dfe1b17ed9342bbc319b9f486391a9427d
--- /dev/null
+++ b/application/source/go.sum
@@ -0,0 +1,84 @@
+github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
+github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/gookit/color v1.5.0 h1:1Opow3+BWDwqor78DcJkJCIwnkviFi+rrOANki9BUFw=
+github.com/gookit/color v1.5.0/go.mod h1:43aQb+Zerm/BWh2GnrgOQm7ffz7tvQXEKV6BFMl7wAo=
+github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
+github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
+github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
+github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
+github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
+github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
+github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8=
+github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs=
+github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
+go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI=
+go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
+go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
+go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8=
+go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
+go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8=
+go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE=
+golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886 h1:eJv7u3ksNXoLbGSKuv2s/SIO4tJVxc/A+MTpzxDgz/Q=
+golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/application/source/items.go b/application/source/items.go
new file mode 100644
index 0000000000000000000000000000000000000000..de74d60056bbfcab4a90b566901a7ff10ff1ea5f
--- /dev/null
+++ b/application/source/items.go
@@ -0,0 +1,69 @@
+package main
+
+import (
+	"bytes"
+	"fmt"
+	"time"
+
+	"github.com/olekukonko/tablewriter"
+)
+
+type Item struct {
+	Group         string    `yaml:"Group"`
+	Description   string    `yaml:"Description"`
+	DeliveryUntil time.Time `yaml:"Delivery until"`
+	providedOn    time.Time `yaml:"Provided on"`
+	providedBy    string    `yaml:"Provided by"`
+}
+
+func buildItemTable(config *Configuration, pageDataList []pageData) (error, string) {
+
+	buf := new(bytes.Buffer)
+
+	table := tablewriter.NewWriter(buf)
+
+	table.SetHeader([]string{"Group", "Description", "Delivery until", "Provided on", "Provided by", "File"})
+	table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false})
+	table.SetCenterSeparator("|")
+
+	var tableData [][]string
+
+	for _, pageData := range pageDataList {
+		for _, info := range pageData.Items {
+
+			var db, do string
+
+			if info.DeliveryUntil.IsZero() {
+				db = "—"
+			} else {
+				db = info.DeliveryUntil.Format(config.Locale.DateFormat)
+			}
+			if info.providedOn.IsZero() {
+				db = "—"
+			} else {
+				db = info.providedOn.Format(config.Locale.DateFormat)
+			}
+
+			tableData = append(tableData, []string{info.Group, info.Description, db, do, info.providedBy, pageData.File})
+		}
+
+	}
+
+	table.AppendBulk(tableData) // Add Bulk Data
+	table.SetHeaderAlignment(tablewriter.ALIGN_LEFT)
+	table.Render()
+
+	return nil, buf.String()
+}
+
+func printItemTable(config *Configuration) error {
+	err, pageData := GetPageData(config.Path)
+	if err != nil {
+		return err
+	}
+
+	err, table := buildItemTable(config, pageData)
+	fmt.Println(table)
+
+	return nil
+}
diff --git a/application/source/l10n.go b/application/source/l10n.go
new file mode 100644
index 0000000000000000000000000000000000000000..bdd21fec38c849740a70eb96d17e51b221cd54c4
--- /dev/null
+++ b/application/source/l10n.go
@@ -0,0 +1,46 @@
+package main
+
+import (
+	"golang.org/x/text/language"
+	"golang.org/x/text/message"
+	"golang.org/x/text/message/catalog"
+)
+
+type l10nEntry struct {
+	tag, key string
+	msg      interface{}
+}
+
+var l10nEntries = [...]l10nEntry{
+	{"en", "ToDo", "ToDo"},
+	{"en", "Due", "Due"},
+	{"en", "File", "File"},
+	{"de", "ToDo", "Aufgabe"},
+	{"de", "Due", "Erledigen bis"},
+	{"de", "File", "Datei"},
+
+	//{"en", "%d task(s) remaining!", plural.Selectf(1, "%d",
+	//	"=1", "One task remaining!",
+	//	"=2", "Two tasks remaining!",
+	//	"other", "[1]d tasks remaining!",
+	//)},
+	//{"el", "%d task(s) remaining!", plural.Selectf(1, "%d",
+	//	"=1", "Μία εργασία έμεινε!",
+	//	"=2", "Μια-δυο εργασίες έμειναν!",
+	//	"other", "[1]d εργασίες έμειναν!",
+	//)},
+}
+
+func initL10n() {
+	for _, e := range l10nEntries {
+		tag := language.MustParse(e.tag)
+		switch msg := e.msg.(type) {
+		case string:
+			message.SetString(tag, e.key, msg)
+		case catalog.Message:
+			message.Set(tag, e.key, msg)
+		case []catalog.Message:
+			message.Set(tag, e.key, msg...)
+		}
+	}
+}
diff --git a/application/source/locales/en-US/out.gotext.json b/application/source/locales/en-US/out.gotext.json
new file mode 100644
index 0000000000000000000000000000000000000000..da451f7bab1f94eb74ce0950a42d5886aee5fd64
--- /dev/null
+++ b/application/source/locales/en-US/out.gotext.json
@@ -0,0 +1,4 @@
+{
+    "language": "en-US",
+    "messages": null
+}
\ No newline at end of file
diff --git a/application/source/main.go b/application/source/main.go
new file mode 100644
index 0000000000000000000000000000000000000000..d34bea46b538db5d566367a27d82596df4bc66ae
--- /dev/null
+++ b/application/source/main.go
@@ -0,0 +1,93 @@
+package main
+
+import (
+	"fmt"
+
+	"golang.org/x/text/message"
+)
+
+// Wird beim Bauen per
+// -ldflags "-X main.version=$app_version -X main.build=$(due --iso-8601 | tr -d "-" )"
+// gesetzt
+var (
+	version string
+	build   string
+	printer *message.Printer
+	//sugar   *zap.SugaredLogger
+)
+
+func init() {
+	printer = message.NewPrinter(message.MatchLanguage("de"))
+	initEnvironment()
+	initL10n()
+
+	//initLogger()
+}
+
+//func initLogger() {
+//	logger, _ := zap.NewDevelopment()
+//	defer logger.Sync() // flushes buffer, if any
+//
+//	sugar = logger.Sugar()
+//	sugar.Infow("failed to fetch URL")
+//}
+
+func initEnvironment() {
+}
+
+/**
+ */
+func main() {
+
+	activeCommand, _, config := NewConfiguration()
+
+	version = "development"
+	build = "1.1.1"
+	//
+	switch activeCommand.Name {
+
+	case "version":
+		fmt.Println("Version " + version + " (" + build + ")")
+	case "overview":
+		subcommand := activeCommand.Active
+		switch subcommand.Name {
+		case "print":
+			err := PrintOverview(config)
+			if err != nil {
+				printErrorAndExit(2, err.Error())
+			}
+		}
+
+	case "meta":
+		subcommand := activeCommand.Active
+		switch subcommand.Name {
+		case "print":
+			err := printMeta(config)
+			if err != nil {
+				printErrorAndExit(2, err.Error())
+			}
+		}
+
+	case "todos":
+		subcommand := activeCommand.Active
+		switch subcommand.Name {
+		case "print":
+			err := printToDoTable(config)
+			if err != nil {
+				printErrorAndExit(2, err.Error())
+			}
+		}
+
+	case "items":
+		subcommand := activeCommand.Active
+		switch subcommand.Name {
+		case "print":
+			err := printItemTable(config)
+			if err != nil {
+				printErrorAndExit(2, err.Error())
+			}
+		}
+
+	}
+
+}
diff --git a/application/source/message.go b/application/source/message.go
new file mode 100644
index 0000000000000000000000000000000000000000..6f5c04a354ae1d0a67b8673d9c69b0362ae23d29
--- /dev/null
+++ b/application/source/message.go
@@ -0,0 +1,29 @@
+package main
+
+import (
+	"os"
+
+	"github.com/gookit/color"
+)
+
+var lastBlock string
+
+// print error
+func printErrorAndExit(code int, message string) {
+	printError(message)
+	if code == 0 {
+		code = exitCodeCatchAll
+	}
+	os.Exit(code)
+}
+
+func printError(message string) {
+
+	if lastBlock == "error" {
+		color.Error.Println(" " + message)
+		return
+	}
+	lastBlock = "error"
+
+	color.Error.Block(message)
+}
diff --git a/application/source/meta.go b/application/source/meta.go
new file mode 100644
index 0000000000000000000000000000000000000000..3f9ae24165eceee1ed6542a17348167c74eb43e9
--- /dev/null
+++ b/application/source/meta.go
@@ -0,0 +1,91 @@
+package main
+
+import (
+	"bytes"
+	"fmt"
+	"reflect"
+
+	"github.com/olekukonko/tablewriter"
+)
+
+func buildMeta(config *Configuration, pageDataList []pageData) (error, string) {
+
+	buf := new(bytes.Buffer)
+
+	table := tablewriter.NewWriter(buf)
+
+	table.SetHeader(config.Table.Columns)
+	table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false})
+	table.SetCenterSeparator("|")
+
+	var tableData [][]string
+
+	for _, pd := range pageDataList {
+
+		r := reflect.ValueOf(pd)
+
+		var row []string
+		found := false
+		for _, name := range config.Table.Columns {
+
+			field := reflect.Indirect(r).FieldByName(name)
+			if field == (reflect.Value{}) {
+				row = append(row, "")
+				continue
+			}
+
+			t := field.Type()
+
+			switch t.Name() {
+			case "string":
+				found = true
+				row = append(row, field.String())
+			case "int":
+				found = true
+				row = append(row, field.String())
+			case "float64":
+				found = true
+				row = append(row, field.String())
+			case "nil":
+				row = append(row, field.String())
+			case "bool":
+				found = true
+				expr := field.Bool()
+				if expr {
+					row = append(row, "true")
+				} else {
+					row = append(row, "false")
+				}
+
+			default:
+				row = append(row, "")
+			}
+
+		}
+
+		if found {
+			tableData = append(tableData, row)
+		}
+
+	}
+
+	table.AppendBulk(tableData) // Add Bulk Data
+	table.SetHeaderAlignment(tablewriter.ALIGN_LEFT)
+	table.Render()
+
+	return nil, buf.String()
+
+}
+
+func printMeta(config *Configuration) error {
+	err, pageData := GetPageData(config.Path)
+	if err != nil {
+		return err
+	}
+
+	err, table := buildMeta(config, pageData)
+
+	fmt.Println(table)
+
+	return err
+}
diff --git a/application/source/overview.go b/application/source/overview.go
new file mode 100644
index 0000000000000000000000000000000000000000..761b26bb9f8a0b46b17641340dd089266bc1bb88
--- /dev/null
+++ b/application/source/overview.go
@@ -0,0 +1,42 @@
+package main
+
+import (
+	"html/template"
+	"os"
+)
+
+type Dataset struct {
+	Config *Configuration
+	Meta   string
+}
+
+func PrintOverview(config *Configuration) error {
+
+	err, pageData := GetPageData(config.Path)
+	if err != nil {
+		return err
+	}
+
+	err, meta := buildMeta(config, pageData)
+	if err != nil {
+		return err
+	}
+
+	t, err := template.New("overview").Parse("You have a task named\n{{ .Meta}} ")
+	if err != nil {
+		return err
+	}
+
+	d := new(Dataset)
+	d.Meta = meta
+	d.Config = config
+	//d.pageData = pageData
+
+	err = t.Execute(os.Stdout, d)
+	if err != nil {
+		return err
+	}
+
+	return nil
+
+}
diff --git a/application/source/pagedata.go b/application/source/pagedata.go
new file mode 100644
index 0000000000000000000000000000000000000000..10b6248a43c70f041006eb9736a14ffc79d1584b
--- /dev/null
+++ b/application/source/pagedata.go
@@ -0,0 +1,25 @@
+package main
+
+import "time"
+
+type pageData struct {
+	ToDos    []toDo
+	Absolute string
+	File     string
+
+	ID         string    `yaml:"ID"`
+	Type       string    `yaml:"Type"` // Display, Functional, Performance, Printing, Report, Testing and Validate
+	Title      string    `yaml:"Title"`
+	Alias      []string  `yaml:"Alias"`
+	Keywords   []string  `yaml:"Keywords"`
+	Author     string    `yaml:"Author"`
+	Status     string    `yaml:"Status"`
+	Complexity string    `yaml:"Complexity"`
+	Difficulty string    `yaml:"Difficulty"` // Low, Medium, High
+	Priority   string    `yaml:"Priority"`   // Low, Medium, High
+	Version    string    `yaml:"Version"`
+	Milestone  string    `yaml:"Milestone"`
+	Created    time.Time `yaml:"Created"`
+	LastUpdate time.Time `yaml:"Last Update"`
+	Items      []Item    `yaml:"items"`
+}
diff --git a/application/source/run.go b/application/source/run.go
new file mode 100644
index 0000000000000000000000000000000000000000..8e9f1e0a845b4df5ccb23be020ddedc420b22b61
--- /dev/null
+++ b/application/source/run.go
@@ -0,0 +1,40 @@
+package main
+
+import (
+	"bytes"
+	"log"
+	"os/exec"
+	"syscall"
+)
+
+func runCommand(name string, args ...string) (stdout string, stderr string, exitCode int) {
+	var outbuf, errbuf bytes.Buffer
+
+	cmd := exec.Command(name, args...)
+	cmd.Stdout = &outbuf
+	cmd.Stderr = &errbuf
+
+	err := cmd.Run()
+	stdout = outbuf.String()
+	stderr = errbuf.String()
+
+	if err != nil {
+		// try to get the exit code
+		if exitError, ok := err.(*exec.ExitError); ok {
+			ws := exitError.Sys().(syscall.WaitStatus)
+			exitCode = ws.ExitStatus()
+		} else {
+			log.Printf("Could not get exit code for failed program: %v, %v", name, args)
+			exitCode = exitCodeCatchAll
+			if stderr == "" {
+				stderr = err.Error()
+			}
+		}
+	} else {
+		// success, exitCode should be 0 if go is ok
+		ws := cmd.ProcessState.Sys().(syscall.WaitStatus)
+		exitCode = ws.ExitStatus()
+	}
+
+	return
+}
diff --git a/application/source/todo.go b/application/source/todo.go
new file mode 100644
index 0000000000000000000000000000000000000000..4bfd2e03df582403524de1f144f617619ea88793
--- /dev/null
+++ b/application/source/todo.go
@@ -0,0 +1,107 @@
+package main
+
+import (
+	"bytes"
+	"fmt"
+	"regexp"
+	"time"
+
+	"github.com/olekukonko/tablewriter"
+)
+
+type toDo struct {
+	due  time.Time
+	text string
+}
+
+const dateLayout = "2006-01-02 15:04:05 GMT"
+
+func newToDo(date string, text string) toDo {
+
+	d, err := time.Parse(dateLayout, date+" 00:00:00 GMT")
+	if err != nil {
+		printError("the due " + date + " of the todo " + text + " cannot be parsed.")
+	}
+
+	t := toDo{
+		due:  d,
+		text: text,
+	}
+
+	return t
+}
+
+func findToDos(content []byte) []toDo {
+
+	toDos := []toDo{}
+
+	todoRegEx := regexp.MustCompile(`@todo\s*(?P<due>[2][0-9]{3}-[0-9]{2}-[0-9]{2}\s*){0,1}(?P<text>[^\n]*)`)
+
+	s := string(content)
+	matches := todoRegEx.FindAllStringSubmatch(s, -1)
+	if matches == nil {
+		return []toDo{}
+	}
+
+	for _, match := range matches {
+		result := make(map[string]string)
+		for i, name := range todoRegEx.SubexpNames() {
+			if i != 0 && name != "" {
+				result[name] = match[i]
+			}
+		}
+
+		t := newToDo(result["due"], result["text"])
+		toDos = append(toDos, t)
+
+	}
+
+	return toDos
+}
+
+func buildToDosTable(config *Configuration, pageDataList []pageData) (error, string) {
+
+	buf := new(bytes.Buffer)
+
+	table := tablewriter.NewWriter(buf)
+
+	table.SetHeader([]string{printer.Sprint("ToDo"), printer.Sprint("Due"), printer.Sprint("File")})
+	table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false})
+	table.SetCenterSeparator("|")
+
+	var tableData [][]string
+
+	for _, pageData := range pageDataList {
+		for _, info := range pageData.ToDos {
+
+			var d string
+
+			if info.due.IsZero() {
+				d = "—"
+			} else {
+				d = info.due.Format(config.Locale.DateFormat)
+			}
+
+			tableData = append(tableData, []string{info.text, d, pageData.File})
+		}
+
+	}
+
+	table.AppendBulk(tableData) // Add Bulk Data
+	table.SetHeaderAlignment(tablewriter.ALIGN_LEFT)
+	table.Render()
+
+	return nil, buf.String()
+}
+
+func printToDoTable(config *Configuration) error {
+	err, pageData := GetPageData(config.Path)
+	if err != nil {
+		return err
+	}
+
+	err, table := buildToDosTable(config, pageData)
+	fmt.Println(table)
+
+	return nil
+}
diff --git a/deployment/build/go_build_requirements_manager_and_run_print_items b/deployment/build/go_build_requirements_manager_and_run_print_items
new file mode 100755
index 0000000000000000000000000000000000000000..b5de84f59b3657125be4d6da3d85e51da5e64884
Binary files /dev/null and b/deployment/build/go_build_requirements_manager_and_run_print_items differ
diff --git a/deployment/build/go_build_requirements_manager_and_run_print_overview b/deployment/build/go_build_requirements_manager_and_run_print_overview
new file mode 100755
index 0000000000000000000000000000000000000000..d1733397169a05db9d27537e6e6b38928b46f061
Binary files /dev/null and b/deployment/build/go_build_requirements_manager_and_run_print_overview differ
diff --git a/deployment/build/go_build_requirements_manager_and_run_print_todo b/deployment/build/go_build_requirements_manager_and_run_print_todo
new file mode 100755
index 0000000000000000000000000000000000000000..d0b990817bd946848d2c7fe0e6168e3184050455
Binary files /dev/null and b/deployment/build/go_build_requirements_manager_and_run_print_todo differ
diff --git a/deployment/docker/Dockerfile b/deployment/docker/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..2c32321b38bf7d1d22812590fb8104e8e013878a
--- /dev/null
+++ b/deployment/docker/Dockerfile
@@ -0,0 +1,38 @@
+FROM golang:1.8
+
+# Set necessary environmet variables needed for our image
+ENV GO111MODULE=on \
+    CGO_ENABLED=0 \
+    GOOS=linux \
+    GOARCH=amd64 \
+    GOPRIVATE="gitlab.schukai.com" \
+    GONOPROXY="gitlab.schukai.com" \
+    GIT_TERMINAL_PROMPT=1
+
+# Move to working directory /build
+WORKDIR /build
+
+#RUN go get -u github.com/gobuffalo/packr/packr && \
+#    go get -u github.com/gobuffalo/packr
+#
+COPY ./source ./source
+#COPY ./web ./web
+#COPY ./resource ./resource
+
+WORKDIR /build/source
+
+# Build the application
+# production or empty
+ARG app_mode
+ENV APP_MODE $app_mode
+
+ARG app_version=snapshot
+ENV APP_VERSION $app_version
+
+# -ldflags "-X main.version ... setzt die Variablen in dem Dockerfile
+RUN --mount=type=cache,target=/root/.cache/go-build \
+   GOOS=${TARGETOS} GOARCH=${TARGETARCH} \
+   go get -v -d ./...  && go install -v ./... && \
+   packr -v build \
+   -ldflags "-X main.version=$app_version -X main.build=$(date --iso-8601 | tr -d "-" )" \
+   -o /build/juno && packr clean
\ No newline at end of file
diff --git a/development/examples/example1/overview.template b/development/examples/example1/overview.template
new file mode 100644
index 0000000000000000000000000000000000000000..0e06eee79d455ccc1c6ef23baf5544ffeeff810c
--- /dev/null
+++ b/development/examples/example1/overview.template
@@ -0,0 +1,3 @@
+
+
+TEMPLATE
\ No newline at end of file
diff --git a/development/examples/example1/req1/1425.md b/development/examples/example1/req1/1425.md
new file mode 100644
index 0000000000000000000000000000000000000000..b463849a5025ff3f0cb94080987931ba654ad910
--- /dev/null
+++ b/development/examples/example1/req1/1425.md
@@ -0,0 +1,29 @@
+
+
+
+
+---
+Title: Value1
+Created: 2022-02-21
+Version: Value1
+ID: 9999
+---
+
+das ist ein test
+
+
+@todo das ist das erste todo 1
+@todo 2020-12-02 das ist das erste todo 2
+@todo 2020-12-03 das ist das erste todo 3 
+
+
+
+
+# Headline
+## Headline 1
+
+Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
+
+## Headline 2
+
+Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
diff --git a/development/examples/example1/req1/1426.md b/development/examples/example1/req1/1426.md
new file mode 100644
index 0000000000000000000000000000000000000000..d917e557603c24826db210470f05c1cef6f4781e
--- /dev/null
+++ b/development/examples/example1/req1/1426.md
@@ -0,0 +1,26 @@
+
+
+
+
+---
+Key1: Value1
+Title: My Name
+Created: 2022-02-21
+Version: 2.0.2
+ID: 23423
+---
+
+# Headline
+## Headline 1
+
+Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
+
+
+@todo 2020-12-01 das ist das erste todo 1
+@todo 2020-12-02 das ist das erste todo 2
+@todo 2020-12-03 das ist das erste todo 3
+
+
+## Headline 2
+
+Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
diff --git a/development/examples/example1/req2/test1.md b/development/examples/example1/req2/test1.md
new file mode 100644
index 0000000000000000000000000000000000000000..38165c28cbbf066b5fdc6b0701cf4a42442e4a1a
--- /dev/null
+++ b/development/examples/example1/req2/test1.md
@@ -0,0 +1,37 @@
+
+
+
+---
+ID: 22.5
+title: Test 1
+subtitle: this is test 1
+tags: [fruit, sweet, tasty]
+percent: 100 %
+list:
+    - entry 1
+    - entry 2
+    - entry 3
+items:
+    -
+        Group: Zielgruppendefinition
+        Description: Zielgruppendefinition
+        Delivery until: 2022-12-12
+        Provided by: Me
+        Provided on: 2022-12-01
+
+    -
+        Group: Logo (klein)
+        Description: offen
+
+...
+
+
+# Headline
+
+## Headline 1
+
+Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
+
+## Headline 2
+
+Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
diff --git a/requirements-manager.iml b/requirements-manager.iml
new file mode 100644
index 0000000000000000000000000000000000000000..49df094a939bad91c791b0986d7e479bcc496640
--- /dev/null
+++ b/requirements-manager.iml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="Go" enabled="true" />
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file