blog-awesome is yet another blog engine built with performance in mind, implemented in Scala and ready-to-scale. The stack consists of Play! Framework and Couchbase as main layers and includes deployment scripts that allow to easily deploy your brand new blog to dedicated Ubuntu-based server.
Next software is needed in order to check out blog-awesome at your local machine
- Vagrant 1.7.2 downloads
- VirtualBox
- SBT 0.13.6 downloads
- Ansible 1.8.2 downloads
Once all software installed clone the repo
git clone [email protected]:akirillov/blog-awesome.git
Run vagrant up
from _devops
directory in a cloned project. After virtual machine is created run sbt run
from project root directory.
Head to localhost:9000 with your browser and login with Facebook or Twitter ('>_' button in navbar).
In local environment you have admin access for any user logged in. It gives rights to create/read/update/delete posts with blog-awesome.
In case you're totally new to Play! Framework and Ansible here is some links to start with:
- Ansible playbooks
- Vagrant Ansible provisioning
- Couchbase buckets, views and CLI reference
- ReactiveCouchbase Scala client which is used
Hosts provisioning is performed with Ansible and development environment setup is made with help of Vagrant.
If you're already familiar with Vagrant and Ansible, then take a look at set of roles and configurations at _devops
directory.
Check out appropriate README about DevOps
Couchbase server is needed for application development and testing, so it is provided as Vagrant-box provisioned with Ansible.
For starting up the environment with data store vagrant up
from _devops
directory and you're ready to run.
Vagrantfile uses [playbook_dev.yml] for provisioning, so if any modification needed it has to be made there.
Check out that whether everything is fine by running sbt clean test
from project root directory.
There is no convenient way to clean buckets from stale data in case of tests failure for now,
the fastest way to clean all the buckets is to login to Couchbase web console and delete all the documents in the buckets.
Packing in Docker container is on the project's road map (waiting Docker 1.6 with ulimits
support).
Here is the list of technologies being used to build blog-awesome:
- Frontend:
- SecureSocial for OAuth authentication
- WebJars for JS and CSS dependecies management
- SirTrevor - the awesomest WYSIWYG JS editor
- Twitter Bootstrap of course
- Backend:
- Play! Framework as the core web framework written in Scala
- Scala itself with SpringScala for bean wiring
- Couchbase NoSQL document-oriented store
- Nginx for static content serving
- DevOps
- Ansible for dev and prod environments provisioning
- DataDog for monitoring