Iteration 3
Release Date: October 27, 2025
🎯 Overall Summary
Iteration 3 focuses on user management, authentication, authorization, and simulation control features. This release implements comprehensive user CRUD operations, admin capabilities, simulation ownership, task dispatching, route generation, and scenario management UI. The iteration also includes critical simulator improvements for task handling and simulation lifecycle management.
🏎️ Velocity
For the third iteration, we planned and successfully completed the following:
- ✅ US-7: Separation of Users (Authentication & Authorization) - Complete
- ✅ Frontend authentication and authorization (PR: #185)
- ✅ Navigation sidebar (PR: #227)
- ✅ Users management table with controls (PRs: #233, #245)
- ✅ Scenario editor page (PR: #230)
- ✅ Simulator controller implementation (PR: #147)
- ✅ Task dispatching in simulator (PR: #237)
- ✅ Route generation and management (PR: #224)
- ✅ Simulation end condition handling (PR: #242)
- ✅ Drag and drop task assignment (PR: #246)
- ✅ Documentation improvements (PR: #243)
For the third iteration, we planned but did not accomplish the following:
- ❌ Add Sim Instance Foreign Keys to Models (#196)
- ❌ Update CRUD Operations for Sim Instance Scoping (#197)
- ❌ Refactor API Endpoints to Sim-Instance Routes (#198)
- ❌ Scenario database model and CRUD (#201, #202)
- ❌ Scenario Pydantic schemas (#203)
- ❌ Scenario validation logic (#204)
- ❌ Scenario save/load endpoints (#205, #207, #208, #211)
- ❌ Task scheduling logic implementation (#223)
- ❌ Scenario config parsing utility (#222)
For the third iteration, we were able to get the following done early or as additional work:
- 🌱 Comprehensive UI for user management beyond planned admin features
- 🌱 Enhanced README documentation
- 🌱 Bug fixes for frame creation and task state transitions
💵 Contractor Estimate
| Artifact Type | Level of Effort | Estimated Price (CAD) |
|---|---|---|
| Backend User Management & Auth | High (65h) | $1,430 |
| Frontend Auth & User Management UI | Medium (45h) | $990 |
| Simulator Controller & Task Dispatching | High (55h) | $1,210 |
| Route Generation & Management | Medium (35h) | $770 |
| Scenario Editor UI | Medium (25h) | $550 |
| Simulation Lifecycle Management | Medium (30h) | $660 |
| Bug Fixes & Documentation | Low (15h) | $330 |
| Total | 270h | $5,940 |
Notes:
- Hourly rate: $22/hr (average co-op software engineering rate from Concordia — source).
- Total hours for artifact development: 65 + 45 + 55 + 35 + 25 + 30 + 15 = 270h.
- Total cost calculation: 270h × $22/hr = $5,940 CAD.
- The hours above represent only the time specifically spent on developing the listed software artifacts — not the total effort from all contributors during Iteration 3.
🔄 Retrospective
| Category | Feedback |
|---|---|
| What went well? | Big PRs merged |
| Got a lot done despite midterms | |
| Auth on track | |
| PRs reviewed fast (frontend) | |
| Got some potential future user stories already ready | |
| We have really good test coverage on our project | |
| What went wrong? | Huge PR blockers that took too long to merge |
| Midterms blockage | |
| Midterms / low capacity | |
| Everything has slowed down because of midterms | |
| Frontend has trouble doing anything with Sim not progressing (we be mocking the universe) | |
| Improvements | Ensuring that PR reviews stay on scope to get faster approval |
📋 Contributions by Individuals
@Niravanaa - Nirav Patel [ID: 40248940]
-
CI: License validation fix in #226
- Fixed dependency discrepancy in .venv for license validation
- Ensured compliance checks run correctly
-
Backend: CI workflow and simulation service improvements in #232
- Added CI workflow for automated testing
- Refactored simulation service methods for clarity
- Improved code maintainability
-
Docs: README improvements in #243
- Updated README for improved clarity and structure
- Enhanced developer onboarding documentation
- Added better project overview and setup instructions
@briantkatch - Brian Tkatch [ID: 40191139]
-
Backend: User creation endpoint in #172
- Implemented POST /api/v1/users endpoint
- Added Pydantic schemas for user creation
- Enforced username uniqueness and password hashing
-
Backend: Password reset functionality in #175
- Implemented password change endpoint
- Added admin and self-service password reset
- Maintained security with Argon2 hashing
-
Backend: List users endpoint in #177
- Implemented GET /api/v1/users with pagination
- Added filtering by enabled status and admin role
- Returned paginated responses with metadata
-
Backend: Role update endpoint in #178
- Implemented role management for users
- Added PUT /api/v1/users/{user_id}/role endpoint
- Enforced admin-only access for role changes
-
Backend: User enable/disable in #234
- Added is_enabled field to User model
- Implemented enable/disable functionality
- Updated authentication to check enabled status
-
Backend: User get endpoint in #238
- Implemented GET /api/v1/users/{user_id} endpoint
- Added permission checks for user access
- Enabled users to view their own details
@mahutt - Thomas Mahut [ID: 40249811]
-
Frontend: Login page and auth state management in #185
- Created login page with form validation
- Implemented authentication state management
- Added JWT token storage and refresh logic
-
Frontend: Navigation sidebar in #227
- Created responsive navigation sidebar
- Added route navigation and user menu
- Integrated with authentication state
-
Frontend: Users management table in #233
- Implemented user management table component
- Added user listing with pagination
- Created admin controls for user management
-
Frontend: Password reset functionality in #240
- Added password reset form
- Implemented admin and self-service reset flows
- Connected to backend password change endpoint
-
Frontend: Enable state toggle in #245
- Added toggle controls to users table
- Implemented enable/disable functionality
- Updated UI to reflect user status
@Jpuntul - Jutipong Puntuleng [ID: 40080233]
- Frontend: Scenario editor page in #230
- Created scenario editor interface
- Implemented scenario creation and editing UI
- Added form validation for scenario data
@vinishamanek - Vinisha Manek [ID: 40229456]
-
Frontend: Drag and drop task assignment in #246
- Implemented drag and drop functionality
- Enabled task assignment to resources via UI
- Added visual feedback for drag operations
-
Docs: Wiki contributions in Repo Wiki
@Verdone - Giuliano Verdone [ID: 40252190]
-
Backend: Station task status migration in #171
- Fixed station task status database migration
- Ensured proper task state tracking
-
Backend: Link sim instances to users in #241
- Implemented simulation ownership tracking
- Added authorization checks for simulation operations
- Created GET /api/v1/simulations/my endpoint
-
Docs: Wiki contributions in Repo Wiki
@MeSumo - Sumer Abd Alla [ID: 40247712]
-
Sim: Task state transition fix in #174
- Fixed task state from dispatched to in-progress
- Corrected task lifecycle state machine
-
Sim: Frame creation error resolution in #236
- Fixed frame creation errors in simulator
- Improved frame emission reliability
-
Sim: Task dispatching implementation in #237
- Implemented general task dispatching logic
- Added task assignment to resources
- Integrated with simulator controller
-
Docs: Wiki contributions in Repo Wiki
@Ambrose821 - Ambrose McLaughlin [ID: 40239754]
-
Sim: Simulator controller in #147
- Created simulator controller implementation
- Integrated with SimPy environment
- Managed simulation execution flow
-
Sim: Simulation end condition in #242
- Established end conditions for simulation
- Implemented simulation completion handling
- Added proper cleanup on simulation end
@CarciDev - David Carciente [ID: 40247907]
- Sim: Route generation and management in #224
- Implemented route generation algorithms
- Added route management functionality
- Created path planning for resources
- Docs: Backlog creation
- Documented over 25 new user stories to be planned over release 2 and 3.
@Michael-Mezzacappa - Michael Mezzacappa [ID: 40263789]
- Backend: Researched and evaluated different Python logging libraries in order to improve the current solution implemented for logging.
@cmezzac - Christopher Mezzacappa [ID: 40249451]
- Sim: Scenario configuration schema in #247
- Draft PR created in time, pushed to next release for approval.
- Defined comprehensive JSON schema for simulation input parameters
- Collaborated closely with backend, frontend, and stakeholder teams to align schema requirements
- Ensured schema validation logic integrates cleanly with the simulator’s configuration loader
- Added robust unit tests to verify schema compliance and data integrity
- Improved documentation and clarified input structure for developers and testers
What's Changed
- bugfix: add station task status migration by @Verdone in #171
- feat: Implement user create endpoint by @briantkatch in #172
- feat: create simulator controller by @Ambrose821 in #147
- feat: Add login page and frontend auth state management by @mahutt in #185
- bugfix: replace dispatched task state with in-progress by @MeSumo in #174
- Create navigation sidebar by @mahutt in #227
- bugfix: license validation dependency discrepancy in .venv by @Niravanaa in #226
- feat: Implement password change by @briantkatch in #175
- fix: add CI workflow and update simulation service methods for clarity by @Niravanaa in #232
- Implement list user endpoint by @briantkatch in #177
- Feature/169 role update endpoint by @briantkatch in #178
- feat: create scenario editor page by @Jpuntul in #230
- feat: add users management table by @mahutt in #233
- fix: Resolves Frame Creation Error by @MeSumo in #236
- Feature/168 user enable disable by @briantkatch in #234
- Feature/122 user get endpoint by @briantkatch in #238
- feat: Link Sim Instances to Users #195 by @Verdone in #241
- feat: add frontend password reset functionality by @mahutt in #240
- feat: Handle General Task Dispatching in Sim by @MeSumo in #237
- feat: Route Generation and Management by @CarciDev in #224
- feat: add enable state toggle to users table by @mahutt in #245
- docs: Update README for improved clarity and structure #2 by @Niravanaa in #243
- feat: Add drag and drop functionality for task to resource assignment by @vinishamanek in #246
- feat: Establish an end to the simulation by @Ambrose821 in #242
Full Changelog: Iteration2...Iteration3