A Discussion forum built on Spring Boot and MongoDB
This project is maintained by rajasushanth
A forum to discuss and collaborate views on a various topics where users can create topics, post comments and search topics. This project exhibits 3-tier architecture modeling such as Web, App and Database which is simple and robust. Primary objective is to unviel power of REST architecture built using Spring framework and persisted on MongoDB.
Feature | Technology |
---|---|
Language | Java |
Database | MongoDB |
Logging | Logback |
JWT | Access tokens |
Auto configuration | Spring boot |
Persistence | Spring Data |
API | Spring REST |
AOP | Spring AOP |
Security | Spring Security |
PaaS | Pivotal Cloud Foundry |
Continous Integration | Travis CI |
Artifactory | JFrog Bintray |
Why MongoDB?
- High read-writes without any joins as in relational database.
- Easy for development as it often involves modification of data structure(schema)
- More explanatory No-SQL queries.
Why Spring framework?
Spring has highly organised modules for various software architecture concerns.
Spring boot
- Provides cloud native support.
- Easy kick start of application using Starter dependencies.
- Out of box features like Dev tools, actuators and auto configurations.
- Embedded servers.
Persistence - Spring Data
- MongoRepository provides high level abstraction on the MongoClient from Mongo driver jar.
- Elimination of boiler plate code.
API - Spring REST
- Annotation driven REST API
- Seamless integration with other spring modules.
AOP - Spring
- Application’s cross cutting concerns like logging and refresh tokens handling, has been flesh out from core business logic.
- Used CGlib proxies for logging, since JDK Proxies can be applied only on interface implementations.
Security - Spring Security
- Spring Security provides out of the box functionalities for securing endpoints based on servlet filters.
- It also provides Bcrypt password hashing which is been persisted into the database.
- Decryption of the received AES - 256 bits encrypted password.
Why JWT?
- Json Web Tokens are simple yet secured by encryption algorithms.
- It prevents the latency involved in OAuth authentication
Why Logback?
Simple logging configuration
Why Pivotal Cloud Foundry?
- Open source Platform-as-a-Service.
- Cloud native applications can be deployed seamlessly.
- Free to use, with limited trial credit.
Why Travis CI?
- Travis CI is a free Continous Integration-as-a-service for projects hosted in GitHub
- Simple configuration steps through .travis.yml
- Support for deployment of application in Pivotal cloud foundry
Why Bintray?
- Bintray is a free Artifactory-as-a-service, where artifacts like ‘.jar’, ‘.war’ etc can be stored.
- Universal distribution of artifacts.