Simple application to be developed as a recruitment test.
Build a simple social networking application, similar to Twitter, and expose it through a web API. The application should support the scenarios below.
A user should be able to post a 140 character message.
A user should be able to see a list of the messages they've posted, in reverse chronological order.
A user should be able to follow another user. Following doesn't have to be reciprocal: Alice can follow Bob without Bob having to follow Alice.
A user should be able to see a list of the messages posted by all the people they follow, in reverse chronological order.
Implementation done using the following stack:
- Java 8
- Maven
- Spring boot
- Spring MVC
- No database implemented so far
- JUnit
- Postman
This project use project Lombok, please use the required plugin in your IDE
API documentation is made using the OpenAPI specification in the OpenApi.yaml file.
A deployed version of the documentation can be found here, however, have in mind that given crossdomain constraints you will not be able to use the "try now" feature against a localhost deploy.
The application has a set of integration tests that can also be used as live documentation, in order to check them please see the following postman collection.
This application is made with maven, in order to compile please run clean package.
Next are the instructions to run the application in different ways, please note that in all cases the application will start under address 'localhost:8080' and the application root will be 'simplesocialnetwork' (i.e. localhost:8080/simplesocialnetwork)
Latest stable deploy can be found in heroku, this will have the latest code from master deployed at any time.
You can run the application locally by downloading the precompiled version available in the app folder, to do so, download the full app folder and execute the available bat (StartSocialNetwork.bat)
This project is a Spring boot application, therefore running it in a local environment is fairly easy, to run from your IDE simply import the project as a maven project and run the main class com.efgh.simplenetwork.Launcher
- User creation will not allow to add posts or a list of "followed users" in the same call.
- User update will only allow the update of basic information.
- The application could be deployed in a docker container to standarize environment.
- Some Jbejaves/Mocking tests could be added in java to further test the code base.
- you could potentially add HATEOAS implementation to the application to ease the navigation between resources.