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.
- Topic Web - User Interface module as Web/Presentation layer.
- Topic Service - REST API as an App/Business layer.
- MonogoDB (or) mLab - Persistence module as a Data layer.
- Topic Config - Centralized configuration server for the applications.
- Topic Properties - Repository for storing application properties.
- Topic Manifest - YML Configurations for deploying in Pivotal Cloud Foundry.
| 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 |
- 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.
Spring has highly organised modules for various software architecture concerns.
- 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.
- MongoRepository provides high level abstraction on the MongoClient from Mongo driver jar.
- Elimination of boiler plate code.
- Annotation driven REST API
- Seamless integration with other spring modules.
- 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.
- 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.
- Json Web Tokens are simple yet secured by encryption algorithms.
- It prevents the latency involved in OAuth authentication
Simple logging configuration
- Open source Platform-as-a-Service.
- Cloud native applications can be deployed seamlessly.
- Free to use, with limited trial credit.
- 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
- Bintray is a free Artifactory-as-a-service, where artifacts like '.jar', '.war' etc can be stored.
- Universal distribution of artifacts.