<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Saim Ahmed</title>
    <description>The latest articles on DEV Community by Saim Ahmed (@saim_ahmed).</description>
    <link>https://dev.to/saim_ahmed</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3511683%2Fb3b61e4e-02bc-4448-861b-c32967691756.png</url>
      <title>DEV Community: Saim Ahmed</title>
      <link>https://dev.to/saim_ahmed</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saim_ahmed"/>
    <language>en</language>
    <item>
      <title>Git for Beginners: Basics and Essential Commands</title>
      <dc:creator>Saim Ahmed</dc:creator>
      <pubDate>Sat, 24 Jan 2026 05:44:51 +0000</pubDate>
      <link>https://dev.to/saim_ahmed/git-for-beginners-basics-and-essential-commands-2oo1</link>
      <guid>https://dev.to/saim_ahmed/git-for-beginners-basics-and-essential-commands-2oo1</guid>
      <description>&lt;p&gt;In this blog, you will learn about:&lt;/p&gt;

&lt;p&gt;Reason to develop Git:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is Git?&lt;/li&gt;
&lt;li&gt;Why do we use Git?&lt;/li&gt;
&lt;li&gt;Git’s basics and core terminologies.&lt;/li&gt;
&lt;li&gt;Common git commands&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Imagine you and your friend are working on a learning management system. You have divided the project into 2 sections. You are building the authentication system; Ahmed is building the other section. Now the first problem you will face is that you were building that, and you cannot track which person added which code and when, like you were building a user login feature, and then everything was ok, and then you moved to the forgot password code, but when you were writing that code, you unknowingly changed the line in the previous code's functionality, and now you are facing an error, but now you do not know which function has caused the bug, and now you both are confused and blaming each other. Now the only possible way is to debug both functions, which will take your time.&lt;/p&gt;

&lt;p&gt;If there would exist a system that can track what, when, and who changed the code, then this problem will be solved easily. Basically you need a system that shows the history of your project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why was Git created?
&lt;/h2&gt;

&lt;p&gt;Where there is a problem, there is a solution. In that case , the solution was git. Before Git, there was a system called BitKeeper. Linus Torvalds, who is the founder of Linux and Git, was using BitKeeper. During the development of Linux, they were using BitKeeper, but when its free license expired, he developed Git as a side project. This system was developed to provide efficient versioning&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Git?
&lt;/h2&gt;

&lt;p&gt;Git is a distributed version control system. The full form of “GIT” is “Global Information Tracker.”&lt;/p&gt;

&lt;p&gt;It tracks four things about code&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When did it change?&lt;/li&gt;
&lt;li&gt;What was changed?&lt;/li&gt;
&lt;li&gt;Who made the change?&lt;/li&gt;
&lt;li&gt;Why did it change?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of it as a "time machine" for your project. It allows you to save "checkpoints" (called commits) of your work. If you mess something up, you can instantly revert your entire project back to how it looked an hour ago, yesterday, or even last year.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do we use Git?
&lt;/h2&gt;

&lt;p&gt;We use Git for the following reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Version Control: It track all the changes that are done in code and who changed the code and when&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Collaboration: It allows multiple people to work on the same file at the same time without overwriting each other's work (most of the time).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Distributed: This is the important point. Unlike older systems where code lived on one central server, in Git, every developer has a full copy of the entire project history on their laptop. If the central server explodes, you can restore everything from your coworker's laptop.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Git’s basics and core terminologies
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Repository&lt;/strong&gt;&lt;br&gt;
The folder that is being tracked by the git is known as the repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjnsbwyhl17hgs52vf38v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjnsbwyhl17hgs52vf38v.png" alt="Repository Image" width="783" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-life analogy:&lt;/strong&gt;&lt;br&gt;
Think of it like a personal journal or diary that stores your complete work and how it evolved over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Staging Area&lt;/strong&gt;&lt;br&gt;
It is the place where changes are placed before committing. When we run ‘git add .’ or ‘git add ’, it is known as staging the code. The code in staging phase is known as staged code or staged changes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-life analogy:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Packing the items in a box for shipping.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgxdy9bedm111c8d7pxiw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgxdy9bedm111c8d7pxiw.png" alt="Staging image" width="783" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Commit&lt;/strong&gt;&lt;br&gt;
It is like the screenshot of the project at the current moment. It remembers all the files, the folder structure, and the extra information, like who made it, when, and why.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq6msltbg3xyqwnnzu4a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq6msltbg3xyqwnnzu4a.png" alt="Commit image" width="797" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As shown in this diagram, every commit has the current code of the project. This diagram is the example of how commit works. Like, you’re working on the authentication system and wrote signup code, and you commit this code, and then you added login code, and then this commit will have login code + signup code (and the changes in it if any were made). And after adding this forgot password code, now this commit will have the forgot password code and changes done in the previous commit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common commands Used in Git:
&lt;/h2&gt;

