Iteration 2
Release Date: October 13, 2025
🎯 Overall Summary
Iteration 2 establishes the core backend infrastructure and simulation capabilities for VeloSim. This release focuses on implementing database models, authentication, WebSocket communication, simulation management, and foundational UI components for the map-based dispatcher interface.
🏎️ Velocity
For the second iteration, we planned and successfully completed the following:
- ✅ Backend database setup with PostgreSQL and Alembic migrations (PR: #85)
- ✅ Authentication system with JWT tokens (PR: #139)
- ✅ Station and task entity management endpoints (PRs: #85, #89, #94, #98, #131)
- ✅ Resource entity implementation and endpoints (PRs: #86, #130, #142, #150)
- ✅ WebSocket-based simulation streaming architecture (PR: #146)
- ✅ Frame emitter for real-time simulation updates (PR: #108)
- ✅ Interactive map with station markers and task indicators (PRs: #82, #92, #106)
- ✅ Moving resource markers on map (PR: #93)
- ✅ Item selection functionality on map (PR: #105)
- ✅ Resource bar and selected item bar UI components (PRs: #138, #143, #144)
- ✅ Simulation speed control endpoint (PR: #140)
- ✅ Grafana and Loki logging infrastructure (PR: #141)
- ✅ License validation for dependencies (PR: #102)
- ✅ OSM data storage and connection (PR: #103)
For the second iteration, we planned but did not accomplish the following:
- ❌ US-1: View Station Locations - 9/14 subtasks completed (#6)
- ❌ Simulator controller implementation (#36)
- ❌ Sim behaviour interface (#30)
- ❌ Route ADT creation (#32)
- ❌ Path creation module (#33)
- ❌ Acceptance test implementation: AT-1.1, AT-1.2, AT-1.3, AT-1.4 (#54, #55, #56, #57)
- ❌ Acceptance testing strategy (deferred to Iteration 3 for QA team)
For the second iteration, we were able to get the following done early or as additional work:
- 🌱 Basic WebSocket architecture established ahead of schedule
- 🌱 Enhanced CI with license validation and code coverage improvements
💵 Contractor Estimate
| Artifact Type | Level of Effort | Estimated Price (CAD) |
|---|---|---|
| Backend Database & API Development | High (75h) | $1,650 |
| Authentication System | Medium (35h) | $770 |
| WebSocket Architecture | High (50h) | $1,100 |
| Frontend Map & UI Components | Medium (42.5h) | $935 |
| Logging & Monitoring Setup | Medium (22.5h) | $495 |
| Testing & CI Enhancements | Medium (22.5h) | $495 |
| Total | 247.5h | $5,445 |
Notes:
- Hourly rate: $22/hr (average co-op software engineering rate from Concordia — source).
- Total hours for artifact development: 75 + 35 + 50 + 42.5 + 22.5 + 22.5 = 247.5h.
- Total cost calculation: 247.5h × $22/hr = $5,445 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 2.
🔄 Retrospective
| Category | Feedback |
|---|---|
| What went well? | Finished most planned tasks! |
| Fares likes our progress | |
| Good progress building up to Release 1 | |
| Diagrams and PR descriptions have been detailed! | |
| Reviews have been quick and thorough! (front) | |
| What went wrong? | Not much QA time to determine acceptance criteria validation strategy. Should get that done in Iteration 3 |
| Some missed sub-team communication | |
| Not really sure status of other sub-teams and if they are on track to finish their tasks | |
| Improvements | More inter-team collaboration for relevant tasks |
| Being more proactive on planning | |
| Meetings were a bit intense / felt a bit dogpiled sometimes | |
| Should stakeholder be officially signing off the user stories (e.g., through GitHub comment on the Story issues?) | |
| New Discord sound effects | |
| Avoid making issues for standalone technical tasks (excludes bugs); instead, nest them in the user stories | |
| Don't leave PRs till last minute | |
| Team bonding activity | |
| Need a structured way to convey progress to stakeholder (diagrams through sim, endpoint docs/diagrams through back, front-end as is) | |
| Make sure to locally test new changes before pushing to avoid creating too many fix commits for lint/formatting | |
| Not entire team has pre-commit hook installed on local machines, avoids CI running back-and-forth/numerous commits |
📋 Contributions by Individuals
@Niravanaa - Nirav Patel [ID: 40248940]
-
Backend: Database setup and station endpoints in #85
- Established PostgreSQL database with Alembic migrations
- Implemented station CRUD operations and endpoints
- Set up database session management
-
Backend: Import path refactoring in #91
- Updated import paths to use 'back' prefix for consistency
- Improved code organization and maintainability
-
CI: Code coverage improvements in #97
- Updated Codecov configuration with component flags
- Enhanced coverage reporting
-
Backend: Database utility commands in #101
- Added dropseed command for database management
- Improved developer workflow
-
CI: License validation in #102
- Added automated license validation script
- Updated package configurations for compliance
-
Backend: Simulation management API in #146
- Implemented simulation start/stop endpoints
- Added WebSocket streaming for real-time updates
- Integrated simulation service layer
-
Docs: Wiki contributions in Repo Wiki
@briantkatch - Brian Tkatch [ID: 40191139]
-
CI: Git configuration improvements in #88
- Added .python-version to .gitignore
- Improved development environment consistency
-
Backend: Task database models in #89
- Implemented StationTask database models
- Added CRUD operations for tasks
-
Backend: Task seed data in #94
- Created seed data for StationTasks
- Enabled realistic testing scenarios
-
Backend: Task endpoints in #98
- Implemented task management endpoints
- Added filtering and pagination support
-
Backend: User and authentication schemas in #129
- Created schemas for users, auth, and sim instances
- Established data validation patterns
-
Backend: Authentication implementation in #139
- Implemented JWT-based authentication system
- Added password hashing with Argon2
- Created login and token validation endpoints
-
Backend: Station task types endpoint in #149
- Exposed task types endpoint for frontend consumption
- Added task status enumeration support
-
Docs: Wiki contributions in Repo Wiki
@mahutt - Thomas Mahut [ID: 40249811]
-
Frontend: Station markers on map in #82
- Added interactive station markers to map
- Implemented SimulationProvider for state management
- Integrated with backend station data
-
Frontend: Backend integration for stations in #92
- Connected frontend to backend station endpoints
- Set up data fetching and state management
-
Frontend: Task count indicators in #106
- Updated station markers to display task counts
- Enhanced visual feedback for station status
-
Docs: Wiki contributions in Repo Wiki
- Updated Infrastructure and Tools documentation with frontend technology decisions.
- Updated Meeting Minutes Template for better documentation structure.
- Updated General meeting documentation.
- Updated Glossary with project-specific terminology.
- Updated Budget documentation.
- List of Revisions: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
@cmezzac - Christopher Mezzacappa [ID: 40249451]
-
Sim: Backend communication in #84
- Established communication patterns to send data to backend
- Coordinated integration between sim and backend teams
-
Sim: Frame emitter setup in #108
- Implemented frame emitter for real-time simulation updates
- Integrated with WebSocket streaming architecture
-
Docs: Wiki contributions in Repo Wiki
- Created documentation on editing commit messages.
- List of Revisions: 1
@vinishamanek - Vinisha Manek [ID: 40229456]
-
Sim: Resource entity implementation in #86
- Implemented Resource entity with position and routing
- Added resource type system
- Created a class diagram for simulation entities
-
Frontend: Resource bar components in #138
- Created resource bar UI components
- Implemented resource listing and selection
- Enabled resource selection from resource bar
-
Frontend: Resource search functionality in #144
- Added search bar to resource component
- Enhanced resource filtering capabilities
-
Docs: Wiki contributions in Repo Wiki
@Jpuntul - Jutipong Puntuleng [ID: 40080233]
-
Frontend: Moving resource markers in #93
- Added animated resource markers to map
- Implemented real-time position updates
-
Frontend: Item selection from map in #105
- Enabled interactive selection of map items
- Connected selection to UI state management
-
Frontend: Selected item bar in #143
- Created selected item bar component
- Displayed details of selected stations/resources
@Verdone - Giuliano Verdone [ID: 40252190]
-
Backend: Resource database models in #130
- Implemented DB/CRUD models for resources
- Added resource type system and relationships
-
Backend: Resource seed data in #142
- Created seed data for Resources
- Enabled realistic testing scenarios with multiple resource types
-
Backend: Resource endpoints in #150
- Exposed endpoints to retrieve resource entities
- Added resource types endpoint for frontend consumption
- Implemented filtering and pagination
-
Docs: Wiki contributions in Repo Wiki
@MeSumo - Sumer Abd Alla [ID: 40247712]
-
Backend: OSM data integration in #103
- Researched OSM data and tools
- Added OpenStreetMap data storage and connection
- Set up geographical data infrastructure
-
Sim: Task entity implementation in #131
- Created Task entity for simulation
- Integrated with station task system
- Updated Station and Resource entity
-
Docs: Wiki contributions in Repo Wiki
@Michael-Mezzacappa - Michael Mezzacappa [ID: 40263789]
-
Backend: Simulation speed control in #140
- Exposed endpoint to set simulation speed
- Implemented playback speed control functionality
-
Infra: Grafana and Loki logging in #141
- Set up Grafana for monitoring dashboards
- Configured Loki for log aggregation
- Established logging infrastructure
@Ambrose821 - Ambrose McLaughlin [ID: 40239754]
-
Continued research on simulation pacing and real-time control
-
Supported frame emitter implementation
-
Docs: Wiki contributions in Repo Wiki
@CarciDev - David Carciente [ID: 40247907]
- Led sprint-planning meetings and retrospective
What's Changed
- Add station markers to map by @mahutt in #82
- Establish communication to send data to backend by @cmezzac in #84
- feat: setup db, commands, and preliminary station endpoints by @Niravanaa in #85
- refactor: update import paths to use 'back' prefix for consistency by @Niravanaa in #91
- feat: Implement Resource entity by @vinishamanek in #86
- feat: set stations state from backend call by @mahutt in #92
- ci: Ignore .python-version in git by @briantkatch in #88
- feat: Add db/crud models for tasks by @briantkatch in #89
- feat: Add seed data for StationTasks by @briantkatch in #94
- fix: update Codecov configuration to include component flags by @Niravanaa in #97
- feat: add dropseed command by @Niravanaa in #101
- feat: add moving resource markers to map by @Jpuntul in #93
- feat: Implement tasks endpoints by @briantkatch in #98
- feat: enable item selection from map by @Jpuntul in #105
- feat: add license validation script and update package configurations by @Niravanaa in #102
- feat: set up frame emitter by @cmezzac in #108
- feat: update station marker to display task count by @mahutt in #106
- feat: Add schemas for users, auth, sim instances by @briantkatch in #129
- feat: add DB/CRUD models for resources #45 by @Verdone in #130
- feat: create resource bar components by @vinishamanek in #138
- feat: add osm data storage and connection by @MeSumo in #103
- feat: create selected item bar component by @Jpuntul in #143
- feat: Create Task Entity by @MeSumo in #131
- feat: add search bar to resource by @vinishamanek in #144
- feat: Add seed data for Resources #46 by @Verdone in #142
- Feature/118 126 auth implementation by @briantkatch in #139
- feat: expose endpoint to retrieve resource entities #48 and types #47 by @Verdone in #150
- feat: Implement station task types endpoint by @briantkatch in #149
- Feature/53 expose endpoint to set simulation speed by @Michael-Mezzacappa in #140
- Feature/104 set up grafana and loki for logging by @Michael-Mezzacappa in #141
- feat: implement basic simulation management API and WebSocket streaming by @Niravanaa in #146
Full Changelog: Iteration1...Iteration2