DailyFix - Backend Developer
Objective
The objective of this assignment is to deploy a Matrix Synapse homeserver on an AWS EC2
instance (using the free tier),
set up reverse proxying with NGINX, and configure a social media bridge (e.g., Mautrix LinkedIn or
Instagram). The developer will then
build a React application that allows users to connect their social media accounts (LinkedIn or
Instagram), and sync rooms and chats
from the Matrix server with their social platform over the application.
Tasks include:
1. Set up Matrix Synapse on EC2 instance with Docker or systemd.
2. Deploy a bridge (e.g., Mautrix LinkedIn or Instagram).
3. Use a reverse proxy (NGINX) to route traffic.
4. Configure a free domain using DuckDNS.
5. Develop a ReactJS/NextJS frontend that lets users log in and sync their social media chats and
rooms.
6. Test connectivity via Matrix clients like Element to ensure the bridge functions as expected.
Task Details
The following steps outline the process:
1. Set up Matrix Synapse on EC2 instance:
- Launch an EC2 instance (using the free tier) on AWS.
- Install Docker (or use systemd for installation).
- Set up Matrix Synapse homeserver inside the Docker container.
- Configure your Matrix homeserver with appropriate settings (e.g., server name, ports).
2. Install and Configure Mautrix Bridge:
- Choose a bridge (LinkedIn, Instagram, etc.).
- Follow the Mautrix documentation to set up the bridge for Matrix.
- Integrate the bridge with Matrix Synapse.
3. Set up Reverse Proxy (NGINX):
- Install NGINX on your EC2 instance.
- Configure NGINX to act as a reverse proxy to the Matrix Synapse homeserver.
4. Configure Free Domain (DuckDNS):
- Register for a free domain at DuckDNS.
- Update your NGINX configuration to use the DuckDNS domain for reverse proxy.
5. Develop a React Application:
- Set up a ReactJS/NextJS application.
- Use Matrix APIs to allow users to log in with their social media accounts (LinkedIn, Instagram).
- Sync user chats and rooms from Matrix to the React application.
6. Testing:
- Use Matrix clients (Element) to test the connection to the Matrix homeserver and the functionality
of the bridge.
- Ensure that the user interface in the React app reflects updates from the social media platform.
Required Resources
1. Matrix Synapse Documentation: https://matrix.org/ecosystem/bridges/
2. Mautrix LinkedIn/Instagram Bridge Docs: https://playground.matrix.org/#overview
3. Docker Installation: https://docs.docker.com/get-docker/
4. NGINX Reverse Proxy Setup:
https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-reverse-proxy
5. DuckDNS Documentation: https://www.duckdns.org/
6. React Documentation: https://reactjs.org/docs/getting-started.html
7. Matrix Client (Element) Setup: https://element.io/get-started
Evaluation Criteria
The assignment will be evaluated based on the following criteria:
1. Matrix Synapse Deployment:
- Successful setup of Matrix Synapse on EC2.
- Proper configuration of Docker/systemd for the homeserver.
2. Bridge Integration:
- The bridge (LinkedIn or Instagram) must be integrated and functional.
- Users should be able to connect their social media accounts to Matrix.
3. Reverse Proxy Setup:
- Proper reverse proxy configuration using NGINX.
- Correct handling of traffic routing to the Matrix Synapse server.
4. Domain Configuration:
- Correct configuration of the DuckDNS domain for reverse proxy.
5. React Application:
- A functional ReactJS/NextJS frontend that allows social media connections.
- Successful synchronization of rooms and chats from Matrix to the React app.
6. Testing & Validation:
- Validation of functionality using Matrix clients.
- Testing of bridge connectivity and room synchronization.
The candidate must submit the following:
- Code repository (GitHub or similar)
- Documented steps (with screenshots, if applicable)
- A video or demo link to showcase the final working project
- Deployed link of the application
- Deployed link of the Matrix homeserver (domained)