It's been a almost a month how I started to re-implement my continuous delivery application - Candidate. In my previous
post I already mentioned some areas are going to be improved, what
technologies considered to be used. I haven't managed to make huge
progress on the project so far, but I have something to show.
Overall application architecture
I tried to build it with classical API oriented
architecture in mind. That means that server side code exposes some simple
HTTP API, the rest of stuff happening on browser. Fortunately, I got
really simple UI, but still UI plays really important role. So far, I
spent 80% in Sublime for front-end and 20% of time in Visual Studio for the
Server side technology stack is a NancyFX + RavenDB, client side build with Backbone.js + Require.js.
The primary application change is that it's no longer a IIS application, but just a standalone app.
So, you just launch an .exe file, and after application warms up, the candidate is available at http://localhost:12543.
To simplify life a bit (and to not harm the eyes of users) I'm using Twitter Bootstrap CSS framework and happy with it.
impressions are really positive. I'm currently doing very basic
functionality (as inserting, querying and deletion of documents). But,
indeed working with document oriented database feels much simpler and
native for C# developer. Forget about any SQL, schemas, ORM's - store
and restore POCO's, that;s all you need to know. RavenDB API is very clear
I used an embedded version of RavenDB, which suites
me best - since I want to minimize any effort for application
As I said above, server side exposes HTTP API
which receives and responds with JSON based payload. There would be some
interfaces for starting/stopping the deployment tasks... but the rest is
happening in the client.
Since I met Backbone.js
framework I thought to myself: "I will never ever writing 'scripts' in
front-end, instead I'll be doing browser powered applications".
Backbone.js introduces structure in front-end. Front-end development
with Backbone.js is no longer $.ajax calls and updates of DOM inside the success: handlers. With Backbones's main entities you build front-end apps in similar way as it would be desktop applications.
The front end is being built in SPA (Single Page
Application) style, which is kind of new to me. Backbone.Router is great
component though and I don't need anything more, at least for now. I
wish to keep UI as much responsive and fast.