&lt;p&gt;The commonly used git commands are&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;git init&lt;/li&gt;
&lt;li&gt;git add  and git add .&lt;/li&gt;
&lt;li&gt;git status&lt;/li&gt;
&lt;li&gt;git log&lt;/li&gt;
&lt;li&gt;git commit&lt;/li&gt;
&lt;li&gt;git reset &lt;/li&gt;
&lt;li&gt;git reset --hard &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The explanation of these commands is given below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. git init&lt;/strong&gt;&lt;br&gt;
It is like telling the git to track every change in a folder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Working of Command:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It initializes an empty Git repository inside the folder. That Git repository is basically a hidden .git folder. This is where Git stores everything that needs to track changes, history, and versions of the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. git add  and git add .&lt;/strong&gt;&lt;br&gt;
These two commands are similar to each other to some extent. The main purpose of these commands is like telling Git to stage our current changes. In simple words, it is like telling Git to stage current changes (or, in simple words, save them so they can be included in the next commit).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. git status&lt;/strong&gt;&lt;br&gt;
It tells us the current condition of the folder. It provides information about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which files are untracked?&lt;/li&gt;
&lt;li&gt;Track files that are modified or deleted&lt;/li&gt;
&lt;li&gt;Changes that are to be commited&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkubmb0q18aahhi6qquc5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkubmb0q18aahhi6qquc5.png" alt="git status working image" width="619" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. git log&lt;/strong&gt;&lt;br&gt;
It tells us information about commits.&lt;/p&gt;

&lt;p&gt;It tells:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Author (who made the commit)&lt;/li&gt;
&lt;li&gt;Date and time of commit&lt;/li&gt;
&lt;li&gt;Commit ID&lt;/li&gt;
&lt;li&gt;Commit message&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6tbv3oibegbjf992wdht.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6tbv3oibegbjf992wdht.png" alt="git log working" width="761" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;**git commit -m “”
It takes a snapshot of all the staged changes and saves them permanently in Git history.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Important point:&lt;/strong&gt; Git only included staged changes. Like, if you ran the git add . command and staged the changes and then changed any file, now git will not include the changes made after staging.&lt;/p&gt;

&lt;p&gt;6.&lt;strong&gt;git reset &lt;/strong&gt;&lt;br&gt;
This command is used to undo the changes that were done after a specific commit. It only moves the changes from the commit phase to the staging phase.&lt;/p&gt;

&lt;p&gt;The ID of that commit is mentioned in the command.&lt;/p&gt;

&lt;p&gt;It only moves the head from the current commit to that specific commit.&lt;/p&gt;

&lt;p&gt;Diagram&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6egofqyepp6jwdbu5fx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6egofqyepp6jwdbu5fx.png" alt="git reset image" width="761" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now the commit is on Commit 3, but when you run the reset command. Then the head will move to that commit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9kfvm8ry2tgbpb24wx3a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9kfvm8ry2tgbpb24wx3a.png" alt="git reset image" width="790" height="342"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Quick Git Challenge&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you have understood this, tell me in the comments if you had three commits and then staged some changes; after this, you ran this command: git reset . Now will staged changes remain staged, or will they become unstaged? tell me in the comments?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;7.&lt;strong&gt;git reset --hard &lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is the same but a stricter version of the previous reset command because in this, changes are not untracked; they are deleted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Diagram&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbx3amo5jw1nx71wps841.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbx3amo5jw1nx71wps841.png" alt="git reset --hard " width="790" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conclusion:&lt;br&gt;
Now you have learned how Git solved our problem; it has added a hidden .git folder in which it tracks everything about our project.&lt;/p&gt;

&lt;p&gt;In my next article, I will write in detail about the structure of the .git folder. So you can understand about how Git works under the hood. Stay tuned!&lt;/p&gt;

