chore: creating an initial set of documentation

This commit is contained in:
Eric Pattison 2025-03-26 20:17:49 -06:00
commit 043e638743
11 changed files with 123 additions and 0 deletions

23
.gitignore vendored Normal file
View File

@ -0,0 +1,23 @@
# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode
# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode

1
Artifact/spec.md Normal file
View File

@ -0,0 +1 @@
# Coming Soon

1
Build/spec.md Normal file
View File

@ -0,0 +1 @@
# Coming Soon

1
Incident/spec.md Normal file
View File

@ -0,0 +1 @@
# Coming Soon

1
Pipeline/spec.md Normal file
View File

@ -0,0 +1 @@
# Coming Soon

60
README.md Normal file
View File

@ -0,0 +1,60 @@
# Metisyn
Metisyn is a project management ecosystem built out of decoupled components. Each component should provide a core API to make state reqeusts into the system and can be made of multiple event processors to integrate with other components and a UI micro-app to be embeded in the main project UI.
The Metisyn spec defines the expected events. This will allow components to be used independantly, new components to be added over time, or for custom conversion components to allow integrating third-party APIs into the system.
One of the driving ideals behind this project is cloud first, so each component will be made of contanerized subsystems, should support flexibility in data storage technologies, and other clound-native principles and practices.
# Components
Here's a quick summary of the components that make up the metisyn ecosystem, you can get more details under each components link.
## Source
The Source component manages all of the source code repositories that belong to the project. The base implementation will be built on top of git, but systems could be written for other scm systems.
## Pipeline
The Pipeline component is an automation system. It can be used to define complex, customizable processes you need to execute based on events flowing through out the metisyn ecosystem. This will be managed through an event driven flow where the pipeline defines events that need to be processed by other components in the ecosystem.
## Scan
The Scan component is a system capable of providing static code and security analysis tooling into your systems.
## Artifact
The Artifact component is a system to store your artifacts for the project.
## Task
The Task component is used by those working on the project to track tasks being worked on
## Ticket
The Ticket component can be used to track user-reported issues or larger epics of work
## Report
The Report component is a visualization tool to view all aspects of the work
## Incident
The incident component can be used to integrate with monitoring tools to report incidents and alerts
## Build
The Build component is responsible for managing the build processes for your project
# Events
Each component will define the spec specific to messages that component is responsible for emitting, so in this overview section we'll just cover common aspects.
All events will follow the CloudEvent Schema.
Within the CloudEvent payload, the following standards will be used, with all fields required even if the CloudEvent spec defines them as optional:
## Data
The data property, and by extension the datacontenttype, will be application/json
## Type
The type property should always match the pattern "io.metisyn.{component name}.{event type}"
## Id
The Id property should be a UUID, but no specific version is required.
# Time
The Time property should always be UTC
# Source
The Source property should always be the name of the originating application, even if not a metisyn component.
# Subject
The Subject property will be a component specific identifier related to the reason the event was triggered.
For example, each Source component should be able to handle multiple repositories, the subject would be the unique id for the repository that generated the event.

1
Report/spec.md Normal file
View File

@ -0,0 +1 @@
# Coming Soon

1
Scan/spec.md Normal file
View File

@ -0,0 +1 @@
# Coming Soon

32
Source/spec.md Normal file
View File

@ -0,0 +1,32 @@
# Source Events Spec
This document defines the event spec for the Metisyn Source component.
# Cloud Event Fields
This section covers the specifics of the CloudEvent envelope.
## Type
The Type field should always be "io.metisyn.source.{event type}"
Event types will be described below.
## Subject
Each repository in a metisyn project will have a unique identifier. This Id will be generated on repo creation and will not be allowed to change.
It's this Id that will be used as the Subject filed in the cloud event envelope.
## Source
The Source field should always be set to /source/{repo type}
Repo Type should identify the underlying scm system, git for example
# Event Types
## Repo Created
## Repo Archived
## Repo Deleted
## Branch Created
## Commit
## Branch Deleted
## Pull Request Created
## Pull Request Approved
## Pull Request Declined
## Pull Request Updated
## Pull Request Merged

1
Task/spec.md Normal file
View File

@ -0,0 +1 @@
# Coming Soon

1
Ticket/spec.md Normal file
View File

@ -0,0 +1 @@
# Coming Soon