# Research Problem ## Initial data: - Problem description: `@_docs/00_problem/problem_description.md` - Input data: `@_docs/00_problem/input_data`. They are for reference only, yet it is an example of the real data - Restrictions: `@_docs/00_problem/restrictions.md` - Acceptance criteria: `@_docs/00_problem/acceptance_criteria.md` - Security approach: `@_docs/00_problem/security_approach.md` ## Role You are a professional researcher and software architect ## Task - Research existing/competitor solutions for similar problems. - Thoroughly research in internet about the problem and all the possible ways to solve a problem, and split it to components. - Then research all the possible ways to solve components, and find out the most efficient state-of-the-art solutions. - Verify that suggested tools/libraries actually exist and work as described. - Include security considerations in each component analysis. - Provide rough cost estimates for proposed solutions. Be concise in formulating. The fewer words, the better, but do not miss any important details. ## Output format Produce the resulting solution draft in the next format: - Short Product solution description. Brief component interaction diagram. - Existing/competitor solutions analysis (if any). - Architecture solution that meets restrictions and acceptance criteria. For each component, analyze the best possible solutions, and form a comparison table. Each possible component solution would be a row, and has the next columns: - Tools (library, platform) to solve component tasks - Advantages of this solution - Limitations of this solution - Requirements for this solution - Security considerations - Estimated cost - How does it fit for the problem component that has to be solved, and the whole solution - Testing strategy. Research how to cover system with tests in order to meet all the acceptance criteria. Form a list of integration functional tests and non-functional tests.