Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
62cb655
update docs
Daggerpov Dec 23, 2025
d6c3588
using activity public api to obfuscate access directly to activityuse…
Daggerpov Dec 23, 2025
979af1f
doc updates
Daggerpov Dec 23, 2025
b8fed9d
rename to follow project naming scheme
Daggerpov Dec 23, 2025
fd2558c
refactor: add @ApplicationScoped annotations to service interfaces
Daggerpov Jan 2, 2026
7336304
refactor: move ChatMessage entities from chat to activity module
Daggerpov Jan 2, 2026
a9caebf
refactor: consolidate InternalActivityService into ActivityService
Daggerpov Jan 2, 2026
8257089
fix: update imports after ChatMessage entity relocation
Daggerpov Jan 2, 2026
aba2cb6
test: update tests after service consolidation and entity moves
Daggerpov Jan 2, 2026
8f4a2a1
separate recently spawned service
Daggerpov Jan 11, 2026
cec2464
fuzzy service interface
Daggerpov Jan 11, 2026
fd02995
activity no dependency on user service
Daggerpov Jan 11, 2026
1e9da31
tests
Daggerpov Jan 11, 2026
93b6095
remove circular dependency between s3 and user service
Daggerpov Jan 11, 2026
e44cd32
more lean dto for activity creation response
Daggerpov Jan 21, 2026
a78721f
Returning provider with quick signin
Daggerpov Jan 21, 2026
d11286e
Update ActivityControllerTests.java
Daggerpov Jan 21, 2026
a6749db
New `MinimalFriendDTO` to reduce memory footprint across endpoints: 1.
Daggerpov Jan 21, 2026
aded52b
fix other users' profile activities
Daggerpov Jan 21, 2026
b8f1541
profile activities: fix logic to filter by invited activities
Daggerpov Jan 21, 2026
91e6d7e
fix imports & paths for dtos
Daggerpov Jan 21, 2026
756bff9
cursor rule for java version running
Daggerpov Jan 21, 2026
27b227f
Merge pull request #451 from Daggerpov/api-changes-for-mobile-improve…
Daggerpov Jan 21, 2026
a599937
error for google id token
Daggerpov Jan 22, 2026
053734d
more robust error logging for auth, jwts, etc.
Daggerpov Jan 22, 2026
47cd4ac
Merge pull request #453 from Daggerpov/api-changes-for-mobile-improve…
Daggerpov Jan 22, 2026
93cabd1
update dto to serialize properly
Daggerpov Jan 28, 2026
89b2765
Consolidate user friendship into dto to remove extra api call
Daggerpov Jan 28, 2026
5ad9543
rm deprecated endpoint & dto + fix tests
Daggerpov Jan 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 30 additions & 61 deletions .cursor/rules.json
Original file line number Diff line number Diff line change
Expand Up @@ -789,77 +789,46 @@
"enforcement": "This rule is NON-NEGOTIABLE. Any file created in the wrong location must be immediately moved to its correct organized directory."
},
"java_version_management": {
"description": "CRITICAL: This project requires Java 17, but the system may have Java 25 (or other versions) as default",
"description": "CRITICAL: This project requires Java 17, but the system has Java 25 as default which is INCOMPATIBLE",
"project_java_version": "17",
"java_17_path": "/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home",
"mandatory_rules": [
"ALWAYS set JAVA_HOME to Java 17 before running ANY Maven commands",
"NEVER assume the default Java version is correct",
"ALWAYS verify Java version before building, testing, or compiling",
"The project uses Java 17 features and Lombok 1.18.36 which is NOT compatible with Java 25"
"ALWAYS use Java 17 for ANY Maven command - the default Java 25 will NOT work",
"NEVER run ./mvnw commands without prefixing with JAVA_HOME",
"The project uses Lombok 1.18.36 which is NOT compatible with Java 21+",
"If you see Lombok errors, it's almost certainly a Java version issue"
],
"required_java_home_setup": {
"command": "export JAVA_HOME=$(/usr/libexec/java_home -v 17)",
"explanation": "Sets JAVA_HOME to Java 17 on macOS",
"when_to_use": "At the start of EVERY terminal session before any Maven command"
},
"maven_commands_requiring_java_17": [
"./mvnw clean compile",
"./mvnw test-compile",
"./mvnw clean test",
"./mvnw test",
"./mvnw clean install",
"./mvnw clean package",
"./mvnw spring-boot:run"
],
"correct_command_pattern": {
"single_command": "export JAVA_HOME=$(/usr/libexec/java_home -v 17) && cd /Users/daggerpov/Documents/GitHub/Spawn-App-Back-End && ./mvnw clean test",
"explanation": "Always prefix Maven commands with JAVA_HOME setup in the same command to ensure correct Java version"
"simplest_command_pattern": {
"description": "Use inline JAVA_HOME assignment for simplicity",
"compile": "JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home ./mvnw clean compile",
"test_compile": "JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home ./mvnw test-compile",
"test": "JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home ./mvnw clean test",
"build_all": "JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home ./mvnw clean compile test-compile"
},
"error_indicators": {
"lombok_error": "java.lang.NoSuchFieldException: com.sun.tools.javac.code.TypeTag :: UNKNOWN",
"compilation_error": "Fatal error compiling: java.lang.ExceptionInInitializerError",
"wrong_java_message": "These errors typically indicate Java version mismatch (using Java 25 instead of Java 17)"
"lombok_typetag_error": "java.lang.NoSuchFieldException: com.sun.tools.javac.code.TypeTag :: UNKNOWN",
"initialization_error": "Fatal error compiling: java.lang.ExceptionInInitializerError",
"cause": "These errors mean you ran Maven with Java 25 instead of Java 17"
},
"debugging_workflow": {
"step_1": "Check current Java version: java -version",
"step_2": "If not Java 17, set JAVA_HOME: export JAVA_HOME=$(/usr/libexec/java_home -v 17)",
"step_3": "Verify change: java -version (should show Java 17)",
"step_4": "Re-run the Maven command"
},
"available_java_versions_on_system": [
"Java 25 (default, but INCOMPATIBLE)",
"Java 23 (available, but INCOMPATIBLE)",
"Java 17 (REQUIRED for this project)",
"Java 11 (available, but too old)"
"quick_fix_workflow": [
"1. If you see Lombok/TypeTag errors, DO NOT try to fix Lombok",
"2. Simply re-run the command with: JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home ./mvnw <command>",
"3. The build should succeed immediately"
],
"available_java_versions_on_system": {
"java_25": "/Users/daggerpov/Library/Java/JavaVirtualMachines/openjdk-25/Contents/Home (DEFAULT - DO NOT USE)",
"java_17": "/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home (USE THIS)"
},
"why_java_17": [
"Project is configured for Java 17 in pom.xml (java.version=17)",
"Lombok 1.18.36 has compatibility issues with Java 21+",
"Spring Boot 3.3.5 works best with Java 17",
"All dependencies are tested with Java 17"
"pom.xml specifies java.version=17",
"Lombok 1.18.36 does not support Java 21+",
"Spring Boot 3.3.5 is optimized for Java 17"
],
"automation_principle": {
"rule": "ALWAYS include JAVA_HOME setup in the same command as Maven execution",
"reason": "Prevents forgetting to set JAVA_HOME and encountering compilation errors",
"pattern": "export JAVA_HOME=$(/usr/libexec/java_home -v 17) && cd <project-dir> && ./mvnw <command>"
},
"testing_workflow": {
"step_1_check_java": "export JAVA_HOME=$(/usr/libexec/java_home -v 17) && java -version",
"step_2_build": "cd /Users/daggerpov/Documents/GitHub/Spawn-App-Back-End && ./mvnw clean test",
"step_3_verify": "Ensure 'BUILD SUCCESS' with no Java version errors"
},
"forbidden_actions": [
"NEVER run Maven commands without setting JAVA_HOME first",
"NEVER assume java -version shows Java 17 by default",
"NEVER try to fix Lombok errors without checking Java version first",
"NEVER update Lombok version to work with Java 25 (use Java 17 instead)"
"NEVER run ./mvnw without JAVA_HOME prefix",
"NEVER try to upgrade Lombok to fix Java 25 compatibility",
"NEVER assume the default java -version is correct"
],
"quick_reference": {
"verify_java": "java -version (should show Java 17)",
"set_java_17": "export JAVA_HOME=$(/usr/libexec/java_home -v 17)",
"list_available": "/usr/libexec/java_home -V",
"build_with_correct_java": "export JAVA_HOME=$(/usr/libexec/java_home -v 17) && ./mvnw clean test"
},
"enforcement": "This is MANDATORY. Java version issues waste time and cause confusing errors. ALWAYS set JAVA_HOME to Java 17 before ANY Maven command."
"enforcement": "MANDATORY: Prefix ALL Maven commands with JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home"
}
}
27 changes: 16 additions & 11 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,15 @@ Bug fixes and issue resolutions:
### 🔄 [refactoring/](refactoring/)
Code refactoring and architectural improvements:

**✅ Current Status: Spring Modulith Phase 1 Complete, Phase 2 In Progress**
**✅ Current Status: Spring Modulith Phase 1-2 Complete, Phase 3 In Progress**

- **[CURRENT_STATUS.md](refactoring/CURRENT_STATUS.md)** - 📊 **START HERE** - Current progress dashboard with next steps and phase breakdown
- **[PHASE_1_COMPLETE.md](refactoring/PHASE_1_COMPLETE.md)** - ✅ Phase 1 completion summary - All 266 files moved to modular structure, build successful (Dec 8, 2025)
- **[SPRING_MODULITH_REFACTORING_PLAN.md](refactoring/SPRING_MODULITH_REFACTORING_PLAN.md)** - 🔄 **Active Implementation** - Phases 2-6 detailed instructions (fix circular dependencies, add Spring Modulith, testing)
- **[PHASE_3_PLAN.md](refactoring/PHASE_3_PLAN.md)** - 🔄 **CURRENT** - Phase 3 detailed tasks for shared data resolution
- **[PHASE_1_COMPLETE.md](refactoring/PHASE_1_COMPLETE.md)** - ✅ Phase 1 completion summary - All 266 files moved to modular structure (Dec 8, 2025)
- **[PHASE_2_COMPLETE.md](refactoring/PHASE_2_COMPLETE.md)** - ✅ Phase 2 completion summary - All circular dependencies fixed (Dec 23, 2025)
- **[SPRING_MODULITH_REFACTORING_PLAN.md](refactoring/SPRING_MODULITH_REFACTORING_PLAN.md)** - 📋 Full refactoring plan - Phases 1-6 detailed instructions
- **[REFACTORING_ORDER_DECISION.md](refactoring/REFACTORING_ORDER_DECISION.md)** - Decision rationale: Modulith first, then Mediator, then Microservices
- **[WHY_SPRING_MODULITH_FIRST.md](refactoring/WHY_SPRING_MODULITH_FIRST.md)** - **RECOMMENDED READ** - Why Spring Modulith is an effective first step before microservices, with detailed analysis of current codebase issues
- **[WHY_SPRING_MODULITH_FIRST.md](refactoring/WHY_SPRING_MODULITH_FIRST.md)** - **RECOMMENDED READ** - Why Spring Modulith is an effective first step
- **[DRY_REFACTORING_ANALYSIS.md](refactoring/DRY_REFACTORING_ANALYSIS.md)** - DRY principle analysis
- **[BUGS_FIXED_SUMMARY.md](refactoring/BUGS_FIXED_SUMMARY.md)** - Summary of bugs fixed during refactoring

Expand Down Expand Up @@ -115,19 +117,20 @@ Check [fixes/](fixes/) directory
Review [database/](database/) directory

### For Microservices Decision
**Current Progress: Spring Modulith Phase 1 Complete ✅**
**Current Progress: Spring Modulith Phase 1-2 Complete ✅**

1. ✅ **DONE**: Phase 1 Package Restructuring - See [refactoring/PHASE_1_COMPLETE.md](refactoring/PHASE_1_COMPLETE.md)
2. 🔄 **CURRENT**: Phase 2 Fix Circular Dependencies - Follow [refactoring/SPRING_MODULITH_REFACTORING_PLAN.md](refactoring/SPRING_MODULITH_REFACTORING_PLAN.md) Phase 2 section
3. **NEXT**: Complete Phases 3-6 of Spring Modulith refactoring (4-5 more weeks)
4. **FUTURE**: Proceed to [microservices/MICROSERVICES_IMPLEMENTATION_PLAN.md](microservices/MICROSERVICES_IMPLEMENTATION_PLAN.md) after Modulith validation
2. ✅ **DONE**: Phase 2 Fix Circular Dependencies - See [refactoring/PHASE_2_COMPLETE.md](refactoring/PHASE_2_COMPLETE.md)
3. 🔄 **CURRENT**: Phase 3 Shared Data Resolution - Follow [refactoring/PHASE_3_PLAN.md](refactoring/PHASE_3_PLAN.md)
4. **NEXT**: Complete Phases 4-6 of Spring Modulith refactoring (3-4 more weeks)
5. **FUTURE**: Proceed to [microservices/MICROSERVICES_IMPLEMENTATION_PLAN.md](microservices/MICROSERVICES_IMPLEMENTATION_PLAN.md) after Modulith validation

**Background Reading:**
- [refactoring/WHY_SPRING_MODULITH_FIRST.md](refactoring/WHY_SPRING_MODULITH_FIRST.md) - Why this approach
- [refactoring/REFACTORING_ORDER_DECISION.md](refactoring/REFACTORING_ORDER_DECISION.md) - Decision rationale

### For Code Refactoring
**✅ Phase 1 Complete!** Continue with Phase 2 in [refactoring/SPRING_MODULITH_REFACTORING_PLAN.md](refactoring/SPRING_MODULITH_REFACTORING_PLAN.md)
**✅ Phase 1-2 Complete!** Continue with Phase 3 in [refactoring/PHASE_3_PLAN.md](refactoring/PHASE_3_PLAN.md)

### For Testing and Coverage
Check [testing/](testing/) directory for comprehensive testing documentation
Expand Down Expand Up @@ -155,8 +158,10 @@ When adding new documentation:

## 🔄 Recent Updates

- **December 23, 2025**: 📁 **Documentation Reorganization** - Created new topic folders (api/, security/, validation/), moved all docs to appropriate folders, removed duplicates for clean organization
- **December 23, 2025**: ✅ **Spring Modulith Phase 1 COMPLETE** - All 266 files moved to modular structure, compilation successful, Phase 2 in progress
- **December 23, 2025**: ✅ **Spring Modulith Phase 2 COMPLETE** - All circular dependencies fixed with event-driven communication, 0 `@Lazy` annotations, Phase 3 started
- **December 23, 2025**: 📋 **Phase 3 Plan Created** - Detailed plan for shared data resolution, public API creation
- **December 23, 2025**: 📁 **Documentation Reorganization** - Created new topic folders (api/, security/, validation/), moved all docs to appropriate folders
- **December 8, 2025**: ✅ **Spring Modulith Phase 1 COMPLETE** - All 266 files moved to modular structure, compilation successful
- **December 8, 2025**: Started Spring Modulith refactoring - Phase 1 package restructuring
- **December 8, 2025**: Added comprehensive Spring Modulith documentation (refactoring plan, rationale, decision guide)
- **December 10, 2025**: Major folder structure reorganization - moved all bash scripts to organized subdirectories in `scripts/`, moved diagrams to `docs/diagrams/`, consolidated fix summaries
Expand Down
110 changes: 59 additions & 51 deletions docs/refactoring/CURRENT_STATUS.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Spring Modulith Refactoring - Current Status

**Last Updated:** December 23, 2025
**Current Phase:** Phase 3 - Shared Data Resolution
**Overall Progress:** ~35% Complete (Phase 1-2 of 6 done)
**Current Phase:** Phase 4 - Add Spring Modulith (Next)
**Overall Progress:** ~50% Complete (Phase 1-3 of 6 done)

---

Expand All @@ -12,8 +12,8 @@
|-------|--------|----------|----------|
| **Phase 1: Package Restructuring** | ✅ Complete | 100% | Week 1-2 (Dec 8, 2025) |
| **Phase 2: Fix Circular Dependencies** | ✅ Complete | 100% | Week 3-4 (Dec 23, 2025) |
| **Phase 3: Shared Data Resolution** | 🔄 In Progress | 0% | Week 5 (Current) |
| **Phase 4: Add Spring Modulith** | ⏸️ Not Started | 0% | Week 5 |
| **Phase 3: Shared Data Resolution** | ✅ Complete | 100% | Week 5 (Dec 23, 2025) |
| **Phase 4: Add Spring Modulith** | ⏸️ Not Started | 0% | Week 5 (Next) |
| **Phase 5: Module Boundary Testing** | ⏸️ Not Started | 0% | Week 6-7 |
| **Phase 6: Documentation & Validation** | ⏸️ Not Started | 0% | Week 8 |

Expand All @@ -28,7 +28,7 @@
- ✅ Moved all 266 Java files to new locations
- ✅ Updated all package declarations to match new structure
- ✅ Fixed ~1,500+ import statements across the codebase
- ✅ Upgraded Lombok to version 1.18.34
- ✅ Upgraded Lombok to version 1.18.36
- ✅ **Build successful** - project compiles without errors

### Module Structure Created
Expand Down Expand Up @@ -92,58 +92,63 @@ com.danielagapov.spawn/

---

## 📋 Next Steps (Phase 3)
## Phase 3 Complete Summary

### Shared Data Resolution
1. **Document data ownership matrix**
- Assign clear ownership for each entity
- Identify shared repository access patterns
**Completed:** December 23, 2025
**Goal Achieved:** Established clear data ownership boundaries and created public APIs

2. **Move repositories to owning modules**
- `ActivityUserRepository` → Activity module (owns participation)
- Create public APIs for cross-module data access
### Issues Fixed

3. **Create public APIs for frequent queries**
- `ActivityPublicApi` interface for Activity module
- `UserPublicApi` interface for User module
#### Cross-Module Repository Access Eliminated ✅

---

## 📚 Key Documentation
| Service | Module | Before | After |
|---------|--------|--------|-------|
| `ActivityService` | Activity | ✅ Owner | ✅ Owner |
| `CalendarService` | Activity | ✅ Owner | ✅ Owner |
| `UserService` | User | ❌ Used IActivityUserRepository | ✅ Uses ActivityPublicApi |
| `UserSearchService` | User | ❌ Used IActivityUserRepository | ✅ Uses ActivityPublicApi |
| `UserStatsService` | User | ❌ Used IActivityUserRepository | ✅ Uses ActivityPublicApi |
| `ChatMessageService` | Chat | ❌ Used IActivityUserRepository | ✅ Uses ActivityPublicApi |

### For Current Work
- **[SPRING_MODULITH_REFACTORING_PLAN.md](./SPRING_MODULITH_REFACTORING_PLAN.md)** - Phase 2 detailed instructions
- **[WHY_SPRING_MODULITH_FIRST.md](./WHY_SPRING_MODULITH_FIRST.md)** - Rationale and benefits
### New Files Created
- `activity/api/ActivityPublicApi.java` - Public API interface
- `activity/internal/services/ActivityPublicApiImpl.java` - Implementation

### For Context
- **[PHASE_1_COMPLETE.md](./PHASE_1_COMPLETE.md)** - What was accomplished
- **[REFACTORING_ORDER_DECISION.md](./REFACTORING_ORDER_DECISION.md)** - Why this order
### Notification Events Updated
- `NewCommentNotificationEvent` - Now receives participant IDs, not repository
- `ActivityUpdateNotificationEvent` - Now receives participant IDs, not repository

### For Future
- **[../mediator/MEDIATOR_PATTERN_REFACTORING.md](../mediator/MEDIATOR_PATTERN_REFACTORING.md)** - To do after Phase 6
- **[../microservices/MICROSERVICES_IMPLEMENTATION_PLAN.md](../microservices/MICROSERVICES_IMPLEMENTATION_PLAN.md)** - Final goal
**Details:** See [PHASE_3_COMPLETE.md](./PHASE_3_COMPLETE.md)

---

## 🎯 Success Criteria for Phase 2
## 📋 Success Criteria

### Phase 2 ✅
- [x] Zero `@Lazy` annotations in module code ✅
- [x] All cross-module communication via events ✅
- [x] Event queries have timeout and fallback logic ✅
- [x] Build successful with no circular dependency warnings ✅
- [ ] All tests passing (pre-existing test issues unrelated to Phase 2)
- [ ] Clear data ownership for shared repositories (Phase 3)

---
### Phase 3 ✅
- [x] Clear data ownership for all entities ✅
- [x] No direct cross-module repository access ✅
- [x] Public APIs created for frequent cross-module queries ✅
- [x] Events use DTOs instead of internal types ✅
- [x] Build successful after refactoring ✅
- [x] All 726 tests pass ✅

## ⏭️ What Comes After Phase 2
### Phase 4 (Next)
- [ ] Spring Modulith dependencies added to pom.xml
- [ ] `package-info.java` created for each module
- [ ] `@Modulith` annotation added to main application
- [ ] Module boundary configuration complete

### Phase 3: Shared Data Resolution (Week 5)
- Document data ownership matrix
- Move repositories to owning modules
- Create public APIs for frequent queries
---

## ⏭️ What Comes Next

### Phase 4: Add Spring Modulith (Week 5)
### Phase 4: Add Spring Modulith (Week 5) - Next
- Update `pom.xml` with Spring Modulith dependencies
- Create `package-info.java` for each module
- Add `@Modulith` annotation
Expand Down Expand Up @@ -177,16 +182,19 @@ com.danielagapov.spawn/

---

## 📞 Need Help?
## 📚 Key Documentation

### Stuck on Phase 2?
1. Review event-driven examples in [SPRING_MODULITH_REFACTORING_PLAN.md](./SPRING_MODULITH_REFACTORING_PLAN.md) Phase 2
2. Check the troubleshooting section (Appendix E)
3. Refer to Spring Modulith samples: https://github.com/spring-projects/spring-modulith/tree/main/spring-modulith-examples
### For Current Work
- **[SPRING_MODULITH_REFACTORING_PLAN.md](./SPRING_MODULITH_REFACTORING_PLAN.md)** - Full plan (Phase 4 details)

### Questions About Direction?
- Review [WHY_SPRING_MODULITH_FIRST.md](./WHY_SPRING_MODULITH_FIRST.md) for rationale
- Check [REFACTORING_ORDER_DECISION.md](./REFACTORING_ORDER_DECISION.md) for decision context
### For Context
- **[PHASE_1_COMPLETE.md](./PHASE_1_COMPLETE.md)** - Phase 1 summary
- **[PHASE_2_COMPLETE.md](./PHASE_2_COMPLETE.md)** - Phase 2 summary
- **[PHASE_3_COMPLETE.md](./PHASE_3_COMPLETE.md)** - Phase 3 summary
- **[WHY_SPRING_MODULITH_FIRST.md](./WHY_SPRING_MODULITH_FIRST.md)** - Rationale

### For Future
- **[../microservices/MICROSERVICES_IMPLEMENTATION_PLAN.md](../microservices/MICROSERVICES_IMPLEMENTATION_PLAN.md)** - Final goal

---

Expand All @@ -200,18 +208,18 @@ com.danielagapov.spawn/

### Time Investment
- **Phase 1 Time:** ~4 hours (actual)
- **Phase 2 Time:** ~2 hours (actual)
- **Estimated Total:** 6-8 weeks for all 6 phases
- **Time Remaining:** ~5-7 weeks
- **Time Remaining:** ~4-6 weeks

### Build Status
- **Compilation:** ✅ Successful
- **Tests:** ⚠️ Some may need updates in Phase 2
- **Tests:** ⚠️ Some legacy test issues
- **Runtime:** ✅ Application runs successfully

---

**Document Type:** Progress Tracker
**Audience:** Development Team
**Update Frequency:** After each phase completion
**Version:** 1.0

**Update Frequency:** After each phase/milestone
**Version:** 2.0
Loading