This app is a two sided, time driven job board : publish your offer / criteria, they will be available one week !
It main purpose is to implement best practices for real-world play 2 apps.
- compile time DI
- typing everywhere
- testing (unit, integration)
- normalized REST API
- basic crud
- search and pagination
- nice error handling
- generated documentation
- application status with build time, git hash & strategic resources status
This project works with :
- Java 8
- Scala 2.11.7
- sbt 0.13.11
- Play framework 2.5.6
- MongoDB 3.0.2
TODO
TODO
- start mongo
$ sbt run
- Setup a heroku instance
- add addon for MongoDB (mLab)
- publish the app
TODO
Api documentation is generated using apiblueprint standard and aglio generator.
To re-generate it you should install sudo npm install -g aglio
and run :
aglio -i docs/api.apib -o public/docs/api.html --theme-variables streak --theme-template triple --theme-full-width
global
package is a "personal library" & project agnosticcom.flashjob
package for app codecommon
package is generic code shared throughout the project (such as Config...)domain
package is the core logic of the project. It should be framework agnostic as mush as possiblemodels
package contains all data definitionservices
package contains project logic
infrastructure
package is used for code interfacing with external source (database, webservices...)controllers
views
-
DI with macwire
-
TDD
- embed mongo (test port)
- run tests at compile
- property based testing (https://www.scalacheck.org/)
-
i18n
- date format (display & forms)
- https://github.com/Kanaka-io/e2e
- https://github.com/tegonal/play-messagescompiler
-
great log system
-
rest api
- CORS
- auth token
- rate limiting
-
user auth/admin
-
helpers
- bootstrap forms (inspiration from https://github.com/adrianhurt/play-bootstrap)
- select2
- format : dates
-
living documentation (https://leanpub.com/livingdocumentation)
-
articles
- compile time DI
- ApplicationLoader
- Test controllers
- setup sbt-buildinfo (with git hash)
- setup reactivemongo
- compile time DI
-
talks
- type all the things !
- https://github.com/MfgLabs/PSUG for most best practices
- https://github.com/playframework/play-scala-compile-di-with-tests for controller tests