Self-evaluation

Ethar Mohammed Hassan Ali

During this project, I contributed to all major phases, from initial setup and architecture alignment to implementation, testing, CI/CD configuration, release flow, and documentation updates. I worked on structuring the project according to the template requirements and ensuring the software remained functional both locally and in hosted environments.

Role and contributions

I worked as the main contributor across implementation and integration tasks, with the following responsibilities:

  • Designed and maintained the layered structure (application, infrastructure, ui) in line with the course template.
  • Implemented and integrated core application features: user authentication, watchlist management, watched-history tracking, movie details retrieval, and recommendation flow.
  • Developed and refined the Streamlit user interface, including search interactions, account area, recommendation/trending sections, and user feedback handling.
  • Implemented persistence and data handling through SQLite, including account and interaction data storage.
  • Improved project quality practices by working on automated tests, fixing CI failures, and aligning workflows for branch checks and releases.
  • Worked on release and packaging activities (Poetry, semantic-release/TestPyPI), including version-alignment fixes and deployment troubleshooting.
  • Contributed to report/documentation sections (for example concept, deployment, future work updates, and consistency fixes).

Strengths of the product

  • Clear and understandable project organization with separation of responsibilities.
  • End-to-end user flow is available: account creation/login, preference handling, watchlist/watched tracking, and recommendations.
  • Local setup and execution are straightforward using Poetry and SQLite.
  • CI/CD and release workflow are in place and usable.
  • Integration with external movie metadata APIs provides useful and rich movie information for users.

Weaknesses and limitations

  • Recommendation logic is currently heuristic and can be improved with more advanced ranking methods.
  • The system depends on external APIs (OMDb/TMDb), so missing keys, rate limits, or network issues may reduce functionality.
  • Hosted deployment may require extra attention for environment/runtime details (secrets, packaging behavior, persistence constraints).
  • Some UI/UX aspects can be further polished for clarity and consistency.
  • Testing is solid for core logic, but broader end-to-end UI coverage can still be expanded.

Kosar Mazaheri

My Role in the Project

In this project, I mainly focused on the backend logic and quality assurance aspects of the system. My primary contributions were:

  • Implementing the OMDb API integration

  • Writing and structuring the unit tests

  • Understanding and managing the CI/CD workflow

  • Contributing significantly to the technical sections of the report

I also spent a considerable amount of time resolving integration issues between branches and stabilizing the system before the first release.

I would describe my role as someone who focused on making the system reliable, structured, and professionally organized.


What I Contributed

OMDb Integration

I was responsible for integrating the OMDb external API into the application. This required:

  • Designing a separate OmdbClient to respect the layered architecture

  • Making sure the UI did not directly call the API

  • Handling errors properly (e.g., missing API key, movie not found)

  • Managing environment configuration for the API key

This part was challenging because it introduced external dependencies and required careful architectural consistency.


Testing

I developed the unit tests for the application layer. My goal was to ensure that:

  • Business logic was properly validated

  • Delegation between layers worked correctly

  • Future changes would not silently break functionality

Writing tests forced me to deeply understand the system structure and exposed several inconsistencies that I later fixed.


CI/CD and Workflow

I reviewed and worked with the GitHub Actions workflows to understand how:

  • Static checks and type validation were performed

  • Tests were executed across multiple operating systems and Python versions

  • Releases were automated

Although I did not design the entire pipeline from scratch, I ensured it remained functional after structural changes and during integration.


Strengths of the Product

  • The architecture is clean and well separated into layers.

  • The system is testable and includes automated validation.

  • The integration with an external API makes the application realistic.

  • The CI pipeline enforces a professional development process.

I believe the product reflects a good balance between simplicity and engineering discipline.


Weaknesses of the Product

  • The system is not designed for scalability; it would need architectural redesign for production-level use.

  • Password handling is simplified for academic purposes and not secure enough for real-world deployment.

  • UI testing is minimal.

  • The system relies directly on the external API without caching or fallback strategies.

These are limitations we accepted due to time and scope constraints.


My Strengths During the Project

  • I was persistent when debugging difficult integration and configuration issues.

  • I paid close attention to architectural consistency.

  • I tried to maintain professional standards in testing and documentation.

  • I connected implementation decisions with report explanations.


Areas Where I Could Improve

  • I could have synchronized earlier with teammates to reduce merge conflicts.

  • I could have planned database schema evolution more proactively.

  • I could have introduced integration tests earlier in development.

This project showed me how important early coordination and planning are in collaborative development.


Final Reflection

This project helped me better understand:

  • Practical layered architecture

  • API integration in real applications

  • The importance of automated testing

  • How CI/CD supports team collaboration

More importantly, it helped me experience what it means to work on a structured software project rather than just writing isolated code. I learned not only technical skills, but also workflow discipline and collaboration awareness.


Personal reflection

This project helped me improve practical software engineering skills beyond coding only: structuring a project, maintaining branch/release discipline, debugging deployment issues, and managing CI/CD and packaging workflows in a realistic team setting. It also highlighted areas where I want to improve further, especially recommendation design quality, deployment robustness, and test depth.


This site uses Just the Docs, a documentation theme for Jekyll.