Code Monkey home page Code Monkey logo

adr's Introduction

Architecture Decision Record (ADR)

TL;DR: ADRs are lots of documentation on how Straw Hat Team works.

Overview

ADR stands for Architecture decision record, which is a design document providing high-level, concise documentation for software development. The goal is for these documents to serve as the source of truth for software-related documentation at Straw Hat Team and the way teams discuss and come to consensus on software development guidance.

Getting started

New to ADR?

If you're new to ADRs, check out the Frequently Asked Questions which answer some common questions about how ADRs work and what you need to know.

Genesis ADR

ADR#0000000000 is the genesis ADR.

Have an idea for an ADR?

If you have an idea for an ARD that isn't written yet (yes, there are plenty!) check out Contributing to the project to see how you can write ADRs for others to follow.

License

Except as otherwise noted, the content of this repository is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the MIT License.

adr's People

Contributors

dependabot[bot] avatar tleef avatar yordis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

adr's Issues

[Proposal] Add release environment to all deployment

Release environments for deployments

  • State: Draft
  • Created: 2021-07-25
  • Tags: deployment

Context

We should add an environment variable that allows us to know the release version, either using git commit, version, or whatever we decide TBD, we use this to track the releases of the app, and be able to use that in tracing, logging, error reporters and so on

Resolution

  • TBD

Links

ADR Proposal

[short title of solved problem and solution]

  • State:
  • Replaced by:
  • Deciders:
  • Created:

Context and Problem Statement

Decision Drivers

Considered Options

Option [1]

[example | description | pointer to more information | …]

  • Good, because [argument a]
  • Good, because [argument b]
  • Bad, because [argument c]
  • … numbers of consequences

Decision Outcome

Chosen option: "[option 1]", because [justification. e.g., only option, which
meets k.o. criterion decision driver | which resolves force force | … | comes
out best (see below)].

Advantages

  • [e.g., improvement of quality attribute satisfaction, follow-up decisions
    required, …]

Disadvantages

  • [e.g., compromising quality attribute, follow-up decisions required, …]

Links

[Proposal] Secrets Token Format

[Proposal] OpenAPI Path section

* You **MUST** use underscore to declare dynamic section of a path
* You **MAY** replace the dynamic section of a path following the previous
  rules

[Proposal] Add App versioning tag

Context

How should we come up with some tagging for an app that allows us to use it in places like Sentry, HTTP calls headers, or any other thing that would be important to know which version of the app actually caused the issue, maybe even give customer support teams more insights and have fullstory metadata optimized as well.

Resolution

I am not sure, we should learn from others' good practices, here are some ideas so far of potential information.

  • AppName: identity of the app, for example: my-website
  • Release: identity of the release of the app, for example: d6cd1e2bd19e03a81132a23b2025920577f84e37 (commit sha) or v2.4.3
  • Environment: the environment of the app, for example: environment potentially related to #21

[Proposal] React Component Properties

React Component Properties API

  • State: Draft
  • Created:
  • Tags:

Context

Talk about React Components API:

  • The props should always be named in a way that they always either A) Are states or B) are callbacks;
  • Avoid imperative properties such as setSomething or filterSomething and rather use onSetSomething or onFilterSomething

Resolution

[Proposal] Add CHANGELOG.md header expection

[short title of solved problem and solution]

  • State: Draft
  • Created:
  • Tags:

Context

Improve CHANGELOG.md maintains

Resolution

  • You MUST include the following at the top of the CHANGELOG.md file
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

Links

[Proposal] Add app environments

Add environments to all applications

  • State: Draft
  • Created: 2021-07-25
  • Tags: app, releases

Context

We don't have misalignment configuring environments across applications, this is one of those that we don't need that much freedom, and nowadays most people end up doing the exact same thing

  • development (preview, local dev, branch)
  • staging (trunk branch, customer environment)
  • production (official release)

Resolution

  • You MUST add [PREFIX]_ENVIRONMENT to all your application deployments
  • [PREFIX]_ENVIRONMENT MUST be one of the following values
    • development: when the release is based on a branch deployment, aka. preview deployment
    • staging: trunk branch, deployment before cutting a production release
    • production: the production version of the release

Links

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.