Java Spring-Boot & Core-Java senior for matrix.org chat & synapse API implemen.
Budget: $10 – $150 USD
We look for Java Spring-Boog and Core-Java senior expert developer
Your job will be to implement requirements which are mutually agreed on this API
https://playground.matrix.org/#overview
maybe helpful:
https://matrix.org/docs/matrix-concepts/elements-of-matrix/
https://matrix.org/docs/chat_basics/matrix-for-im/
Mandatory!!!!
You have to have a installed matrix synapse on PC/Laptop and on your smartphone to run on your local environment. You document EACH step
you can run locally via:
https://hub.docker.com/r/matrixdotorg/synapse
Milestones
MS1:
- install via docker your local matrix, document the steps in a install.md file
- provide existing openapi yml or json file (preferably ver3.x)
...see here: https://github.com/matrix-org/matrix-spec/blob/main/scripts/dump-openapi.py and here https://playground.matrix.org/#overview
...The openapi generator will be provided by us! You only provide the openapi yml / json
- your first development task is to implement a spring boot service to invite users to the matrix.
...- sendNewUserRegistrations(List<UserDTO>)
... send a template e-mail to users to invite them to register an account
...- createNewPrivateGroupChats(List<GroupChatDto>, SpaceDto)
... create the list of (private) group chats into the given Space
...- inviteNewUsers(List<UserDTO>, List<GroupChatDto>)
... invite the given list of users to the list of GroupChats
...- elevatePermissions(List<UserDTO>, List<RoleDTO>, List<GroupChatDto>)
... elevate the given users into the given Roles (e.g. Moderator, Admin) on the given Chats
...- remoteAllPermissions(List<UserDTO>, List<GroupChatDto>)
... remove the given user's permissions on the given Chats
...- remoteUsersFromGroups(List<UserDTO>, List<GroupChatDto>)
... remove the given user's completely from the given chats
MS2:
Implement a spring boot service to send matrix messages on
- direct messages
sendMatrixDirectMessages(List<MessageDto>, List<UserDto>)
- group messages
sendMatrixGroupMessages(List<MessageDto>, List<GroupChatDto>)
MS-later:
- implement a bridge to work via e-mail between group chat and e-mail mailbox
Implementations:
- a Interface representing the above methods
- the impl of the interface
- the DTOs are hardcoded examples in multiple JUnit tests, so that the JUnit tests is basically your "main" method replacement with multiple entry points
- best practices in software engineering
- best practices in spring-boot implementation
NO UI for now required!
NO database required!
No REST endpoint exposing for the above named methods required! (only consuming the apis in the given links)
Your background is:
- multiple years of experience with Java
- multiple years of experience with REST APIs
If you are a good fit, you are open to get more tasks about implementing solutions fully on your own (e.g. with your team)
Budget?
will not be disclosed, place your best bid to get considered
What is next?
We will share you a NDA and afterwards a paid test task.
Payment?
- you estimate in a WBS (optimistic, expected, pessimistic, where optimistic < expected < pessimistic) after getting the task
- we discuss about clearances and effort
- we mutually agree to effort
- we assign you the task after mutually agreed
- you implement, test and deliver
- you provide also unit /integration tests to ensure code is always working
- you document each required step to make interaction of systems to work
- we test on our premise (you maybe help to fix issues)
- we pay
(basically the rules of freelancer)
Closed book vs open book?
We work only on open book.
Closed book means you are unwilling to define a WBS for the work and you add only a price tag to the task.
We are sorry we will not hire you in such a case!
Deliveries?
- in our on premise git (access will be granted to you)
- full sources
- mutliple samples of body and responses of the api in test/resources which will be used as unit tests
- maven
- your code passes our CI build (with provided maven pom.xml can be checked)
- libs, need prior confirm and we prefer to use mostly latest stable versions
- named requirements are mandatory. Changes may be required, but you have to get a prior clearance with us, why and how to change. We will not accept changes, which have not been clarified with us before.
- JDK 17 (mostly LTS)
- your api access code working on our end
- you may require to help us here on setup
- used libs and apis are on latest stable version
- docker compose setup & readme to run locally on your machine and (we will use it on CI/CD, if you are able to handle we place you an addition milestone for it)
- we require, depending on availability and on complexity 2-4 weeks test time per milestone. Usually clearly less
Your job will be to implement requirements which are mutually agreed on this API
https://playground.matrix.org/#overview
maybe helpful:
https://matrix.org/docs/matrix-concepts/elements-of-matrix/
https://matrix.org/docs/chat_basics/matrix-for-im/
Mandatory!!!!
You have to have a installed matrix synapse on PC/Laptop and on your smartphone to run on your local environment. You document EACH step
you can run locally via:
https://hub.docker.com/r/matrixdotorg/synapse
Milestones
MS1:
- install via docker your local matrix, document the steps in a install.md file
- provide existing openapi yml or json file (preferably ver3.x)
...see here: https://github.com/matrix-org/matrix-spec/blob/main/scripts/dump-openapi.py and here https://playground.matrix.org/#overview
...The openapi generator will be provided by us! You only provide the openapi yml / json
- your first development task is to implement a spring boot service to invite users to the matrix.
...- sendNewUserRegistrations(List<UserDTO>)
... send a template e-mail to users to invite them to register an account
...- createNewPrivateGroupChats(List<GroupChatDto>, SpaceDto)
... create the list of (private) group chats into the given Space
...- inviteNewUsers(List<UserDTO>, List<GroupChatDto>)
... invite the given list of users to the list of GroupChats
...- elevatePermissions(List<UserDTO>, List<RoleDTO>, List<GroupChatDto>)
... elevate the given users into the given Roles (e.g. Moderator, Admin) on the given Chats
...- remoteAllPermissions(List<UserDTO>, List<GroupChatDto>)
... remove the given user's permissions on the given Chats
...- remoteUsersFromGroups(List<UserDTO>, List<GroupChatDto>)
... remove the given user's completely from the given chats
MS2:
Implement a spring boot service to send matrix messages on
- direct messages
sendMatrixDirectMessages(List<MessageDto>, List<UserDto>)
- group messages
sendMatrixGroupMessages(List<MessageDto>, List<GroupChatDto>)
MS-later:
- implement a bridge to work via e-mail between group chat and e-mail mailbox
Implementations:
- a Interface representing the above methods
- the impl of the interface
- the DTOs are hardcoded examples in multiple JUnit tests, so that the JUnit tests is basically your "main" method replacement with multiple entry points
- best practices in software engineering
- best practices in spring-boot implementation
NO UI for now required!
NO database required!
No REST endpoint exposing for the above named methods required! (only consuming the apis in the given links)
Your background is:
- multiple years of experience with Java
- multiple years of experience with REST APIs
If you are a good fit, you are open to get more tasks about implementing solutions fully on your own (e.g. with your team)
Budget?
will not be disclosed, place your best bid to get considered
What is next?
We will share you a NDA and afterwards a paid test task.
Payment?
- you estimate in a WBS (optimistic, expected, pessimistic, where optimistic < expected < pessimistic) after getting the task
- we discuss about clearances and effort
- we mutually agree to effort
- we assign you the task after mutually agreed
- you implement, test and deliver
- you provide also unit /integration tests to ensure code is always working
- you document each required step to make interaction of systems to work
- we test on our premise (you maybe help to fix issues)
- we pay
(basically the rules of freelancer)
Closed book vs open book?
We work only on open book.
Closed book means you are unwilling to define a WBS for the work and you add only a price tag to the task.
We are sorry we will not hire you in such a case!
Deliveries?
- in our on premise git (access will be granted to you)
- full sources
- mutliple samples of body and responses of the api in test/resources which will be used as unit tests
- maven
- your code passes our CI build (with provided maven pom.xml can be checked)
- libs, need prior confirm and we prefer to use mostly latest stable versions
- named requirements are mandatory. Changes may be required, but you have to get a prior clearance with us, why and how to change. We will not accept changes, which have not been clarified with us before.
- JDK 17 (mostly LTS)
- your api access code working on our end
- you may require to help us here on setup
- used libs and apis are on latest stable version
- docker compose setup & readme to run locally on your machine and (we will use it on CI/CD, if you are able to handle we place you an addition milestone for it)
- we require, depending on availability and on complexity 2-4 weeks test time per milestone. Usually clearly less
Related categories:
Business, Accounting, Human Resources & Legal
Java Spring
RESTful API
Chatbot
Spring Boot