diff --git a/docs/decisions/0000-use-markdown-any-decision-records.md b/docs/decisions/0000-use-markdown-any-decision-records.md new file mode 100644 index 0000000..0edc15d --- /dev/null +++ b/docs/decisions/0000-use-markdown-any-decision-records.md @@ -0,0 +1,26 @@ +# Use Markdown Any Decision Records + +## Context and Problem Statement + +We want to record any decisions made in this project independent whether decisions concern the architecture ("architectural decision record"), the code, or other fields. +Which format and structure should these records follow? + +## Considered Options + +* [MADR](https://adr.github.io/madr/) 3.0.0 – The Markdown Any Decision Records +* [Michael Nygard's template](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions) – The first incarnation of the term "ADR" +* [Sustainable Architectural Decisions](https://www.infoq.com/articles/sustainable-architectural-design-decisions) – The Y-Statements +* Other templates listed at +* Formless – No conventions for file format and structure + +## Decision Outcome + +Chosen option: "MADR 3.0.0", because + +* Implicit assumptions should be made explicit. + Design documentation is important to enable people understanding the decisions later on. + See also [A rational design process: How and why to fake it](https://doi.org/10.1109/TSE.1986.6312940). +* MADR allows for structured capturing of any decision. +* The MADR format is lean and fits our development style. +* The MADR structure is comprehensible and facilitates usage & maintenance. +* The MADR project is vivid. diff --git a/docs/decisions/0001-use-conventional-commits.md b/docs/decisions/0001-use-conventional-commits.md new file mode 100644 index 0000000..baf5df5 --- /dev/null +++ b/docs/decisions/0001-use-conventional-commits.md @@ -0,0 +1,15 @@ +# Adopt Conventional Commits for Git Commit Messages + +## Context and Problem Statement + +Not having agreement on writing Git commit messages lacks consistency and clarity. This makes it difficult to understand the history of changes, automate certain tasks, and generate informative changelogs. We need a standardized format that promotes clear communication and improves collaboration. + +## Considered Options + +* [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) +* Imperative Mood +* Free-form + +## Decision Outcome + +Chosen option: "Conventional Commits", because it provides a structured and standardized format that promotes clarity, consistency, and automation. diff --git a/docs/decisions/0002-use-stytch-for-authentication.md b/docs/decisions/0002-use-stytch-for-authentication.md new file mode 100644 index 0000000..fccb842 --- /dev/null +++ b/docs/decisions/0002-use-stytch-for-authentication.md @@ -0,0 +1,20 @@ +# Use Stytch for Authentication and Authorization + +## Context and Problem Statement + +We need to implement a secure and user-friendly authentication and authorization mechanism in our React/C# application. + +## Decision Drivers +* User Experience: Provide a seamless login/registration experience without redirecting users to external windows. +* Development Efficiency: Minimize backend development effort for authentication and user management. +* Centralized User Management: Manage user accounts and permissions in a centralized location. + +## Considered Options + +* [Stytch](https://stytch.com/) +* [Auth0](https://auth0.com/) +* Custom Implementation + +## Decision Outcome + +Chosen option: "Stytch", because it offers embedded login/registration components, eliminates the need for backend login components, and provides centralized user management capabilities, aligning with our decision drivers. \ No newline at end of file diff --git a/docs/decisions/README.md b/docs/decisions/README.md new file mode 100644 index 0000000..0466406 --- /dev/null +++ b/docs/decisions/README.md @@ -0,0 +1,7 @@ +# Decisions + +This directory contains decision records for {project name}. + +For new ADRs, please use [adr-template.md](adr-template.md) as basis. +More information on MADR is available at . +General information about architectural decision records is available at . diff --git a/docs/decisions/adr-template.md b/docs/decisions/adr-template.md new file mode 100644 index 0000000..054289a --- /dev/null +++ b/docs/decisions/adr-template.md @@ -0,0 +1,79 @@ +--- +# These are optional elements. Feel free to remove any of them. +status: {proposed | rejected | accepted | deprecated | … | superseded by [ADR-0005](0005-example.md)} +date: {YYYY-MM-DD when the decision was last updated} +deciders: {list everyone involved in the decision} +consulted: {list everyone whose opinions are sought (typically subject-matter experts); and with whom there is a two-way communication} +informed: {list everyone who is kept up-to-date on progress; and with whom there is a one-way communication} +--- +# {short title of solved problem and solution} + +## Context and Problem Statement + +{Describe the context and problem statement, e.g., in free form using two to three sentences or in the form of an illustrative story. + You may want to articulate the problem in form of a question and add links to collaboration boards or issue management systems.} + + +## Decision Drivers + +* {decision driver 1, e.g., a force, facing concern, …} +* {decision driver 2, e.g., a force, facing concern, …} +* … + +## Considered Options + +* {title of option 1} +* {title of option 2} +* {title of option 3} +* … + +## Decision Outcome + +Chosen option: "{title of option 1}", because +{justification. e.g., only option, which meets k.o. criterion decision driver | which resolves force {force} | … | comes out best (see below)}. + + +### Consequences + +* Good, because {positive consequence, e.g., improvement of one or more desired qualities, …} +* Bad, because {negative consequence, e.g., compromising one or more desired qualities, …} +* … + + +## Validation + +{describe how the implementation of/compliance with the ADR is validated. E.g., by a review or an ArchUnit test} + + +## Pros and Cons of the Options + +### {title of option 1} + + +{example | description | pointer to more information | …} + +* Good, because {argument a} +* Good, because {argument b} + +* Neutral, because {argument c} +* Bad, because {argument d} +* … + +### {title of other option} + +{example | description | pointer to more information | …} + +* Good, because {argument a} +* Good, because {argument b} +* Neutral, because {argument c} +* Bad, because {argument d} +* … + + +## More Information + +{You might want to provide additional evidence/confidence for the decision outcome here and/or + document the team agreement on the decision and/or + define when this decision when and how the decision should be realized and if/when it should be re-visited and/or + how the decision is validated. + Links to other decisions and resources might here appear as well.} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..82112a9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,17 @@ +{ + "name": "trey-jarjestoportaali", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "madr": "^3.0.0" + } + }, + "node_modules/madr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/madr/-/madr-3.0.0.tgz", + "integrity": "sha512-gb4ML7LGDARy2EY0WT5rxCUJcXvColIbNCeyoxcj3s/p1qdbpD3UsZrC7hkFkwOBukwnzx87Cu81HwTLvisTZg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..385cbce --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "madr": "^3.0.0" + } +}