Technical assignment for the messenger, it is necessary to take a ready-made messenger solution (for example, Element/Matrix) and make minimal changes, adding the functionality of online message translation.
1. Introduction
Project goal:
Adapt an already existing open-source messenger (for example, Element based on Matrix) for corporate use (up to 100 users) while maintaining basic functionality. The main change is the integration of the online message translation feature.
Justification:
We use a ready-made messenger solution that already implements end-to-end encryption and multi-platform support (Windows, macOS, iOS, Android). The task is to make minimal changes, adding the ability to translate messages through an external API (for example, Google Translate or Microsoft Translator).
2. Main tasks
1. Analysis of the existing solution:
• Study the source code of the chosen messenger (Element/Matrix).
• Determine where the translation function can be integrated.
2. Integration of online translation:
• Add a "Translate" button to the interface next to each message.
• When the button is pressed, send the text (after local decryption) to the external translation API.
• Display the received translation next to the original message.
3. Verification of end-to-end encryption functionality:
• Ensure that the basic implementation of encryption works correctly.
• If necessary, make minimal changes to improve reliability without altering the basic logic.
4. Multi-platform support:
• Check the correct operation of the ready-made client on Windows, macOS, iOS, and Android platforms.
• Ensure that the translation integration works correctly on all supported platforms.
3. Functional requirements
• End-to-end encryption:
• Maintain the existing encryption mechanism (Olm/Megolm) without changes.
• Verify that all message exchanges remain secure.
• Online translation:
• Implement a "Translate" button in the chat interface.
• When the button is pressed, send the message text to the external translation API.
• Display the received translation next to the original text without breaking encryption.
• Multi-platform support:
• Use the ready-made Element client adapted for Windows, macOS, iOS, and Android.
• Check for consistent display and operation of the translation feature across all platforms.
• Registration and basic functionality:
• Keep the standard registration and all basic features implemented in the original solution.
Restrictions on the registration of random users:
To limit the registration of random users, the following approaches can be used:
• Invitation or code registration:
Allow registration only for those who have received a special registration code or invitation from the administrator.
• Email domain restriction:
Set up registration to accept only emails from a specific corporate domain.
• Manual approval:
Require administrator approval for registration before the account becomes active.
4. Implementation plan
1. Stage 1. Analysis:
• Study the chosen open-source solution.
• Identify integration points for adding the translation feature.
2. Stage 2. Integration of online translation:
• Develop the UI element (the "Translate" button).
• Integrate the call to the external translation API via a secure connection.
• Test the display of the translation next to the original message.
3. Stage 3. Testing and debugging:
• Functional testing on all platforms (Windows, macOS, iOS, Android).
• Verify the operation of end-to-end encryption after the changes.
• Fix any identified bugs and refine the interface.
4. Stage 4. Documentation:
• Prepare brief documentation on the changes made.
• Instructions for deploying and supporting the project.
5. Candidate requirements
• Experience with open-source solutions, especially with Matrix/Element.
• Knowledge of end-to-end encryption principles and API integration (for example, Google Translate).
• Experience in developing or adapting multi-platform applications.
• Ability to quickly understand existing code and make minimal changes.
6. Timelines and conditions
• Deadline: 4–6 weeks after the approval of the technical assignment.
• Budget: A minimal budget is possible, as the main part of the functionality is already implemented.
(Details are discussed with the candidate).
• Communication:
• Regular progress reports (weekly).
• Provision of intermediate versions for testing.