{"id":6,"date":"2013-08-15T10:28:09","date_gmt":"2013-08-15T10:28:09","guid":{"rendered":"http:\/\/nikola-breznjak.com\/blog\/?p=6"},"modified":"2015-08-20T11:30:47","modified_gmt":"2015-08-20T11:30:47","slug":"carcassonne-scoring-board-application","status":"publish","type":"post","link":"https:\/\/nikola-breznjak.com\/blog\/miscellaneou\/projects\/carcassonne-scoring-board-application\/","title":{"rendered":"Carcassonne scoring board application"},"content":{"rendered":"<h2>tl;dr:<\/h2>\n<p>The <a href=\"http:\/\/carcassonne-scoring-board.com\/\">link to the application<\/a> and the link to source code on <a href=\"https:\/\/github.com\/Hitman666\/carcassonne-scoring-board\">GitHub<\/a>.<\/p>\n<h2><span style=\"line-height: 1.5;\">Welcome<\/span><\/h2>\n<p><span style=\"line-height: 1.5;\">First of all &#8211; hi all!, this is my first post so go easy on me \ud83d\ude42<\/span><\/p>\n<p>I would like to give my thanks to <a href=\"http:\/\/jamesclear.com\/\">James Clear<\/a>, whose <a href=\"http:\/\/jamesclear.com\/make-things\">post <\/a>pushed me to finally put this blog idea up and running. He has some great posts on his blog, which you may want to check out.<\/p>\n<h2>The story (rather short one)<\/h2>\n<p>Since I&#8217;m a big fan of\u00a0<a href=\"http:\/\/boardgamegeek.com\/boardgame\/822\/carcassonne\">Carcassonne board game<\/a>\u00a0and I happen to come accross this\u00a0<a href=\"http:\/\/www.av-technologies.net\/scoreboard\/index.html\">unique project<\/a>\u00a0on the web, I just\u00a0<strong>had to<\/strong> make one for myself&#8230; It proved to be great for Carcassonne scoring, and just recently we started using it to track scores in\u00a0<a href=\"http:\/\/boardgamegeek.com\/boardgame\/25669\/qwirkle\">Qwirkle board game<\/a>.<\/p>\n<p>Here are some\u00a0pictures of how my version of the electronic carcassonne scoring board looks like:<\/p>\n<p><img decoding=\"async\" class=\"ngg_displayed_gallery mceItem\" src=\"http:\/\/nikola-breznjak.com\/blog\/nextgen-attach_to_post\/preview\/id--60\" alt=\"\" \/><\/p>\n<h2>Web application<\/h2>\n<p>The idea for a web app came naturally since the electronic counter was too cumbersome to carry around. I\u00a0wanted to see what &#8220;the cool kids use&#8221; these days in web development so I went to try <a href=\"http:\/\/yeoman.io\/\">Yeoman <\/a>with <a href=\"https:\/\/github.com\/yeoman\/generator-angular\">Angular generator<\/a>.<\/p>\n<p><span style=\"line-height: 1.5;\">Below is the image of the application on iPhone and you you can see how it looks like on your device by visitng the link: <a title=\"http:\/\/carcassonne-scoring-board.com\" href=\"http:\/\/carcassonne-scoring-board.com\">http:\/\/carcassonne-scoring-board.com<\/a><\/span><\/p>\n<p><img decoding=\"async\" class=\"ngg_displayed_gallery mceItem\" src=\"http:\/\/nikola-breznjak.com\/blog\/nextgen-attach_to_post\/preview\/id--63\" alt=\"\" \/><\/p>\n<h2>How to use this project?<\/h2>\n<p>First you have to clone it with <strong>git<\/strong>, and then run<strong> npm install<\/strong> and <strong>bower install<\/strong> in the cloned folder for all the dependencies to install themselves:<\/p>\n<pre class=\"lang:default decode:true\">git clone https:\/\/github.com\/Hitman666\/carcassonne-scoring-board.git\r\ncd carcassonne-scoring-board\r\nnpm install\r\nbower install<\/pre>\n<p>To test my application run<\/p>\n<pre class=\"lang:default decode:true\">grunt server<\/pre>\n<p>and you should see the application open up in your browser.<\/p>\n<h2>What I liked<\/h2>\n<ul>\n<li>because of this whole Yeoman development process I liked the thing that with only few commands you have the application scaffolded out for you and you don&#8217;t have to go and install all the scripts by downloading to your computer first<\/li>\n<li>pushing to git only takes the crucial parts of your code and not the whole dependency folders (<strong>bower_components<\/strong>\u00a0and <strong>node_modules<\/strong>) which are rarely small in size \u2013 imagine, you only need to push to the repository stuff that are crucial to the application, other stuff you keep locally, and it of course is way more convenient to clone (or later push for that matter) a 1MB project than say 20MB &#8211; everyone who wants to run your project clones it and installs the needed dependencies with two simple commands (npm install and bower install)<\/li>\n<li>while writing the application you can have <strong>grunt server<\/strong> &#8220;turned on&#8221; and every change you make to your files it automatically reloads the page (also its running sass to css translation so you&#8217;re covered there also)<\/li>\n<li>developing with the Yeoman workflow is just a bliss\u00a0once you get a hang of it (and it actually doesn&#8217;t have a steep learning curve) &#8211; you&#8217;ll appreciate the fact that with one command you can make your code ready for deploying (minimize, concat, optimize images, etc&#8230;)<\/li>\n<li>since I only scratched Angulars surface, I can say I liked the <a href=\"http:\/\/docs.angularjs.org\/guide\/dev_guide.templates.databinding\">data binding<\/a>, the <a href=\"http:\/\/docs.angularjs.org\/api\/ng.directive:ngRepeat\">ng-repeat<\/a>\u00a0directive and basically the general speed-up in dev process because of this. Anyways,\u00a0<span style=\"line-height: 1.5;\">you can take a look at <\/span><a style=\"line-height: 1.5;\" href=\"http:\/\/angular-tips.com\/blog\/2013\/08\/why-does-angular-dot-js-rock\/\">this post<\/a><span style=\"line-height: 1.5;\"> for more info on why Angular rocks<\/span><\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p><span style=\"line-height: 1.5;\">Since this project was done while I was learning (still am)\u00a0<\/span><a style=\"line-height: 1.5;\" href=\"http:\/\/angularjs.org\/\">Angular.js<\/a><span style=\"line-height: 1.5;\">, there is a lot space for improvement (especially code structure and logic), that&#8217;s why I encourage you to give suggestions on best (better) Angular practices, or even help out on\u00a0<\/span><a style=\"line-height: 1.5;\" href=\"http:\/\/github.com\/Hitman666\/carcassonne-scoring-board\">GitHub<\/a><span style=\"line-height: 1.5;\">.\u00a0<\/span>Btw, the code on\u00a0<a href=\"http:\/\/github.com\/Hitman666\/carcassonne-scoring-board\">GitHub<\/a>\u00a0is free to use, I didn&#8217;t put any restrictions on it so feel free to fork it, improve it, alter it to suit your needs.<span style=\"line-height: 1.5;\">\u00a0<\/span><\/p>\n<p><span style=\"line-height: 1.5;\">The icons are from\u00a0<\/span><a style=\"line-height: 1.5;\" href=\"http:\/\/iconfactory.com\/freeware\/preview\/cmap\">The IconFactory<\/a><span style=\"line-height: 1.5;\">, and the font is\u00a0<\/span><a style=\"line-height: 1.5;\" href=\"http:\/\/www.ufonts.com\/fonts\/lindsay-becker.html\">Lindsay Becker<\/a><span style=\"line-height: 1.5;\">\u00a0in case you&#8217;re wondering.<\/span><\/p>\n<p>Oh and,\u00a0I would love to hear\u00a0what do you think about this and for which game you used it to track scores?<\/p>\n<p><a href=\"http:\/\/www.codeproject.com\/script\/Articles\/BlogFeedList.aspx?amid=7823767\" rel=\"tag\">Link to this article on CodeProject<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>tl;dr: The link to the application and the link to source code on GitHub. Welcome First of all &#8211; hi all!, this is my first post so go&hellip;<\/p>\n","protected":false},"author":1,"featured_media":25,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,2],"tags":[],"class_list":["post-6","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codeproject","category-projects"],"_links":{"self":[{"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/posts\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/comments?post=6"}],"version-history":[{"count":46,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/posts\/6\/revisions"}],"predecessor-version":[{"id":2119,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/posts\/6\/revisions\/2119"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/media\/25"}],"wp:attachment":[{"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/media?parent=6"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/categories?post=6"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/tags?post=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}