Weekly report
| Student: | @student.ucll.be |
| Study: Professional Bachelor | Major: ICT |
| Company: Yappa | City: Bilzen |
Activities Week 06 (16/03/2026 - 20/03/2026)
Monday (Day 26)
I started the week by resolving the remaining code review comments from Davy Dewit on the previous week's pull requests. I undertook a comprehensive refactoring of the Symfony backend codebase to improve its readability and maintainability. This involved updating approximately 30 files, where I focused on extracting hardcoded "magic strings" into 16 dedicated constants files (such as RouteConstants, ErrorMessages, and NotionConstants). I also decoupled core logic by moving methods from controllers into specialized services, ensuring a cleaner separation of concerns and more robust Unit Tests.
Tuesday (Day 27)
I continued the refactoring process, shifting my focus to the Slack repository. My goal was to modularize the project structure to make it more digestible for future development. I reorganized the repository by grouping related features and domains together, specifically separating view modals, actions, and submissions into their own directories. This architectural shift resulted in the codebase growing from 20 TypeScript files to over 80, significantly improving the scalability of the Slack Bolt application. I also updated the VitePress documentation to reflect these structural changes and ensured the AI Summary logic was correctly mapped to the new service structure.
Wednesday (Day 28)
Today, I implemented end-to-end (E2E) testing for both the Symfony and Slack servers, allowing every interaction and action to be validated in a real-world scenario. I utilized Playwright for the test framework and integrated a .husky pre-commit hook to ensure tests run before every commit. Furthermore, I added e2e-test.yml to the CI pipeline so that GitHub Actions automatically verifies the codebase upon every push.
Thursday (Day 29)
I worked on the MVP by adding a subscription feature for categories. Users can now use the Slack App Home to select any category (thematische lijst) and subscribe to automated digest reports. Currently, these reports are delivered via Slack direct messages (DM) and contain an AI-generated summary of all knowledge items shared within the selected period. In the afternoon, Team Flow (the development team at Yappa) held their sprint retrospective, the "wrap-up." I gained valuable insights into project operations, billable hours, billability metrics, and scope management.
Friday (Day 30)
I further refined the subscription and digest delivery features of the MVP and addressed the code review feedback received from Davy on the POC digest pull requests. This involved ensuring that the delivery logic is robust and integrates seamlessly with the existing notification system.
New skills
- Advanced Symfony architectural refactoring and service decoupling
- Modularizing large-scale Slack Bolt (TypeScript) applications
- Implementing comprehensive Constants systems to eliminate magic strings
- Organizing complex repository structures for better maintainability
Useful data
- Notion Databases: https://www.notion.so/YapHub-Links-31ae292a15d5808da7bae92680db3518
- VitePress Documentation (Cloudflare Pages): https://knowledgehub-aks.pages.dev
- Project Repository: Refactored structure in
backend/andslack/
Remarks
This week was dedicated to "paying off" technical debt and preparing the codebase for the MVP launch. By focusing on refactoring early, I've ensured that the Symfony and Slack components are much easier to navigate and test. The transition from a monolithic structure to a modular one in the Slack app was particularly challenging but rewarding, as it now follows clear domain-driven design principles.