Skip to content

Commit

Permalink
Add adr2
Browse files Browse the repository at this point in the history
  • Loading branch information
milanm committed Jun 18, 2024
1 parent bf2a5c6 commit 231629e
Show file tree
Hide file tree
Showing 4 changed files with 141 additions and 11 deletions.
101 changes: 96 additions & 5 deletions build/docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -565,30 +565,121 @@ <h3 id="_8_3_logging">8.3. Logging</h3>
<h2 id="_9_architecture_decisions_records">9. Architecture Decisions Records</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_9_1_login_decision">9.1. Login decision</h3>
<h3 id="_9_1_adr_001_login_decision">9.1. ADR-001: Login decision</h3>
<div class="sect3">
<h4 id="_9_1_1_context_and_problem_statement">9.1.1. Context and Problem Statement</h4>
<div class="paragraph">
<p>We want to enable user login.</p>
<p>We need to choose an authentication method for user login in our new application. The method should ensure security, ease of use, and scalability while providing a seamless user experience.</p>
</div>
</div>
<div class="sect3">
<h4 id="_9_1_2_considered_options">9.1.2. Considered Options</h4>
<div class="ulist">
<ul>
<li>
<p>Option 1</p>
<p><strong>Option 1</strong>: Traditional Username and Password Authentication</p>
</li>
<li>
<p>Option 2</p>
<p><strong>Option 2</strong>: OAuth 2.0 with Social Login</p>
</li>
<li>
<p><strong>Option 3</strong>: Single Sign-On (SSO) with SAML</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_9_1_3_decision_outcome">9.1.3. Decision Outcome</h4>
<div class="paragraph">
<p>We selected option 1, because X.</p>
<p>We have decided to implement OAuth 2.0 with Social Login.</p>
</div>
<div class="paragraph">
<p><strong>Rationale</strong>:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Security</strong>: OAuth 2.0 is a widely adopted and secure protocol for authorization.</p>
</li>
<li>
<p><strong>User Convenience</strong>: Social login allows users to log in with existing accounts (e.g., Google, Facebook), reducing friction and improving user experience.</p>
</li>
<li>
<p><strong>Scalability</strong>: OAuth 2.0 can handle a large number of users and integrates well with third-party identity providers.</p>
</li>
<li>
<p><strong>Reduced Maintenance</strong>: Leveraging third-party identity providers reduces the burden of managing user credentials and security.</p>
</li>
<li>
<p><strong>Adoption and Integration</strong>: Many users prefer using their social accounts for quick access, and many modern applications support OAuth 2.0, making it easier to integrate with other services.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_9_2_adr_002_technology_selection">9.2. ADR-002: Technology selection</h3>
<div class="sect3">
<h4 id="_9_2_1_context_and_problem_statement">9.2.1. Context and Problem Statement</h4>
<div class="paragraph">
<p>We need to choose a technology stack for developing our new web application. The application requires a robust backend, an interactive frontend, and seamless integration with third-party services.</p>
</div>
</div>
<div class="sect3">
<h4 id="_9_2_2_considered_options">9.2.2. Considered Options</h4>
<div class="ulist">
<ul>
<li>
<p><strong>Option 1</strong>: Node.js with Express, React.js, PostgreSQL, AWS</p>
</li>
<li>
<p><strong>Option 2</strong>: Python with Django, Angular, MySQL, Google Cloud Platform</p>
</li>
<li>
<p><strong>Option 3</strong>: Ruby on Rails, Vue.js, MongoDB, Microsoft Azure</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_9_2_3_decision_outcome">9.2.3. Decision Outcome</h4>
<div class="paragraph">
<p>We have decided to use the following technology stack:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Backend</strong>: Node.js with Express framework</p>
</li>
<li>
<p><strong>Frontend</strong>: React.js</p>
</li>
<li>
<p><strong>Database</strong>: PostgreSQL</p>
</li>
<li>
<p><strong>Hosting</strong>: AWS (using services such as EC2, S3, and RDS)</p>
</li>
</ul>
</div>
<div class="paragraph">
<p><strong>Rationale</strong>:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Node.js and Express</strong>: Chosen for their performance, scalability, and large ecosystem.</p>
</li>
<li>
<p><strong>React.js</strong>: Selected for its component-based architecture, ease of use, and strong community support.</p>
</li>
<li>
<p><strong>PostgreSQL</strong>: Preferred for its robustness, ACID compliance, and advanced querying capabilities.</p>
</li>
<li>
<p><strong>AWS</strong>: Offers a reliable and scalable cloud infrastructure with a range of services that meet our needs.</p>
</li>
</ul>
</div>
</div>
</div>
Expand Down
3 changes: 2 additions & 1 deletion src/docs/asciidoc/sections/09_decision_log.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@

== 9. Architecture Decisions Records

include::adrs/0001-login-decision.adoc[]
include::adrs/0001-login-decision.adoc[]
include::adrs/0002-technology-selection.adoc[]
19 changes: 14 additions & 5 deletions src/docs/asciidoc/sections/adrs/0001-login-decision.adoc
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@

=== 9.1. Login decision
=== 9.1. ADR-001: Login decision

==== 9.1.1. Context and Problem Statement

We want to enable user login.
We need to choose an authentication method for user login in our new application. The method should ensure security, ease of use, and scalability while providing a seamless user experience.

==== 9.1.2. Considered Options

* Option 1
* Option 2
* **Option 1**: Traditional Username and Password Authentication
* **Option 2**: OAuth 2.0 with Social Login
* **Option 3**: Single Sign-On (SSO) with SAML

==== 9.1.3. Decision Outcome

We selected option 1, because X.
We have decided to implement OAuth 2.0 with Social Login.

**Rationale**:

* **Security**: OAuth 2.0 is a widely adopted and secure protocol for authorization.
* **User Convenience**: Social login allows users to log in with existing accounts (e.g., Google, Facebook), reducing friction and improving user experience.
* **Scalability**: OAuth 2.0 can handle a large number of users and integrates well with third-party identity providers.
* **Reduced Maintenance**: Leveraging third-party identity providers reduces the burden of managing user credentials and security.
* **Adoption and Integration**: Many users prefer using their social accounts for quick access, and many modern applications support OAuth 2.0, making it easier to integrate with other services.
29 changes: 29 additions & 0 deletions src/docs/asciidoc/sections/adrs/0002-technology-selection.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@

=== 9.2. ADR-002: Technology selection

==== 9.2.1. Context and Problem Statement

We need to choose a technology stack for developing our new web application. The application requires a robust backend, an interactive frontend, and seamless integration with third-party services.

==== 9.2.2. Considered Options

* **Option 1**: Node.js with Express, React.js, PostgreSQL, AWS
* **Option 2**: Python with Django, Angular, MySQL, Google Cloud Platform
* **Option 3**: Ruby on Rails, Vue.js, MongoDB, Microsoft Azure


==== 9.2.3. Decision Outcome

We have decided to use the following technology stack:

* **Backend**: Node.js with Express framework
* **Frontend**: React.js
* **Database**: PostgreSQL
* **Hosting**: AWS (using services such as EC2, S3, and RDS)

**Rationale**:

* **Node.js and Express**: Chosen for their performance, scalability, and large ecosystem.
* **React.js**: Selected for its component-based architecture, ease of use, and strong community support.
* **PostgreSQL**: Preferred for its robustness, ACID compliance, and advanced querying capabilities.
* **AWS**: Offers a reliable and scalable cloud infrastructure with a range of services that meet our needs.

0 comments on commit 231629e

Please sign in to comment.