&lt;p&gt;💡 If you find this article useful, please provide your feedback in the comments. Also if you find any mistake, tell me so i can improve it&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>git</category>
      <category>programming</category>
    </item>
    <item>
      <title>Why Ignoring Documentation Can Set Back Junior Developers' Careers?</title>
      <dc:creator>Saim Ahmed</dc:creator>
      <pubDate>Wed, 01 Oct 2025 09:34:49 +0000</pubDate>
      <link>https://dev.to/saim_ahmed/why-ignoring-documentation-can-set-back-junior-developers-careers-3bii</link>
      <guid>https://dev.to/saim_ahmed/why-ignoring-documentation-can-set-back-junior-developers-careers-3bii</guid>
      <description>&lt;h2&gt;
  
  
  Why Most Junior Devs Skip Documentation
&lt;/h2&gt;

&lt;p&gt;Most junior devs skip documentation because they think it’s a waste of time. But this is actually their biggest blunder—it’s often the root cause of chaos and failed project ideas.&lt;/p&gt;

&lt;p&gt;Before building a project, if you don’t know &lt;em&gt;what&lt;/em&gt; you’re building and &lt;em&gt;why&lt;/em&gt;, there’s a high chance you’ll end up building features you don’t need. At a small scale, this might be tolerable, but at a larger scale, it creates massive chaos. You end up fixing bugs in features that were unnecessary or even useless.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs2kz4ejeuvv4kb8wyalq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs2kz4ejeuvv4kb8wyalq.png" alt="Image-of-advantages-and-disadvantages-of-documentation" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;I was building an authentication system. I built the frontend and backend, but all of it was done without planning. Every single day, I discovered things that should have been defined at the start. I kept adding new fields to my MongoDB schemas and, after building controllers, I realized I had missed many validator middlewares and other essentials. I felt like I was building a house and discovering halfway that I forgot to design the doors. Every day something broke.&lt;/p&gt;

&lt;p&gt;What was you experience when you started working on project without documentation?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;You’re probably curious how I solved this problem. I’m a 5th-semester BS Software Engineering student. Back in my 3rd semester, I studied the Software Requirement Specification (SRS) document, which covers Functional Requirements, Non-Functional Requirements, etc. At that time, I hadn’t built a real system, so it was all theoretical.&lt;/p&gt;

&lt;p&gt;Now that I was building a real system, I started writing an SRS document for my authentication system. I researched and defined everything in detail, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;OAuth implementation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compliance requirements like GDPR&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Additional controllers, e.g., “Revoke All Sessions”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Telemetry to track user device information like IP, location, etc.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Software Requirements Specification (SRS) — Authentication System
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Purpose
&lt;/h3&gt;

&lt;p&gt;The authentication system will let users &lt;strong&gt;register, log in, and prove their identity&lt;/strong&gt; securely before accessing any application.&lt;br&gt;&lt;br&gt;
It should be &lt;strong&gt;secure, scalable, and flexible&lt;/strong&gt; — capable of growing into an &lt;strong&gt;enterprise-grade Identity &amp;amp; Access Management (IAM)&lt;/strong&gt; system, including &lt;strong&gt;multi-factor authentication, OAuth federation, SSO, and advanced monitoring&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Scope
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;2.1 In-Scope (MVP)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The authentication system must support the following functionality in its minimum viable product (MVP):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;User registration using email, phone number, or third-party OAuth providers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Email verification before account activation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Login and logout capabilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Password reset and password change.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Session management, including refresh and revoke functionality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Basic user roles (Admin, User).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2.2 Out-of-Scope for MVP (Planned for Future/Enterprise Readiness)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The following features are not required for the MVP but may be introduced in later enterprise-grade versions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;authentication mechanisms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automated user provisioning and management (e.g., via SCIM).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Advanced audit logging and monitoring dashboards.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Risk assessment with anomaly detection.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Telemetry dashboards for system and authentication monitoring.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Real-time alerting and notification capabilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multi-Factor Authentication (MFA) methods (e.g., authenticator apps, SMS, hardware keys, backup codes).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Federation using OAuth 2.1 / OpenID Connect with additional providers (e.g., GitHub, LinkedIn).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Passwordless authentication (e.g., WebAuthn, magic links).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Single Sign-On (SSO) using standards such as SAML.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Risk-based&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Users
&lt;/h3&gt;

