From 7632672d65fdec718681c742247a7409b543f02e Mon Sep 17 00:00:00 2001
From: Othmane Ataallah <”othmane.ataallah.triztech@gmail.com”>
Date: Tue, 28 Apr 2026 09:45:44 +0100
Subject: [PATCH] intial push
---
docs/getting-started/environment-setup.md | 401 ------------------
.../environment-setup/01-java-and-maven.md | 87 ++++
.../environment-setup/02-tomcat-server.md | 22 +
.../environment-setup/03-database-setup.md | 87 ++++
.../04-git-and-repository.md | 126 ++++++
.../environment-setup/05-ide-configuration.md | 75 ++++
.../environment-setup/06-troubleshooting.md | 36 ++
.../environment-setup/_category_.json | 8 +
.../environment-setup/index.md | 27 ++
docs/workflow/task-workflow.md | 227 ----------
.../01-development-and-rebasing.md | 69 +++
.../02-merging-and-completing.md | 62 +++
.../03-reference-and-troubleshooting.md | 63 +++
docs/workflow/task-workflow/_category_.json | 8 +
docs/workflow/task-workflow/index.md | 56 +++
docusaurus.config.js | 4 +-
static/img/logo.png | Bin 0 -> 193700 bytes
static/img/logo.svg | 10 -
18 files changed, 728 insertions(+), 640 deletions(-)
delete mode 100644 docs/getting-started/environment-setup.md
create mode 100644 docs/getting-started/environment-setup/01-java-and-maven.md
create mode 100644 docs/getting-started/environment-setup/02-tomcat-server.md
create mode 100644 docs/getting-started/environment-setup/03-database-setup.md
create mode 100644 docs/getting-started/environment-setup/04-git-and-repository.md
create mode 100644 docs/getting-started/environment-setup/05-ide-configuration.md
create mode 100644 docs/getting-started/environment-setup/06-troubleshooting.md
create mode 100644 docs/getting-started/environment-setup/_category_.json
create mode 100644 docs/getting-started/environment-setup/index.md
delete mode 100644 docs/workflow/task-workflow.md
create mode 100644 docs/workflow/task-workflow/01-development-and-rebasing.md
create mode 100644 docs/workflow/task-workflow/02-merging-and-completing.md
create mode 100644 docs/workflow/task-workflow/03-reference-and-troubleshooting.md
create mode 100644 docs/workflow/task-workflow/_category_.json
create mode 100644 docs/workflow/task-workflow/index.md
create mode 100644 static/img/logo.png
delete mode 100644 static/img/logo.svg
diff --git a/docs/getting-started/environment-setup.md b/docs/getting-started/environment-setup.md
deleted file mode 100644
index fbfe974..0000000
--- a/docs/getting-started/environment-setup.md
+++ /dev/null
@@ -1,401 +0,0 @@
----
-sidebar_position: 1
-title: "Environment Setup Guide (TrizStock)"
-description: "Complete guide to setting up the TrizStock development environment from scratch."
----
-
-
-
-# Before You Start
-
-Make sure you have the following before proceeding:
-- **Local administrator rights** on your machine (required for most installations below)
-- Access to our [Gitea instance](http://145.239.66.197:3000/).
-- Your Gitea account credentials (request from your team lead if you don't have one yet)
-- The application database credentials (request from your team lead — these are never stored in any repository)
-
-# Overview of the Stack
-
-| **Component** | **Version** | **Purpose** |
-| ---------------------------- | ----------- | ------------------------------- |
-| Java SE (JDK) | 8 | Runtime and compiler |
-| Apache Maven | Any recent | Dependency management and build |
-| Apache Tomcat | 9 | Java EE application server |
-| Microsoft SQL Server | 2012 | Database engine |
-| SQL Server Management Studio | Any recent | Database GUI client |
-| NetBeans IDE | 17 | Development environment |
-
-
-
-# Step 1 — Install Java SE Development Kit (JDK) 8
-
-1. Download **JDK 8** from:
- - [Gitea release assets](http://145.239.66.197:3000/othmane/team-resources/releases/tag/jdk-8u481-windows-x64)
- - [Oracle's official archive](https://www.oracle.com/asean/java/technologies/javase/javase8u211-later-archive-downloads.html) if you have an account
-2. Run the installer and complete the installation. Note the installation path (e.g., `C:\Program Files\Java\jdk1.8.0_xxx`).
-3. Set the `JAVA_HOME` environment variable:
- - Open **Start → Search → "Edit the system environment variables"**
- - Click **Environment Variables**
- - Under **System variables**, click **New**:
- - Variable name: `JAVA_HOME`
- - Variable value: `C:\Program Files\Java\jdk1.8.0_xxx` _(your actual JDK path)_
- - Find the **`Path`** variable under System variables → click **Edit → New**, and add: `%JAVA_HOME%\bin`
- - Click **OK** on all dialogs.
-4. Open a **new** terminal window and verify:
-```shell
-java -version
-javac -version
-```
-Both must return `1.8.x`. If `javac` is not found, `JAVA_HOME` or `PATH` was not set correctly.
-
-
-
-# Step 2 — Install Apache Maven
-
-1. Download Maven from: _(Download the **binary zip archive**)_
- - [Gitea release assets](http://145.239.66.197:3000/othmane/team-resources/releases/tag/apache-maven-3.9.15-bin)
- - [Apache](https://maven.apache.org/download.cgi)
-2. Extract it to a stable path with no spaces (e.g., `C:\dev\maven`).
-3. Set environment variables:
- - Create a new system variable:
- - Variable name: `MAVEN_HOME`
- - Variable value: `C:\dev\maven` _(your extraction path)_
- - Add `%MAVEN_HOME%\bin` to the **`Path`** system variable (same way as Step 1).
-4. Open a **new** terminal and verify:
-```shell
-mvn -version
-```
-It should display the Maven version and confirm it is using your JDK 8.
-
-
-
-# Step 3 — Configure Maven for the Private Gitea Registry
-
-The TrizStock project has several legacy dependencies that are not available on Maven Central. They are hosted on the team's private Maven registry in Gitea. Without this configuration, your build will fail to resolve those dependencies.
-
-1. Navigate to the Maven user settings file. If it does not exist, create it:
-```URI
-C:\Users\YOUR_WINDOWS_USERNAME\.m2\settings.xml
-```
-2. Download the `settings.xml.template` from the team [resources repository](http://145.239.66.197:3000/othmane/team-resources/src/branch/main/_global/maven/settings.xml.template).
-3. Copy the template content into your `settings.xml` and replace the placeholders with your actual Gitea credentials:
-```XML
-
-
-
- gitea
- othmane
- 54465f0ce0fec1a357eb7d9f7055e3df873db114
-
-
-
-```
-Verify the registry is accessible by running the following in a terminal (once you have the project cloned — see Step 7):
-```shell
-mvn dependency:resolve
-```
-All dependencies, including the legacy ones, should resolve without errors.
-
-
-
-# Step 4 — Install Apache Tomcat 9
-
-1. Download **Tomcat 9** (zip distribution — do **not** use the Windows installer):
- - [Gitea release assets](http://145.239.66.197:3000/othmane/team-resources/releases/tag/apache-tomcat-9.0.117)
- - [Apache](https://tomcat.apache.org/download-90.cgi)
-2. Extract it to a stable path with no spaces (e.g., `C:\dev\tomcat9`).
-3. **Do not add Tomcat to your system PATH.** NetBeans will manage it directly and only needs to know the directory.
-
-> 📝 **Note — Tomcat is not installed as a Windows service in this setup.**
->
-> Using the zip distribution means Tomcat is managed entirely by NetBeans during development — it starts and stops automatically when you run or stop your project from the IDE. It does not run in the background, does not appear in `services.msc`, and does not start with Windows. This is intentional for a development environment.
->
-> If you ever need to run Tomcat outside of NetBeans (e.g., for a manual deployment or testing), you can start it directly by running `C:\dev\tomcat9\bin\startup.bat` from a terminal, and stop it with `shutdown.bat`. You can also register it as a Windows service separately if needed — ask your team lead.
-
-
-
-# Step 5 — Install Microsoft SQL Server 2012 and SSMS
-
-## 5.1 — Install SQL Server 2012
-
-1. Obtain the SQL Server 2012 installer (`SQLEXPR_x64_ENU.exe`) from:
- - [Gitea release assets](http://145.239.66.197:3000/othmane/team-resources/releases/tag/SQLEXPR_x64_ENU)
- - [Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=56042)
-2. Run the installer and choose **New SQL Server stand-alone installation**.
-3. On the **"Database Engine Configuration"** screen, under **Authentication Mode**, select **Mixed Mode** (SQL Server Authentication and Windows Authentication).
-4. Set the **SA account password** when prompted. Use the team standard password: `Root123456`.
-5. Complete the installation.
-
-## 5.2 — Enable TCP/IP and Port 1433
-
-SQL Server disables TCP/IP by default on fresh installations. The application needs it to connect.
-
-1. Open **SQL Server Configuration Manager** (search for it in the Start menu).
-2. Expand **SQL Server Network Configuration → Protocols for MSSQLSERVER**.
-3. Right-click **TCP/IP** → **Enable**.
-4. Double-click **TCP/IP** → go to the **IP Addresses** tab → scroll to **IPAll** → set **TCP Port** to `1433`.
-5. Click **OK**.
-
-## 5.3 — Enable the SQL Server Browser Service
-
-1. In **SQL Server Configuration Manager**, go to **SQL Server Services**.
-2. Right-click **SQL Server Browser** → **Properties** → **Service** tab → set **Start Mode** to **Automatic**.
-3. Right-click **SQL Server Browser** → **Start**.
-
-## 5.4 — Restart the SQL Server Service
-
-1. In **SQL Server Services**, right-click **SQL Server (MSSQLSERVER)** → **Restart**.
-
-## 5.5 — Configure the Windows Firewall
-
-1. Open **Windows Defender Firewall with Advanced Security** (search in Start menu).
-2. Click **Inbound Rules → New Rule**.
-3. Select **Port → TCP → Specific local ports: `1433`**.
-4. Select **Allow the connection**.
-5. Apply to all profiles (Domain, Private, Public).
-6. Name the rule `SQL Server 1433` and click **Finish**.
-
-## 5.6 — Create the Application Database Login
-
-1. Install **SQL Server Management Studio (SSMS)**. Download from [Microsoft](https://aka.ms/ssmsfullsetup).
-2. Open SSMS and connect to your local instance:
- - Server name: `localhost`
- - Authentication: **SQL Server Authentication**
- - Login: `sa`
- - Password: `Root123456`
-
-> 📝 **Note — Check your `database.properties` before proceeding.**
->
-> Open your `database.properties` file and check the value of `db.username`.
-> - If it is **`sa`**, skip steps 3–9 entirely. The `sa` account already exists and was configured with the correct password (`Root123456`) during installation. No new login needs to be created.
-> - If it is **any other username**, continue with steps 3–9 below to create that login.
-
-3. In **Object Explorer**, expand **Security → Logins**.
-4. Right-click **Logins → New Login**.
-5. Set the login name and password to match what is in `database.properties` (provided by your team lead).
-6. On the **General** page, make sure **Login** status at the bottom is set to **Enabled** (this is the default, but confirm it is not set to Disabled).
-7. On the **Status** page, under **Login**, confirm it is set to **Enabled** and under **Permission to connect to database engine**, confirm it is set to **Grant**.
-8. On the **Server Roles** page, check **`dbcreator`** and **`public`**.
-9. Click **OK**.
-
-
-
-# Step 6 — Restore the Test Database
-
-1. Download the Stock project test database backup file from the [Gitea release assets](http://145.239.66.197:3000/othmane/team-resources/releases/tag/life_07-04-2026).
-2. Open **SSMS** and connect to your local SQL Server instance.
-3. In **Object Explorer**, right-click **Databases → Restore Database…**
-4. Select **Device** as the source, click **…** (Browse), then click **Add** and navigate to the downloaded `.bak` file. Click **OK**.
-5. The backup details will populate in the **Backup sets to restore** grid. Confirm the correct entry is checked.
-6. Click **OK** to restore. A success dialog will appear when complete.
-7. In **Object Explorer**, right-click **Databases → Refresh**. The `TrizStockLife` database should now appear.
-8. Verify the application login created in Step 5.6 has access:
- - Expand **TrizStockLife → Security → Users**
- - If your application login is not listed, right-click **Users → New User**, and map the login to this database with the **`db_owner`** role.
-
-
-
-# Step 7 — Install and Configure Git
-
-## 7.1 — Install Git
-
-1. Install **Git** if not already installed. [Download from here](https://git-scm.com/download/win).
-2. Run the installer. When prompted for the default editor, choose whichever you are comfortable with (Notepad is fine for occasional use).
-3. On the **"Adjusting your PATH environment"** screen, select **"Git from the command line and also from 3rd-party software"** — this makes Git available in CMD, PowerShell, and Cygwin.
-4. Complete the rest of the installation with default settings.
-5. Verify the installation by opening a **new** terminal and running:
-```Shell
-git --version
-```
-
-## 7.2 — Configure Your Identity
-
-Git requires a name and email to be set before you can make any commit. These are embedded in every commit you create and must match your Gitea identity.
-
-```Shell
-git config --global user.name "Your Full Name"
-git config --global user.email "your.email@company.com"
-```
-
-> Use the same email address as your Gitea account.
-
-## 7.3 — Configure Line Endings
-
-This is a **critical setting** for the team. Incorrect line ending configuration causes unnecessary diffs, pollutes commit history, and can break file parsing on the server side.
-
-Run the following commands exactly as written:
-
-```Shell
-git config --global core.autocrlf false
-git config --global core.eol lf
-```
-
-| Setting | Value | Reason |
-| --------------- | ------- | --------------------------------------------------------------------------------------------------------------------------- |
-| `core.autocrlf` | `false` | Disables automatic line ending conversion. Git will not touch line endings on checkout or commit. |
-| `core.eol` | `lf` | Enforces LF (`\n`) as the line ending for all files in the working tree, consistent with the server and Linux environments. |
-
-> ⚠️ **Do not skip this step.** If `autocrlf` is left at its Windows default of `true`, Git will silently convert all line endings to CRLF on checkout and back to LF on commit. This causes every file to appear modified on Windows even when no real changes were made.
-
-## 7.4 — Configure Default Branch Name
-
-The team uses `master` as the default branch name. Set this to avoid a mismatch when creating new local branches:
-
-```Shell
-git config --global init.defaultBranch master
-```
-
-## 7.5 — Verify Your Configuration
-
-Run the following to confirm all settings were applied correctly:
-
-```Shell
-git config --global --list
-```
-
-You should see at minimum:
-
-```Shell
-user.name=Your Full Name
-user.email=your.email@company.com
-core.autocrlf=false
-core.eol=lf
-init.defaultbranch=master
-```
-
-
-
-# Step 8 — Clone the Project Repository
-
-1. Open a terminal and clone the Stock repository:
-```Shell
-git clone http://145.239.66.197:3000/TrizTech/TrizStockRepository.git
-```
-2. When prompted, enter your Gitea username and password (or token if your Gitea instance requires it).
-3. Navigate into the project folder:
-```Shell
-cd TrizStockRepository
-```
-
-
-
-# Step 9 — Configure `database.properties`
-
-The `database.properties` file contains the local database connection settings. It is **never stored in the repository** for security reasons. You need to create it manually.
-
-1. Download the template from the [team resources repository](http://145.239.66.197:3000/othmane/team-resources/src/branch/main/uses/stock).
-2. Copy the template into the correct location inside your local repository:
-```URI
-\src\main\resources\database.properties
-```
-3. Open the file in any text editor and fill in your local values:
-```properties
-db.host=localhost
-db.port=1433
-db.name=TrizStockLife
-db.username=YOUR_DB_USERNAME
-db.password=YOUR_DB_PASSWORD
-```
-4. Verify that `database.properties` is listed in the project's `.gitignore`:
-```gitignore
-# In the project root, open .gitignore and confirm this line exists:
-database.properties
-```
-If it is not there, add it. **Never commit this file.**
-
-
-
-# Step 10 — Install and Configure NetBeans 17
-
-## 10.1 — Install NetBeans
-
-1. Download **NetBeans 17** from:
- - [Gitea release assets](http://145.239.66.197:3000/othmane/team-resources/releases/tag/Apache-NetBeans-17-bin-windows-x64)
- - [Apache](https://netbeans.apache.org/front/main/download/nb17/)
-2. Run the installer and complete the installation with default settings.
-
-## 10.2 — Register JDK 8
-
-NetBeans may detect a newer JDK if you have one installed. Ensure it is using JDK 8 for this project.
-
-1. Open NetBeans → **Tools → Java Platforms**.
-2. Check that **JDK 1.8** is listed. If not, click **Add Platform**, select **Java Standard Edition**, and navigate to your JDK 8 installation directory (your `JAVA_HOME` path).
-3. Click **Finish**, then **Close**.
-
-## 10.3 — Register Tomcat 9
-
-1. Go to **Tools → Servers → Add Server**.
-2. Select **Apache Tomcat or TomEE** and click **Next**.
-3. Set the **Server Location** to your Tomcat 9 directory (e.g., `C:\dev\tomcat9`).
-4. Set a username and password for the Tomcat manager (you can use any values for local development, e.g., `admin` / `admin`).
-5. Click **Finish**.
-
-## 10.4 — Configure Maven in NetBeans
-
-1. Go to **Tools → Options → Java → Maven**.
-2. Under **Maven Home**, click **Browse** and point it to your Maven installation directory (`C:\dev\maven`). Do not use the **"Bundled"** option.
-3. Click **OK**.
-
-## 10.5 — Open the Project
-
-1. Go to **File → Open Project**.
-2. Navigate to your cloned `stock` folder and select it. NetBeans will recognize it as a Maven project.
-3. Click **Open Project**.
-
-
-
-# Step 11 — Build and Verify
-
-This final step confirms that your entire environment is wired up correctly.
-
-## 11.1 — Build the Project
-
-1. In NetBeans, right-click the **Stock** project in the Projects panel.
-2. Select **Clean and Build**.
-3. Monitor the **Output** panel at the bottom. The build must end with:
-```Log
-BUILD SUCCESS
-```
-If you see `BUILD FAILURE` with dependency errors, revisit Step 3 (Maven settings.xml and Gitea registry).
-
-## 11.2 — Deploy and Run
-
-1. Right-click the project → **Run**.
-2. NetBeans will deploy the application to your local Tomcat 9 instance and open it in the browser.
-3. The application should load without any database connection errors.
-
-## 11.3 — Verify Database Connectivity
-
-1. Log in to the application using the test credentials (ask your team lead for the default test user).
-2. Navigate to any section that loads data from the database (e.g., the stock listing page).
-3. If data loads correctly, your environment is fully operational.
-
-
-
-# Troubleshooting
-
-| **Symptom** | **Likely Cause** | **Fix** |
-| ------------------------------------------------ | ----------------------------------------------------------------- | ---------------------------------------------------------------- |
-| `java -version` shows wrong version or not found | `JAVA_HOME` or `PATH` not set correctly | Revisit Step 1, open a **new** terminal after changes |
-| `javac` not found | JRE installed instead of JDK | Reinstall using the JDK download |
-| `mvn -version` not found | `mvn -version` not found | Revisit Step 2 |
-| Maven build fails with dependency not found | `settings.xml` not configured or wrong credentials | Revisit Step 3 |
-| Cannot connect to SQL Server from SSMS | TCP/IP disabled or port 1433 blocked | Revisit Steps 5.2 and 5.5 |
-| Application fails to connect to DB at runtime | Wrong credentials in `database.properties`, or TCP/IP not enabled | Revisit Steps 5.2 and 9 |
-| `database.properties` not found at runtime | File placed in wrong directory | Confirm the file is at `\src\main\resources\database.properties` |
-| Tomcat not found in NetBeans | Server not registered | Revisit Step 10.3 |
-| NetBeans using wrong JDK | JDK 8 not registered as a Java Platform | Revisit Step 10.2 |
-| Build succeeds but app doesn't start | Tomcat configuration issue | Check the NetBeans Output panel for the full stack trace |
-
-
-
-# Reference Links
-
-| **Resource** | **URL** |
-| ------------------------------ | ------------------------------------------------------------------------------------------------------------- |
-| Team Resources Repository | [LINK](http://145.239.66.197:3000/othmane/team-resources) |
-| Stock Project Repository | [LINK](http://145.239.66.197:3000/TrizTech/TrizStockRepository) |
-| Stock Database Release Assets | [LINK](http://145.239.66.197:3000/othmane/team-resources/releases/tag/life_07-04-2026) |
-| Gitea Maven Registry | [LINK](http://145.239.66.197:3000/othmane/-/packages/) |
-| `database.properties` Template | [LINK](http://145.239.66.197:3000/othmane/team-resources/src/branch/main/uses/stock/database.properties) |
-| `settings.xml` Template | [LINK](http://145.239.66.197:3000/othmane/team-resources/src/branch/main/_global/maven/settings.xml.template) |
diff --git a/docs/getting-started/environment-setup/01-java-and-maven.md b/docs/getting-started/environment-setup/01-java-and-maven.md
new file mode 100644
index 0000000..c499c05
--- /dev/null
+++ b/docs/getting-started/environment-setup/01-java-and-maven.md
@@ -0,0 +1,87 @@
+---
+sidebar_position: 2
+title: "Java and Maven"
+---
+
+# Java and Maven
+
+---
+
+# Step 1 — Install Java SE Development Kit (JDK) 8
+
+1. Download **JDK 8** from:
+ - [Gitea release assets](http://145.239.66.197:3000/othmane/team-resources/releases/tag/jdk-8u481-windows-x64)
+ - [Oracle's official archive](https://www.oracle.com/asean/java/technologies/javase/javase8u211-later-archive-downloads.html) if you have an account
+2. Run the installer and complete the installation. Note the installation path (e.g., `C:\Program Files\Java\jdk1.8.0_xxx`).
+3. Set the `JAVA_HOME` environment variable:
+ - Open **Start → Search → "Edit the system environment variables"**
+ - Click **Environment Variables**
+ - Under **System variables**, click **New**:
+ - Variable name: `JAVA_HOME`
+ - Variable value: `C:\Program Files\Java\jdk1.8.0_xxx` _(your actual JDK path)_
+ - Find the **`Path`** variable under System variables → click **Edit → New**, and add: `%JAVA_HOME%\bin`
+ - Click **OK** on all dialogs.
+4. Open a **new** terminal window and verify:
+
+```bash
+java -version
+javac -version
+```
+
+Both must return `1.8.x`. If `javac` is not found, `JAVA_HOME` or `PATH` was not set correctly.
+
+---
+
+# Step 2 — Install Apache Maven
+
+1. Download Maven from: _(Download the **binary zip archive**)_
+ - [Gitea release assets](http://145.239.66.197:3000/othmane/team-resources/releases/tag/apache-maven-3.9.15-bin)
+ - [Apache](https://maven.apache.org/download.cgi)
+2. Extract it to a stable path with no spaces (e.g., `C:\dev\maven`).
+3. Set environment variables:
+ - Create a new system variable:
+ - Variable name: `MAVEN_HOME`
+ - Variable value: `C:\dev\maven` _(your extraction path)_
+ - Add `%MAVEN_HOME%\bin` to the **`Path`** system variable (same way as Step 1).
+4. Open a **new** terminal and verify:
+
+```bash
+mvn -version
+```
+
+It should display the Maven version and confirm it is using your JDK 8.
+
+---
+
+# Step 3 — Configure Maven for the Private Gitea Registry
+
+The TrizStock project has several legacy dependencies that are not available on Maven Central. They are hosted on the team's private Maven registry in Gitea. Without this configuration, your build will fail to resolve those dependencies.
+
+1. Navigate to the Maven user settings file. If it does not exist, create it:
+
+```text
+C:\Users\YOUR_WINDOWS_USERNAME\.m2\settings.xml
+```
+
+2. Download the `settings.xml.template` from the team [resources repository](http://145.239.66.197:3000/othmane/team-resources/src/branch/main/_global/maven/settings.xml.template).
+3. Copy the template content into your `settings.xml` and replace the placeholders with your actual Gitea credentials:
+
+```xml
+
+
+
+ gitea
+ othmane
+ 54465f0ce0fec1a357eb7d9f7055e3df873db114
+
+
+
+```
+
+Verify the registry is accessible by running the following in a terminal (once you have the project cloned — see Step 7):
+
+```bash
+mvn dependency:resolve
+```
+
+All dependencies, including the legacy ones, should resolve without errors.
diff --git a/docs/getting-started/environment-setup/02-tomcat-server.md b/docs/getting-started/environment-setup/02-tomcat-server.md
new file mode 100644
index 0000000..8917416
--- /dev/null
+++ b/docs/getting-started/environment-setup/02-tomcat-server.md
@@ -0,0 +1,22 @@
+---
+sidebar_position: 3
+title: "Tomcat Server"
+---
+
+# Tomcat Server
+
+---
+
+# Step 4 — Install Apache Tomcat 9
+
+1. Download **Tomcat 9** (zip distribution — do **not** use the Windows installer):
+ - [Gitea release assets](http://145.239.66.197:3000/othmane/team-resources/releases/tag/apache-tomcat-9.0.117)
+ - [Apache](https://tomcat.apache.org/download-90.cgi)
+2. Extract it to a stable path with no spaces (e.g., `C:\dev\tomcat9`).
+3. **Do not add Tomcat to your system PATH.** NetBeans will manage it directly and only needs to know the directory.
+
+> 📝 **Note — Tomcat is not installed as a Windows service in this setup.**
+>
+> Using the zip distribution means Tomcat is managed entirely by NetBeans during development — it starts and stops automatically when you run or stop your project from the IDE. It does not run in the background, does not appear in `services.msc`, and does not start with Windows. This is intentional for a development environment.
+>
+> If you ever need to run Tomcat outside of NetBeans (e.g., for a manual deployment or testing), you can start it directly by running `C:\dev\tomcat9\bin\startup.bat` from a terminal, and stop it with `shutdown.bat`. You can also register it as a Windows service separately if needed — ask your team lead.
diff --git a/docs/getting-started/environment-setup/03-database-setup.md b/docs/getting-started/environment-setup/03-database-setup.md
new file mode 100644
index 0000000..c1afdba
--- /dev/null
+++ b/docs/getting-started/environment-setup/03-database-setup.md
@@ -0,0 +1,87 @@
+---
+sidebar_position: 4
+title: "Database Setup"
+---
+
+# Database Setup
+
+---
+
+# Step 5 — Install Microsoft SQL Server 2012 and SSMS
+
+## 5.1 — Install SQL Server 2012
+
+1. Obtain the SQL Server 2012 installer (`SQLEXPR_x64_ENU.exe`) from:
+ - [Gitea release assets](http://145.239.66.197:3000/othmane/team-resources/releases/tag/SQLEXPR_x64_ENU)
+ - [Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=56042)
+2. Run the installer and choose **New SQL Server stand-alone installation**.
+3. On the **"Database Engine Configuration"** screen, under **Authentication Mode**, select **Mixed Mode** (SQL Server Authentication and Windows Authentication).
+4. Set the **SA account password** when prompted. Use the team standard password: `Root123456`.
+5. Complete the installation.
+
+## 5.2 — Enable TCP/IP and Port 1433
+
+SQL Server disables TCP/IP by default on fresh installations. The application needs it to connect.
+
+1. Open **SQL Server Configuration Manager** (search for it in the Start menu).
+2. Expand **SQL Server Network Configuration → Protocols for MSSQLSERVER**.
+3. Right-click **TCP/IP** → **Enable**.
+4. Double-click **TCP/IP** → go to the **IP Addresses** tab → scroll to **IPAll** → set **TCP Port** to `1433`.
+5. Click **OK**.
+
+## 5.3 — Enable the SQL Server Browser Service
+
+1. In **SQL Server Configuration Manager**, go to **SQL Server Services**.
+2. Right-click **SQL Server Browser** → **Properties** → **Service** tab → set **Start Mode** to **Automatic**.
+3. Right-click **SQL Server Browser** → **Start**.
+
+## 5.4 — Restart the SQL Server Service
+
+1. In **SQL Server Services**, right-click **SQL Server (MSSQLSERVER)** → **Restart**.
+
+## 5.5 — Configure the Windows Firewall
+
+1. Open **Windows Defender Firewall with Advanced Security** (search in Start menu).
+2. Click **Inbound Rules → New Rule**.
+3. Select **Port → TCP → Specific local ports: `1433`**.
+4. Select **Allow the connection**.
+5. Apply to all profiles (Domain, Private, Public).
+6. Name the rule `SQL Server 1433` and click **Finish**.
+
+## 5.6 — Create the Application Database Login
+
+1. Install **SQL Server Management Studio (SSMS)**. Download from [Microsoft](https://aka.ms/ssmsfullsetup).
+2. Open SSMS and connect to your local instance:
+ - Server name: `localhost`
+ - Authentication: **SQL Server Authentication**
+ - Login: `sa`
+ - Password: `Root123456`
+
+> 📝 **Note — Check your `database.properties` before proceeding.**
+>
+> Open your `database.properties` file and check the value of `db.username`.
+> - If it is **`sa`**, skip steps 3–9 entirely. The `sa` account already exists and was configured with the correct password (`Root123456`) during installation. No new login needs to be created.
+> - If it is **any other username**, continue with steps 3–9 below to create that login.
+
+3. In **Object Explorer**, expand **Security → Logins**.
+4. Right-click **Logins → New Login**.
+5. Set the login name and password to match what is in `database.properties` (provided by your team lead).
+6. On the **General** page, make sure **Login** status at the bottom is set to **Enabled** (this is the default, but confirm it is not set to Disabled).
+7. On the **Status** page, under **Login**, confirm it is set to **Enabled** and under **Permission to connect to database engine**, confirm it is set to **Grant**.
+8. On the **Server Roles** page, check **`dbcreator`** and **`public`**.
+9. Click **OK**.
+
+---
+
+# Step 6 — Restore the Test Database
+
+1. Download the Stock project test database backup file from the [Gitea release assets](http://145.239.66.197:3000/othmane/team-resources/releases/tag/life_07-04-2026).
+2. Open **SSMS** and connect to your local SQL Server instance.
+3. In **Object Explorer**, right-click **Databases → Restore Database…**
+4. Select **Device** as the source, click **…** (Browse), then click **Add** and navigate to the downloaded `.bak` file. Click **OK**.
+5. The backup details will populate in the **Backup sets to restore** grid. Confirm the correct entry is checked.
+6. Click **OK** to restore. A success dialog will appear when complete.
+7. In **Object Explorer**, right-click **Databases → Refresh**. The `TrizStockLife` database should now appear.
+8. Verify the application login created in Step 5.6 has access:
+ - Expand **TrizStockLife → Security → Users**
+ - If your application login is not listed, right-click **Users → New User**, and map the login to this database with the **`db_owner`** role.
diff --git a/docs/getting-started/environment-setup/04-git-and-repository.md b/docs/getting-started/environment-setup/04-git-and-repository.md
new file mode 100644
index 0000000..ec11c13
--- /dev/null
+++ b/docs/getting-started/environment-setup/04-git-and-repository.md
@@ -0,0 +1,126 @@
+---
+sidebar_position: 5
+title: "Git and Repository"
+---
+
+# Git and Repository
+
+---
+
+# Step 7 — Install and Configure Git
+
+## 7.1 — Install Git
+
+1. Install **Git** if not already installed. [Download from here](https://git-scm.com/download/win).
+2. Run the installer. When prompted for the default editor, choose whichever you are comfortable with (Notepad is fine for occasional use).
+3. On the **"Adjusting your PATH environment"** screen, select **"Git from the command line and also from 3rd-party software"** — this makes Git available in CMD, PowerShell, and Cygwin.
+4. Complete the rest of the installation with default settings.
+5. Verify the installation by opening a **new** terminal and running:
+
+```bash
+git --version
+```
+
+## 7.2 — Configure Your Identity
+
+Git requires a name and email to be set before you can make any commit. These are embedded in every commit you create and must match your Gitea identity.
+
+```bash
+git config --global user.name "Your Full Name"
+git config --global user.email "your.email@company.com"
+```
+
+> Use the same email address as your Gitea account.
+
+## 7.3 — Configure Line Endings
+
+This is a **critical setting** for the team. Incorrect line ending configuration causes unnecessary diffs, pollutes commit history, and can break file parsing on the server side.
+
+Run the following commands exactly as written:
+
+```bash
+git config --global core.autocrlf false
+git config --global core.eol lf
+```
+
+| Setting | Value | Reason |
+| --------------- | ------- | --------------------------------------------------------------------------------------------------------------------------- |
+| `core.autocrlf` | `false` | Disables automatic line ending conversion. Git will not touch line endings on checkout or commit. |
+| `core.eol` | `lf` | Enforces LF (`\n`) as the line ending for all files in the working tree, consistent with the server and Linux environments. |
+
+> ⚠️ **Do not skip this step.** If `autocrlf` is left at its Windows default of `true`, Git will silently convert all line endings to CRLF on checkout and back to LF on commit. This causes every file to appear modified on Windows even when no real changes were made.
+
+## 7.4 — Configure Default Branch Name
+
+The team uses `master` as the default branch name. Set this to avoid a mismatch when creating new local branches:
+
+```bash
+git config --global init.defaultBranch master
+```
+
+## 7.5 — Verify Your Configuration
+
+Run the following to confirm all settings were applied correctly:
+
+```bash
+git config --global --list
+```
+
+You should see at minimum:
+
+```bash
+user.name=Your Full Name
+user.email=your.email@company.com
+core.autocrlf=false
+core.eol=lf
+init.defaultbranch=master
+```
+
+---
+
+# Step 8 — Clone the Project Repository
+
+1. Open a terminal and clone the Stock repository:
+
+```bash
+git clone http://145.239.66.197:3000/TrizTech/TrizStockRepository.git
+```
+
+2. When prompted, enter your Gitea username and password (or token if your Gitea instance requires it).
+3. Navigate into the project folder:
+
+```bash
+cd TrizStockRepository
+```
+
+---
+
+# Step 9 — Configure `database.properties`
+
+The `database.properties` file contains the local database connection settings. It is **never stored in the repository** for security reasons. You need to create it manually.
+
+1. Download the template from the [team resources repository](http://145.239.66.197:3000/othmane/team-resources/src/branch/main/uses/stock).
+2. Copy the template into the correct location inside your local repository:
+
+```text
+\src\main\resources\database.properties
+```
+
+3. Open the file in any text editor and fill in your local values:
+
+```properties
+db.host=localhost
+db.port=1433
+db.name=TrizStockLife
+db.username=YOUR_DB_USERNAME
+db.password=YOUR_DB_PASSWORD
+```
+
+4. Verify that `database.properties` is listed in the project's `.gitignore`:
+
+```text
+# In the project root, open .gitignore and confirm this line exists:
+database.properties
+```
+
+If it is not there, add it. **Never commit this file.**
diff --git a/docs/getting-started/environment-setup/05-ide-configuration.md b/docs/getting-started/environment-setup/05-ide-configuration.md
new file mode 100644
index 0000000..237bce7
--- /dev/null
+++ b/docs/getting-started/environment-setup/05-ide-configuration.md
@@ -0,0 +1,75 @@
+---
+sidebar_position: 6
+title: "IDE Configuration"
+---
+
+# IDE Configuration
+
+---
+
+# Step 10 — Install and Configure NetBeans 17
+
+## 10.1 — Install NetBeans
+
+1. Download **NetBeans 17** from:
+ - [Gitea release assets](http://145.239.66.197:3000/othmane/team-resources/releases/tag/Apache-NetBeans-17-bin-windows-x64)
+ - [Apache](https://netbeans.apache.org/front/main/download/nb17/)
+2. Run the installer and complete the installation with default settings.
+
+## 10.2 — Register JDK 8
+
+NetBeans may detect a newer JDK if you have one installed. Ensure it is using JDK 8 for this project.
+
+1. Open NetBeans → **Tools → Java Platforms**.
+2. Check that **JDK 1.8** is listed. If not, click **Add Platform**, select **Java Standard Edition**, and navigate to your JDK 8 installation directory (your `JAVA_HOME` path).
+3. Click **Finish**, then **Close**.
+
+## 10.3 — Register Tomcat 9
+
+1. Go to **Tools → Servers → Add Server**.
+2. Select **Apache Tomcat or TomEE** and click **Next**.
+3. Set the **Server Location** to your Tomcat 9 directory (e.g., `C:\dev\tomcat9`).
+4. Set a username and password for the Tomcat manager (you can use any values for local development, e.g., `admin` / `admin`).
+5. Click **Finish**.
+
+## 10.4 — Configure Maven in NetBeans
+
+1. Go to **Tools → Options → Java → Maven**.
+2. Under **Maven Home**, click **Browse** and point it to your Maven installation directory (`C:\dev\maven`). Do not use the **"Bundled"** option.
+3. Click **OK**.
+
+## 10.5 — Open the Project
+
+1. Go to **File → Open Project**.
+2. Navigate to your cloned `stock` folder and select it. NetBeans will recognize it as a Maven project.
+3. Click **Open Project**.
+
+---
+
+# Step 11 — Build and Verify
+
+This final step confirms that your entire environment is wired up correctly.
+
+## 11.1 — Build the Project
+
+1. In NetBeans, right-click the **Stock** project in the Projects panel.
+2. Select **Clean and Build**.
+3. Monitor the **Output** panel at the bottom. The build must end with:
+
+```log
+BUILD SUCCESS
+```
+
+If you see `BUILD FAILURE` with dependency errors, revisit Step 3 (Maven settings.xml and Gitea registry).
+
+## 11.2 — Deploy and Run
+
+1. Right-click the project → **Run**.
+2. NetBeans will deploy the application to your local Tomcat 9 instance and open it in the browser.
+3. The application should load without any database connection errors.
+
+## 11.3 — Verify Database Connectivity
+
+1. Log in to the application using the test credentials (ask your team lead for the default test user).
+2. Navigate to any section that loads data from the database (e.g., the stock listing page).
+3. If data loads correctly, your environment is fully operational.
diff --git a/docs/getting-started/environment-setup/06-troubleshooting.md b/docs/getting-started/environment-setup/06-troubleshooting.md
new file mode 100644
index 0000000..72d0b8a
--- /dev/null
+++ b/docs/getting-started/environment-setup/06-troubleshooting.md
@@ -0,0 +1,36 @@
+---
+sidebar_position: 7
+title: "Troubleshooting & Reference"
+---
+
+# Troubleshooting & Reference
+
+---
+
+# Troubleshooting
+
+| **Symptom** | **Likely Cause** | **Fix** |
+| ------------------------------------------------ | ----------------------------------------------------------------- | ---------------------------------------------------------------- |
+| `java -version` shows wrong version or not found | `JAVA_HOME` or `PATH` not set correctly | Revisit Step 1, open a **new** terminal after changes |
+| `javac` not found | JRE installed instead of JDK | Reinstall using the JDK download |
+| `mvn -version` not found | `mvn -version` not found | Revisit Step 2 |
+| Maven build fails with dependency not found | `settings.xml` not configured or wrong credentials | Revisit Step 3 |
+| Cannot connect to SQL Server from SSMS | TCP/IP disabled or port 1433 blocked | Revisit Steps 5.2 and 5.5 |
+| Application fails to connect to DB at runtime | Wrong credentials in `database.properties`, or TCP/IP not enabled | Revisit Steps 5.2 and 9 |
+| `database.properties` not found at runtime | File placed in wrong directory | Confirm the file is at `\src\main\resources\database.properties` |
+| Tomcat not found in NetBeans | Server not registered | Revisit Step 10.3 |
+| NetBeans using wrong JDK | JDK 8 not registered as a Java Platform | Revisit Step 10.2 |
+| Build succeeds but app doesn't start | Tomcat configuration issue | Check the NetBeans Output panel for the full stack trace |
+
+---
+
+# Reference Links
+
+| **Resource** | **URL** |
+| ------------------------------ | ------------------------------------------------------------------------------------------------------------- |
+| Team Resources Repository | [LINK](http://145.239.66.197:3000/othmane/team-resources) |
+| Stock Project Repository | [LINK](http://145.239.66.197:3000/TrizTech/TrizStockRepository) |
+| Stock Database Release Assets | [LINK](http://145.239.66.197:3000/othmane/team-resources/releases/tag/life_07-04-2026) |
+| Gitea Maven Registry | [LINK](http://145.239.66.197:3000/othmane/-/packages/) |
+| `database.properties` Template | [LINK](http://145.239.66.197:3000/othmane/team-resources/src/branch/main/uses/stock/database.properties) |
+| `settings.xml` Template | [LINK](http://145.239.66.197:3000/othmane/team-resources/src/branch/main/_global/maven/settings.xml.template) |
diff --git a/docs/getting-started/environment-setup/_category_.json b/docs/getting-started/environment-setup/_category_.json
new file mode 100644
index 0000000..bfd431b
--- /dev/null
+++ b/docs/getting-started/environment-setup/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Environment Setup Guide",
+ "position": 1,
+ "link": {
+ "type": "generated-index",
+ "description": "Complete guide to setting up the TrizStock development environment from scratch."
+ }
+}
diff --git a/docs/getting-started/environment-setup/index.md b/docs/getting-started/environment-setup/index.md
new file mode 100644
index 0000000..1832c62
--- /dev/null
+++ b/docs/getting-started/environment-setup/index.md
@@ -0,0 +1,27 @@
+---
+sidebar_position: 1
+title: "Prerequisites & Overview"
+---
+
+# Prerequisites & Overview
+
+---
+
+# Before You Start
+
+Make sure you have the following before proceeding:
+- **Local administrator rights** on your machine (required for most installations below)
+- Access to our [Gitea instance](http://145.239.66.197:3000/).
+- Your Gitea account credentials (request from your team lead if you don't have one yet)
+- The application database credentials (request from your team lead — these are never stored in any repository)
+
+# Overview of the Stack
+
+| **Component** | **Version** | **Purpose** |
+| ---------------------------- | ----------- | ------------------------------- |
+| Java SE (JDK) | 8 | Runtime and compiler |
+| Apache Maven | Any recent | Dependency management and build |
+| Apache Tomcat | 9 | Java EE application server |
+| Microsoft SQL Server | 2012 | Database engine |
+| SQL Server Management Studio | Any recent | Database GUI client |
+| NetBeans IDE | 17 | Development environment |
diff --git a/docs/workflow/task-workflow.md b/docs/workflow/task-workflow.md
deleted file mode 100644
index 0ee2985..0000000
--- a/docs/workflow/task-workflow.md
+++ /dev/null
@@ -1,227 +0,0 @@
----
-sidebar_position: 1
-title: "Developer Task Workflow"
-description: "Standard workflow from task assignment to completion using the rebase-then-merge strategy."
----
-
->**Audience:** All developers on the team. This document describes the standard workflow to follow from the moment a task is assigned to the moment it is marked as complete.
-
-
-
-# Overview
-
-The team uses a **rebase-then-merge** workflow. Each task is developed in isolation on its own feature branch, rebased onto the latest `dev` before merging, and then both branches are pushed to remote together. This keeps the `dev` branch history clean and linear.
-
-
-
-# Workflow
-
-## Step 1 — Read the Task
-
-- Open Gitea and navigate to the issue assigned to you.
-- Read the task carefully, including any comments or attachments.
-- Make sure you understand the requirements before starting. If anything is unclear, ask before writing any code.
-
-## Step 2 — Start the Timer
-
-- Start your timer as soon as you begin working on the task.
-- The timer should reflect actual working time on the task, so start it now and not before you have read and understood it.
-
-## Step 3 — Update Your Local `dev` Branch
-
-Before creating your feature branch, make sure your local `dev` is up to date:
-
-```Shell
-git checkout dev
-git pull
-```
-
->Never branch off a stale `dev`. Always pull first to avoid basing your work on outdated code.
-
-## Step 4 — Create the Feature Branch
-
-Create and immediately check out a new branch from `dev`, named after the task number:
-
-```Shell
-git checkout -b feature/
-```
-
-For example, for task #42:
-
-```Shell
-git checkout -b feature/42
-```
-
->The branch name must follow this exact format — `feature/` followed by the task number. This links the branch clearly to the task on Gitea.
-
-## Step 5 — Work on the Task
-
-- Implement the changes required by the task on your feature branch.
-- Commit your work as you go with clear, descriptive commit messages:
-
-```Shell
-git add .
-git commit -m "# - Short description of what was done"
-```
-
-For example:
-
-```Shell
-git commit -m "#42 - Add stock export to Excel functionality"
-```
-
->You may have as many commits as needed on your feature branch.
-
-## Step 6 — Update `dev` Again Before Rebasing
-
-Before rebasing, fetch the latest changes from remote so your rebase is based on the most current state of `dev`:
-
-```Shell
-git checkout dev
-git pull
-```
-
->This step is important. If another developer pushed to `dev` while you were working, you need those changes before you rebase, otherwise you may introduce conflicts or overwrite work.
-
-## Step 7 — Switch Back to Your Feature Branch
-
-```Shell
-git checkout feature/
-```
-
-## Step 8 — Rebase the Feature Branch onto `dev`
-
-```Shell
-git rebase dev
-```
-
-This replays your commits on top of the latest `dev`, as if you had started your work from the current state of the branch. The result is a clean, linear history with no unnecessary merge commits from intermediate states.
-
->If conflicts arise during the rebase:
->1. Git will pause and show which files have conflicts.
->2. Open the conflicting files, resolve the conflicts manually.
->3. Stage the resolved files:
->```Shell
->git add
->```
->4. Continue the rebase:
->```Shell
->git rebase --continue
->```
->5. Repeat until the rebase completes.
->
->If you need to abort and start over:
->```Shell
->git rebase --abort
->```
-
-## Step 9 — Switch to `dev` to Merge
-
-```Shell
-git checkout dev
-```
-
-## Step 10 — Merge the Feature Branch into `dev`
-
-```Shell
-git merge feature/
-```
-
-Because the feature branch was just rebased onto `dev`, this merge will be a fast-forward and will produce a clean merge commit on top of `dev`.
-
-## Step 11 — Push Both Branches to Remote
-
-Push both the `dev` branch and the feature branch to remote in one operation from NetBeans, or via the terminal:
-
-```Shell
-git push origin dev
-git push origin feature/
-```
-
->Both branches must be pushed. Pushing `dev` makes your work available to the rest of the team. Pushing the feature branch keeps the remote in sync and preserves the full history of the task for reference.
-
-## Step 12 — Copy the Merge Commit Hash from Gitea
-
-1. Open Gitea and navigate to the **`dev` branch** of the Stock repository.
-2. The most recent commit at the top of the branch is the merge commit produced in Step 10.
-3. Copy the commit hash shown next to it.
-
->This is the hash that identifies exactly what was merged and when. It is the definitive reference for the work done in this task.
-
-## Step 13 — Update the Task on Gitea
-
-Go back to the issue assigned to you and post a comment containing:
-- The **merge commit hash** copied in Step 12
-- A **description of what was done** — what was implemented, any decisions made, anything relevant for the reviewer or for future reference
-
-Example comment:
-
-```
-Commit: a3f1c7d
-
-Implemented the Excel export feature for the stock listing page.
-Added a new ExportService class, hooked it into the existing StockController,
-and used the aspose-cells library for the file generation.
-Tested with datasets of up to 10,000 rows.
-```
-
-## Step 14 — Stop the Timer
-
-Stop your timer. The task is complete.
-
-
-
-# Quick Reference
-
-For experienced developers, here is the full sequence of commands in order:
-
-```Shell
-# Get latest dev
-git checkout dev
-git pull
-
-# Create and switch to feature branch
-git checkout -b feature/
-
-# ... do your work, commit as you go ...
-
-# Get latest dev again before rebasing
-git checkout dev
-git pull
-
-# Switch back to feature branch and rebase
-git checkout feature/
-git rebase dev
-
-# Merge into dev
-git checkout dev
-git merge feature/
-
-# Push both branches
-git push origin dev
-git push origin feature/
-```
-
-Then go to Gitea: copy the merge commit hash from the top of `dev`, post it on the task with a description, and stop the timer.
-
-
-
-# Branch Naming Reference
-
-| Type | Format | Example |
-|---|---|---|
-| Development branch | `dev` | `dev` |
-| Feature branch | `feature/` | `feature/42` |
-
-
-
-# Common Mistakes to Avoid
-
-| Mistake | Why it is a problem |
-| ---------------------------------------------- | -------------------------------------------------------------------- |
-| Branching off `dev` without pulling first | Your feature branch starts from stale code, causing conflicts later |
-| Skipping the second `git pull` before rebasing | You rebase on an outdated `dev` and miss changes from teammates |
-| Forgetting to rebase before merging | Produces a messy history with unnecessary intermediate merge commits |
-| Pushing only `dev` and not the feature branch | The feature branch on remote becomes out of sync |
-| Pushing only the feature branch and not `dev` | Your work never reaches the team |
-| Not posting the commit hash on the task | The task has no traceable link to the code that implements it |
diff --git a/docs/workflow/task-workflow/01-development-and-rebasing.md b/docs/workflow/task-workflow/01-development-and-rebasing.md
new file mode 100644
index 0000000..6595f93
--- /dev/null
+++ b/docs/workflow/task-workflow/01-development-and-rebasing.md
@@ -0,0 +1,69 @@
+---
+sidebar_position: 2
+title: "Development & Rebasing"
+---
+
+# Development & Rebasing
+
+---
+
+## Step 5 — Work on the Task
+
+- Implement the changes required by the task on your feature branch.
+- Commit your work as you go with clear, descriptive commit messages:
+
+```bash
+git add .
+git commit -m "# - Short description of what was done"
+```
+
+For example:
+
+```bash
+git commit -m "#42 - Add stock export to Excel functionality"
+```
+
+> You may have as many commits as needed on your feature branch.
+
+## Step 6 — Update `dev` Again Before Rebasing
+
+Before rebasing, fetch the latest changes from remote so your rebase is based on the most current state of `dev`:
+
+```bash
+git checkout dev
+git pull
+```
+
+> This step is important. If another developer pushed to `dev` while you were working, you need those changes before you rebase, otherwise you may introduce conflicts or overwrite work.
+
+## Step 7 — Switch Back to Your Feature Branch
+
+```bash
+git checkout feature/
+```
+
+## Step 8 — Rebase the Feature Branch onto `dev`
+
+```bash
+git rebase dev
+```
+
+This replays your commits on top of the latest `dev`, as if you had started your work from the current state of the branch. The result is a clean, linear history with no unnecessary merge commits from intermediate states.
+
+> If conflicts arise during the rebase:
+> 1. Git will pause and show which files have conflicts.
+> 2. Open the conflicting files, resolve the conflicts manually.
+> 3. Stage the resolved files:
+> ```bash
+> git add
+> ```
+> 4. Continue the rebase:
+> ```bash
+> git rebase --continue
+> ```
+> 5. Repeat until the rebase completes.
+>
+> If you need to abort and start over:
+> ```bash
+> git rebase --abort
+> ```
diff --git a/docs/workflow/task-workflow/02-merging-and-completing.md b/docs/workflow/task-workflow/02-merging-and-completing.md
new file mode 100644
index 0000000..3aff22c
--- /dev/null
+++ b/docs/workflow/task-workflow/02-merging-and-completing.md
@@ -0,0 +1,62 @@
+---
+sidebar_position: 3
+title: "Merging & Completing"
+---
+
+# Merging & Completing
+
+---
+
+## Step 9 — Switch to `dev` to Merge
+
+```bash
+git checkout dev
+```
+
+## Step 10 — Merge the Feature Branch into `dev`
+
+```bash
+git merge feature/
+```
+
+Because the feature branch was just rebased onto `dev`, this merge will be a fast-forward and will produce a clean merge commit on top of `dev`.
+
+## Step 11 — Push Both Branches to Remote
+
+Push both the `dev` branch and the feature branch to remote in one operation from NetBeans, or via the terminal:
+
+```bash
+git push origin dev
+git push origin feature/
+```
+
+> Both branches must be pushed. Pushing `dev` makes your work available to the rest of the team. Pushing the feature branch keeps the remote in sync and preserves the full history of the task for reference.
+
+## Step 12 — Copy the Merge Commit Hash from Gitea
+
+1. Open Gitea and navigate to the **`dev` branch** of the Stock repository.
+2. The most recent commit at the top of the branch is the merge commit produced in Step 10.
+3. Copy the commit hash shown next to it.
+
+> This is the hash that identifies exactly what was merged and when. It is the definitive reference for the work done in this task.
+
+## Step 13 — Update the Task on Gitea
+
+Go back to the issue assigned to you and post a comment containing:
+- The **merge commit hash** copied in Step 12
+- A **description of what was done** — what was implemented, any decisions made, anything relevant for the reviewer or for future reference
+
+Example comment:
+
+```text
+Commit: a3f1c7d
+
+Implemented the Excel export feature for the stock listing page.
+Added a new ExportService class, hooked it into the existing StockController,
+and used the aspose-cells library for the file generation.
+Tested with datasets of up to 10,000 rows.
+```
+
+## Step 14 — Stop the Timer
+
+Stop your timer. The task is complete.
diff --git a/docs/workflow/task-workflow/03-reference-and-troubleshooting.md b/docs/workflow/task-workflow/03-reference-and-troubleshooting.md
new file mode 100644
index 0000000..0519d9c
--- /dev/null
+++ b/docs/workflow/task-workflow/03-reference-and-troubleshooting.md
@@ -0,0 +1,63 @@
+---
+sidebar_position: 4
+title: "Reference & Troubleshooting"
+---
+
+# Reference & Troubleshooting
+
+---
+
+# Quick Reference
+
+For experienced developers, here is the full sequence of commands in order:
+
+```bash
+# Get latest dev
+git checkout dev
+git pull
+
+# Create and switch to feature branch
+git checkout -b feature/
+
+# ... do your work, commit as you go ...
+
+# Get latest dev again before rebasing
+git checkout dev
+git pull
+
+# Switch back to feature branch and rebase
+git checkout feature/
+git rebase dev
+
+# Merge into dev
+git checkout dev
+git merge feature/
+
+# Push both branches
+git push origin dev
+git push origin feature/
+```
+
+Then go to Gitea: copy the merge commit hash from the top of `dev`, post it on the task with a description, and stop the timer.
+
+---
+
+# Branch Naming Reference
+
+| Type | Format | Example |
+|---|---|---|
+| Development branch | `dev` | `dev` |
+| Feature branch | `feature/` | `feature/42` |
+
+---
+
+# Common Mistakes to Avoid
+
+| Mistake | Why it is a problem |
+| ---------------------------------------------- | -------------------------------------------------------------------- |
+| Branching off `dev` without pulling first | Your feature branch starts from stale code, causing conflicts later |
+| Skipping the second `git pull` before rebasing | You rebase on an outdated `dev` and miss changes from teammates |
+| Forgetting to rebase before merging | Produces a messy history with unnecessary intermediate merge commits |
+| Pushing only `dev` and not the feature branch | The feature branch on remote becomes out of sync |
+| Pushing only the feature branch and not `dev` | Your work never reaches the team |
+| Not posting the commit hash on the task | The task has no traceable link to the code that implements it |
diff --git a/docs/workflow/task-workflow/_category_.json b/docs/workflow/task-workflow/_category_.json
new file mode 100644
index 0000000..f0a215d
--- /dev/null
+++ b/docs/workflow/task-workflow/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Developer Task Workflow",
+ "position": 2,
+ "link": {
+ "type": "generated-index",
+ "description": "Standard workflow from task assignment to completion using the rebase-then-merge strategy."
+ }
+}
diff --git a/docs/workflow/task-workflow/index.md b/docs/workflow/task-workflow/index.md
new file mode 100644
index 0000000..806aef0
--- /dev/null
+++ b/docs/workflow/task-workflow/index.md
@@ -0,0 +1,56 @@
+---
+sidebar_position: 1
+title: "Overview & Starting Work"
+---
+
+# Overview & Starting Work
+
+> **Audience:** All developers on the team. This document describes the standard workflow to follow from the moment a task is assigned to the moment it is marked as complete.
+
+---
+
+# Overview
+
+The team uses a **rebase-then-merge** workflow. Each task is developed in isolation on its own feature branch, rebased onto the latest `dev` before merging, and then both branches are pushed to remote together. This keeps the `dev` branch history clean and linear.
+
+---
+
+# Workflow
+
+## Step 1 — Read the Task
+
+- Open Gitea and navigate to the issue assigned to you.
+- Read the task carefully, including any comments or attachments.
+- Make sure you understand the requirements before starting. If anything is unclear, ask before writing any code.
+
+## Step 2 — Start the Timer
+
+- Start your timer as soon as you begin working on the task.
+- The timer should reflect actual working time on the task, so start it now and not before you have read and understood it.
+
+## Step 3 — Update Your Local `dev` Branch
+
+Before creating your feature branch, make sure your local `dev` is up to date:
+
+```bash
+git checkout dev
+git pull
+```
+
+> Never branch off a stale `dev`. Always pull first to avoid basing your work on outdated code.
+
+## Step 4 — Create the Feature Branch
+
+Create and immediately check out a new branch from `dev`, named after the task number:
+
+```bash
+git checkout -b feature/
+```
+
+For example, for task #42:
+
+```bash
+git checkout -b feature/42
+```
+
+> The branch name must follow this exact format — `feature/` followed by the task number. This links the branch clearly to the task on Gitea.
diff --git a/docusaurus.config.js b/docusaurus.config.js
index a3211b7..69ed411 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -1,5 +1,5 @@
// @ts-check
-import {themes as prismThemes} from 'prism-react-renderer';
+import { themes as prismThemes } from 'prism-react-renderer';
/** @type {import('@docusaurus/types').Config} */
const config = {
@@ -80,7 +80,7 @@ const config = {
title: 'TrizTech Docs',
logo: {
alt: 'TrizTech Logo',
- src: 'img/logo.svg',
+ src: 'img/logo.png',
},
items: [
{
diff --git a/static/img/logo.png b/static/img/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d018d5168c135a2144e82b7bd3ac16377d3686b
GIT binary patch
literal 193700
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