&lt;p&gt;The system will be used by the following user groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;End Users&lt;/strong&gt;: Register, verify their accounts, log in, and manage personal profile details.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Administrators&lt;/strong&gt;: Manage user accounts, roles, and permissions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Developers&lt;/strong&gt;: Consume and integrate authentication APIs with client applications.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Definitions, Acronyms, Abbreviations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MFA&lt;/strong&gt; — Multi-Factor Authentication.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;RBAC&lt;/strong&gt; — Role-Based Access Control.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ABAC&lt;/strong&gt; — Attribute-Based Access Control.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;JWT&lt;/strong&gt; — JSON Web Token.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SSO&lt;/strong&gt; — Single Sign-On.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OAuth&lt;/strong&gt; — Open Authorization (standard for delegated access).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenID Connect&lt;/strong&gt; — Authentication layer on top of OAuth 2.1.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GDPR&lt;/strong&gt; — General Data Protection Regulation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Functional Requirements
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;5.1 Authentication Core&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Users must be able to register using email, phone number, or supported third-party identity providers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users must be able to log in with credentials (email/phone + password) or through supported third-party identity providers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users must be able to log out.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The system must allow issuing new access tokens without requiring re-login.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The system must prevent users from reusing a configurable number of their most recent passwords.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5.2 Password &amp;amp; Credentials Management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Users must be able to request a password reset link or code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users must be able to reset their password using the provided link/code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users must be able to change their password while logged in.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users must be able to update account credentials (email, username, or phone number).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5.3 Verification &amp;amp; Identity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Users must be able to verify their email via link or code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users must be able to verify their phone via one-time code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users must be able to request resending of verification links/codes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The system must support multi-factor authentication (e.g., authenticator apps, backup codes).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5.4 User &amp;amp; Session Management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Users must be able to view, update, and delete profile details.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users must be able to view active sessions, revoke all sessions, or revoke sessions individually.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users must be able to deactivate or delete their account.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5.5 Authorization &amp;amp; Roles&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The system must allow creating, reading, updating, and deleting roles (e.g., Admin, User).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5.6 Federation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users must be able to authenticate through third-party identity providers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5.7 Security &amp;amp; Monitoring&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The system must record all critical security events (e.g., logins, failed logins, password changes, MFA challenges, account deactivation, admin actions).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The system must detect suspicious behavior (e.g., abnormal login patterns, device mismatches, repeated failures).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The system must temporarily or permanently block accounts, IPs, or devices exhibiting suspicious activity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The system must enforce configurable rate limits to prevent brute force or denial-of-service attacks.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5.8 Telemetry &amp;amp; Observability&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The system must collect telemetry for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication events (e.g., login success/failure, logout, token refresh).&lt;/li&gt;
&lt;li&gt;Security events (e.g., suspicious login, password reset, MFA challenges).&lt;/li&gt;
&lt;li&gt;System health metrics (e.g., response times, error rates, latency).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The system must expose telemetry in industry-standard formats.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The system must support integration with external alerting systems for both threshold-based and anomaly-based alerts.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. Non-Functional Requirements
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;6.1 Security&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The system shall securely hash all user passwords using a strong one-way algorithm (e.g., Argon2 or bcrypt).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The system shall ensure all API endpoints are served exclusively over HTTPS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The system shall implement rate limiting to mitigate brute force login attempts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The system shall maintain continuous audit logging of authentication and authorization events.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The system shall support Multi-Factor Authentication (MFA) in future releases.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6.2 Scalability&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The system shall support scaling from hundreds to millions of concurrent users without service degradation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The system shall implement stateless token handling (e.g., JWT or opaque tokens with introspection).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The system shall support session storage in distributed caching systems (e.g., Redis, DynamoDB).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6.3 Performance&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Login request must complete within &lt;strong&gt;200ms&lt;/strong&gt; under normal load.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;System must support &lt;strong&gt;10,000 concurrent logins&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Token refresh latency ≤ &lt;strong&gt;100ms&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6.4 Availability&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The system shall achieve a minimum uptime of 99.9%.&lt;/p&gt;

&lt;p&gt;The system shall ensure session refresh and logout functionality remain consistent across distributed environments.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. Data Model (Basic)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;User&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;id&lt;/strong&gt; (PK)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;email&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;name&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;phone&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;password_hash&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;email_verified&lt;/strong&gt; (boolean)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;phone_verified&lt;/strong&gt; (boolean)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;role&lt;/strong&gt; (enum: Admin, User, etc.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;mfa_enabled&lt;/strong&gt; (boolean)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;created_at&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;last_login&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;failed_attempts&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;status&lt;/strong&gt; (active, locked, deactivated, deleted)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Session/Token&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;token_id&lt;/strong&gt; (PK)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;user_id&lt;/strong&gt; (FK → &lt;a href="http://User.id" rel="noopener noreferrer"&gt;User.id&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;issued_at&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;expires_at&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;revoked&lt;/strong&gt; (boolean)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ip_address&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;device_info&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;refresh_token_id&lt;/strong&gt; (nullable, for refresh flows)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Audit Log&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;log_id&lt;/strong&gt; (PK)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;user_id&lt;/strong&gt; (FK → &lt;a href="http://User.id" rel="noopener noreferrer"&gt;User.id&lt;/a&gt;, nullable for system-level events)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;event_type&lt;/strong&gt; (login_success, login_failure, password_change, MFA_challenge, etc.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ip_address&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;device_info&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;timestamp&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;MFA_Credential&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;mfa_id&lt;/strong&gt; (PK)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;user_id&lt;/strong&gt; (FK → &lt;a href="http://User.id" rel="noopener noreferrer"&gt;User.id&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;type&lt;/strong&gt; (TOTP, SMS, Email, SecurityKey, BackupCode)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;secret_hash&lt;/strong&gt; (for TOTP or backup codes)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;created_at&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;last_used_at&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;is_active&lt;/strong&gt; (boolean)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;OAuth_Provider&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;provider_id&lt;/strong&gt; (PK)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;user_id&lt;/strong&gt; (FK → &lt;a href="http://User.id" rel="noopener noreferrer"&gt;User.id&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;provider_name&lt;/strong&gt; (Google, GitHub, Facebook, LinkedIn)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;provider_user_id&lt;/strong&gt; (unique per provider)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;access_token&lt;/strong&gt; (optional, if stored)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;refresh_token&lt;/strong&gt; (optional, if stored)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;linked_at&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Role&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;role_id&lt;/strong&gt; (PK)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;name&lt;/strong&gt; (Admin, User, Moderator, etc.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;description&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Permission&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;permission_id&lt;/strong&gt; (PK)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;name&lt;/strong&gt; (e.g., &lt;code&gt;manage_users&lt;/code&gt;, &lt;code&gt;view_logs&lt;/code&gt;, &lt;code&gt;update_roles&lt;/code&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;description&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Role_Permission (Mapping table)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;role_id&lt;/strong&gt; (FK → Role.role_id)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;permission_id&lt;/strong&gt; (FK → Permission.permission_id)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Telemetry_Event&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;telemetry_id&lt;/strong&gt; (PK)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;type&lt;/strong&gt; (auth_event, security_event, system_health)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;details&lt;/strong&gt; (JSON for structured event data)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;created_at&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  8. Data Requirements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Passwords are never stored in plain text.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Audit logs retained for &lt;strong&gt;90 days&lt;/strong&gt; minimum.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sessions expire after &lt;strong&gt;15 minutes of inactivity&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Refresh tokens valid for &lt;strong&gt;7 days&lt;/strong&gt;, revocable at any time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Personally Identifiable Information (PII) must be encrypted at rest (AES-256).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  9. Risks &amp;amp; Assumptions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Weak/reused passwords → enforce policy + MFA later.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Email/phone compromise → mitigate with MFA.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Risk of DDoS → mitigate with rate limiting &amp;amp; IP bans.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scaling requires distributed session/token store.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  10. Success Criteria
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Users can register, verify identity, and log in.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users can reset/change credentials securely.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Admins can manage accounts &amp;amp; roles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Audit logs capture all critical actions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Suspicious activity is logged and flagged.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Need your advice !
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw7p0h5wjkajm6gapg9mc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw7p0h5wjkajm6gapg9mc.png" alt="image-of-need-guidance" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m looking for advice from senior developers on what I should include or remove in my documentation. Additionally, would you recommend creating separate documents for software design and architecture, including architectural diagrams? If you have written any documentation can you share it here ?&lt;/p&gt;

&lt;p&gt;if you have any question about this artice please ask in the comment &lt;/p&gt;

&lt;p&gt;Follow me &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;hashnode&lt;/strong&gt; : &lt;a href="https://hashnode.com/@saim152" rel="noopener noreferrer"&gt;https://hashnode.com/@saim152&lt;/a&gt;&lt;/p&gt;

</description>
      <category>documentation</category>
      <category>softwareengineering</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
