{"action":"created","comment":{"url":"https://api.github.com/repos/shopware/devdocs/pulls/comments/52578871","id":52578871,"diff_hunk":"@@ -0,0 +1,266 @@\n+---\n+title: Projects of the first internal hackathon in 2016\n+tags:\n+    - hackathon\n+    - shopware\n+    - programming\n+indexed: false\n+github_link: blog/_posts/2016-02-11-hackathon-2016-1.md\n+\n+authors: [dn]\n+---\n+\n+Last week the first internal hackathon in 2016 took place in our new headquarter. In addition to club mate and unhealthy food\n+there were a lot of interesting projects that the teams will present in the following article\n+ \n+## Push all the things!\n+\n+**Team**: Sven Finke<br>\n+**Project**: Making use of websockets for shopware connect\n+\n+<img src=\"/blog/img/hackathon-2016-1/pushall-1.png\" class=\"is-float-left\" style=\"width:400px\" /> \n+\n+I implemented Websockets for Shopware connect. This way the user does not have to reload offers, orders or messages\n+to see if something new happened, the changes are directly loaded into the current grids, badges or lists.\n+This will probably reduce the server load as the users wont reload the page as often as before and the Websocket\n+messages are considerably smaller then standard HTTP Requests and Responses. Additionally it improves the usabillity\n+and makes shopware connect feel more responsive (as in \"responsive\", not \"mobile website\" :) ).\t\n+\n+<div style=\"clear:both\"></div>\n+\n+## I am too lazy to work… generate it!\n+\n+**Team**: Andreas Wolf<br>\n+**Project**: Writing a code generator\n+\n+<img src=\"/blog/img/hackathon-2016-1/generate.png\" class=\"is-float-left\" style=\"width:200px\" />\n+\n+We are using an ERP to represent all the work flows and business aspects of shopware (e.g. the shopware store or \n+ the shopware account). In this project a code generator was created, which allows us to create new subapplications\n+ for the ERP easily and matching our conventions and needs.\n+ This does not only save us a lot of time - it also reduces mistakes and helps us concentrate on the real programming\n+ work\n+ \n+<div style=\"clear:both\"></div>\n+ \n+## Vagr-hater\n+\n+**Team**: Tiago João Dos Santo Alberto Garcia<br>\n+**Project**: Switching from vagrant to docker\n+\n+<img src=\"/blog/img/hackathon-2016-1/vagr.png\" class=\"is-float-left\" style=\"width:300px\" />\n+\n+The Enterprise Dashboard (EDB) currently uses Vagrant and Ansible to provision its server environment.\n+While this is a common approach in these situations, it takes some time to setup all dependencies and start,\n+which can be annoying when we need to do it a few times a week. As such, I replaced our slow vagrant+ansible setup\n+process with a much faster docker approach. By using docker containers to host our server application and its dependent\n+services, we are able cut back on provisioning times while increasing performance and responsiveness for the Enterprise\n+Dashboard itself. \t\n+\n+<div style=\"clear:both\"></div>\n+\n+## Acadevel\n+\n+**Team**: Jan Bücker, Michael Telgmann, Linus Holtstiege<br>\n+**Project**: Creating a testing plattform for our shopware academy\n+\n+<img src=\"/blog/img/hackathon-2016-1/acadevel.png\" class=\"is-float-left\" style=\"width:300px\" />\n+\n+As every one knows, the old way to pass the exam is to get the printed exam and fill it out. This approach is not very\n+fancy and not the shopware way. So we decided to create a full web interface based on the laravel framework with eloquent\n+ORM to get two simple systems. The trainee exam view and the administration view. In the administration view, admins\n+can create new trainings, exam dates, questions with correct answers and finally start the test. Because the trainees\n+get linked to an exam date, they always get a new random and therefore unique username to log in. After login, the users\n+can answer the questions, jump to unanswered questions and get a overview of how much questions are left. After the user\n+has submitted his test, the admin can see the exam score and of course if he has passed or not. Awesome isn't it?\n+\n+<div style=\"clear:both\"></div>\n+\n+## FastUser\n+\n+**Team**: Pascal Thesing<br>\n+**Project**: SSO\n+\n+<img src=\"/blog/img/hackathon-2016-1/fastuser.png\" class=\"is-float-left\" style=\"width:300px\" />\n+The idea behind this project was to create a site for the users, where they could see orders, rate\n+shops, save their credentials for shipping, paying and so on, so that users could login to shop with their account\n+for this site. Also this site would have a shop list, with the shop credentials.\n+As this project was more for \"learning purposes\" to teach myself how to get a Ssymfony project started, it will probably\n+never hit the wild, but it was worth the effort. \n+\n+<div style=\"clear:both\"></div>\n+\n+## Fuck it - we'll do it live\n+\n+**Team**: Dennis Höting, Florian Klockenkemper<br>\n+**Project**: SSO\n+\n+<img src=\"/blog/img/hackathon-2016-1/sbp2.png\" class=\"is-float-left\" style=\"width:300px\" />\n+Certain business events are required to be consumed by the user as fast as possible. Such live events can be enabled\n+using standard HTTP requests and long polling - which basically means periodically asking the server for new events and\n+applies that the server has to store events and keep track of each users event status.\n+In a much more convenient way, WebSockets enable us to establish a bi-directional connection between server and client.\n+In this project we used WebSockets to provide live information in our internal ERP like \"who is editing this page\" or\n+\"who \n+\n+<div style=\"clear:both\"></div>\n+\t\n+## 3D Products\n+\n+**Team**: Philipp Schuch<br>\n+**Project**: Enable shopware to support 3D product images\n+\n+<img src=\"/blog/img/hackathon-2016-1/shoe.jpg\" class=\"is-float-left\" style=\"width:300px\" />\n+To do a step towards virtual shopping, I wanted to make it possible to use 3D models as product images and more. The\n+first step was to implement a new media type in the media manager for 3D model files. Now it is possible to upload model\n+files to a new media album called \"models\". In the first step I enabled \"Collada\" and \"OBJ\" as possible file types.\n+Others could also be possible. You can now choose a model file as a media for a product. It can also be used as the\n+preview media of the product. \n+\n+For the frontend I build a 3D product viewer plugin based on jQuery and Three.js, a WebGL framework. So the 3D Viewer\n+is completely based on javascript and doesn't need any other browser extensions. The viewer is implemented on the product\n+detail page and also the listing. It can also be viewed in the lightbox modal window.\n+Next to the product options, you can use the models in a new widget for the shopping worlds and also as a new element in\n+the Digital Publishing tool. You can place the 3D model in your banner and set some options for it. There is also an\n+alternative \"showcase\" mode, where the product is shown in a more visual way with backgrounds, lights and stuff.\n+\n+\n+<div style=\"clear:both\"></div>\n+\t\n+## Find out what is error'ing\t\n+\n+**Team**: Patrick Stahl, Dennis Garding<br>\n+**Project**: Shopware support plugin\n+\n+<img src=\"/blog/img/hackathon-2016-1/support.png\" class=\"is-float-left\" style=\"width:300px\" />\n+Since we had to work in the developer-support for a few days, we decided to create a plugin, which should help our\n+support-department to get more information about the errors that occur in a shop.\n+The plugin saves all occurring errors with all the information we can get - the user, that got the error, which\n+articles were in the basket at that moment, on which page (controller / action) he got that page and all the information\n+that have been saved to the session. Those information can be read in the backend then. \n+If it's a known error to us, there might also be a suggestion on how to fix that special issue or how that issue may occur.\n+\n+Additionally the plugin should provide some helpful functions, e.g. deactivating all 3rd-party plugins and re-activating\n+them later or simulating the error, that just occurred.\n+\n+<div style=\"clear:both\"></div>\n+\t\n+## Syncing down the house\t\t\n+\n+**Team**: Jan Philipp Pietzrzyk<br>","path":"source/blog/_posts/2016-02-11-hackathon-2016-1.md","position":null,"original_position":150,"commit_id":"760959b1c3b71cba9edad9fca55b27e11363aea0","original_commit_id":"ef663c82973e4eecaeb8ce8de608bd15a63e175e","user":{"login":"dnoegel","id":1114384,"avatar_url":"https://avatars.githubusercontent.com/u/1114384?v=3","gravatar_id":"","url":"https://api.github.com/users/dnoegel","html_url":"https://github.com/dnoegel","followers_url":"https://api.github.com/users/dnoegel/followers","following_url":"https://api.github.com/users/dnoegel/following{/other_user}","gists_url":"https://api.github.com/users/dnoegel/gists{/gist_id}","starred_url":"https://api.github.com/users/dnoegel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dnoegel/subscriptions","organizations_url":"https://api.github.com/users/dnoegel/orgs","repos_url":"https://api.github.com/users/dnoegel/repos","events_url":"https://api.github.com/users/dnoegel/events{/privacy}","received_events_url":"https://api.github.com/users/dnoegel/received_events","type":"User","site_admin":false},"body":"Pietrzazikizyk?","created_at":"2016-02-11T09:39:03Z","updated_at":"2016-02-11T09:39:03Z","html_url":"https://github.com/shopware/devdocs/pull/233#discussion_r52578871","pull_request_url":"https://api.github.com/repos/shopware/devdocs/pulls/233","_links":{"self":{"href":"https://api.github.com/repos/shopware/devdocs/pulls/comments/52578871"},"html":{"href":"https://github.com/shopware/devdocs/pull/233#discussion_r52578871"},"pull_request":{"href":"https://api.github.com/repos/shopware/devdocs/pulls/233"}}},"pull_request":{"url":"https://api.github.com/repos/shopware/devdocs/pulls/233","id":59005354,"html_url":"https://github.com/shopware/devdocs/pull/233","diff_url":"https://github.com/shopware/devdocs/pull/233.diff","patch_url":"https://github.com/shopware/devdocs/pull/233.patch","issue_url":"https://api.github.com/repos/shopware/devdocs/issues/233","number":233,"state":"open","locked":false,"title":"Adding hackathon blog post","user":{"login":"dnoegel","id":1114384,"avatar_url":"https://avatars.githubusercontent.com/u/1114384?v=3","gravatar_id":"","url":"https://api.github.com/users/dnoegel","html_url":"https://github.com/dnoegel","followers_url":"https://api.github.com/users/dnoegel/followers","following_url":"https://api.github.com/users/dnoegel/following{/other_user}","gists_url":"https://api.github.com/users/dnoegel/gists{/gist_id}","starred_url":"https://api.github.com/users/dnoegel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dnoegel/subscriptions","organizations_url":"https://api.github.com/users/dnoegel/orgs","repos_url":"https://api.github.com/users/dnoegel/repos","events_url":"https://api.github.com/users/dnoegel/events{/privacy}","received_events_url":"https://api.github.com/users/dnoegel/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-02-11T09:17:58Z","updated_at":"2016-02-11T09:39:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"29edc7f021193121fd726dd09db641398871a7c4","assignee":{"login":"tiagojsag","id":973964,"avatar_url":"https://avatars.githubusercontent.com/u/973964?v=3","gravatar_id":"","url":"https://api.github.com/users/tiagojsag","html_url":"https://github.com/tiagojsag","followers_url":"https://api.github.com/users/tiagojsag/followers","following_url":"https://api.github.com/users/tiagojsag/following{/other_user}","gists_url":"https://api.github.com/users/tiagojsag/gists{/gist_id}","starred_url":"https://api.github.com/users/tiagojsag/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tiagojsag/subscriptions","organizations_url":"https://api.github.com/users/tiagojsag/orgs","repos_url":"https://api.github.com/users/tiagojsag/repos","events_url":"https://api.github.com/users/tiagojsag/events{/privacy}","received_events_url":"https://api.github.com/users/tiagojsag/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/shopware/devdocs/pulls/233/commits","review_comments_url":"https://api.github.com/repos/shopware/devdocs/pulls/233/comments","review_comment_url":"https://api.github.com/repos/shopware/devdocs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/shopware/devdocs/issues/233/comments","statuses_url":"https://api.github.com/repos/shopware/devdocs/statuses/760959b1c3b71cba9edad9fca55b27e11363aea0","head":{"label":"shopware:hackathon-1016-1","ref":"hackathon-1016-1","sha":"760959b1c3b71cba9edad9fca55b27e11363aea0","user":{"login":"shopware","id":612628,"avatar_url":"https://avatars.githubusercontent.com/u/612628?v=3","gravatar_id":"","url":"https://api.github.com/users/shopware","html_url":"https://github.com/shopware","followers_url":"https://api.github.com/users/shopware/followers","following_url":"https://api.github.com/users/shopware/following{/other_user}","gists_url":"https://api.github.com/users/shopware/gists{/gist_id}","starred_url":"https://api.github.com/users/shopware/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shopware/subscriptions","organizations_url":"https://api.github.com/users/shopware/orgs","repos_url":"https://api.github.com/users/shopware/repos","events_url":"https://api.github.com/users/shopware/events{/privacy}","received_events_url":"https://api.github.com/users/shopware/received_events","type":"Organization","site_admin":false},"repo":{"id":32542624,"name":"devdocs","full_name":"shopware/devdocs","owner":{"login":"shopware","id":612628,"avatar_url":"https://avatars.githubusercontent.com/u/612628?v=3","gravatar_id":"","url":"https://api.github.com/users/shopware","html_url":"https://github.com/shopware","followers_url":"https://api.github.com/users/shopware/followers","following_url":"https://api.github.com/users/shopware/following{/other_user}","gists_url":"https://api.github.com/users/shopware/gists{/gist_id}","starred_url":"https://api.github.com/users/shopware/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shopware/subscriptions","organizations_url":"https://api.github.com/users/shopware/orgs","repos_url":"https://api.github.com/users/shopware/repos","events_url":"https://api.github.com/users/shopware/events{/privacy}","received_events_url":"https://api.github.com/users/shopware/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/shopware/devdocs","description":"Shopware Developers Website","fork":false,"url":"https://api.github.com/repos/shopware/devdocs","forks_url":"https://api.github.com/repos/shopware/devdocs/forks","keys_url":"https://api.github.com/repos/shopware/devdocs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/shopware/devdocs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/shopware/devdocs/teams","hooks_url":"https://api.github.com/repos/shopware/devdocs/hooks","issue_events_url":"https://api.github.com/repos/shopware/devdocs/issues/events{/number}","events_url":"https://api.github.com/repos/shopware/devdocs/events","assignees_url":"https://api.github.com/repos/shopware/devdocs/assignees{/user}","branches_url":"https://api.github.com/repos/shopware/devdocs/branches{/branch}","tags_url":"https://api.github.com/repos/shopware/devdocs/tags","blobs_url":"https://api.github.com/repos/shopware/devdocs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/shopware/devdocs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/shopware/devdocs/git/refs{/sha}","trees_url":"https://api.github.com/repos/shopware/devdocs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/shopware/devdocs/statuses/{sha}","languages_url":"https://api.github.com/repos/shopware/devdocs/languages","stargazers_url":"https://api.github.com/repos/shopware/devdocs/stargazers","contributors_url":"https://api.github.com/repos/shopware/devdocs/contributors","subscribers_url":"https://api.github.com/repos/shopware/devdocs/subscribers","subscription_url":"https://api.github.com/repos/shopware/devdocs/subscription","commits_url":"https://api.github.com/repos/shopware/devdocs/commits{/sha}","git_commits_url":"https://api.github.com/repos/shopware/devdocs/git/commits{/sha}","comments_url":"https://api.github.com/repos/shopware/devdocs/comments{/number}","issue_comment_url":"https://api.github.com/repos/shopware/devdocs/issues/comments{/number}","contents_url":"https://api.github.com/repos/shopware/devdocs/contents/{+path}","compare_url":"https://api.github.com/repos/shopware/devdocs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/shopware/devdocs/merges","archive_url":"https://api.github.com/repos/shopware/devdocs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/shopware/devdocs/downloads","issues_url":"https://api.github.com/repos/shopware/devdocs/issues{/number}","pulls_url":"https://api.github.com/repos/shopware/devdocs/pulls{/number}","milestones_url":"https://api.github.com/repos/shopware/devdocs/milestones{/number}","notifications_url":"https://api.github.com/repos/shopware/devdocs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/shopware/devdocs/labels{/name}","releases_url":"https://api.github.com/repos/shopware/devdocs/releases{/id}","deployments_url":"https://api.github.com/repos/shopware/devdocs/deployments","created_at":"2015-03-19T19:44:25Z","updated_at":"2016-01-17T14:51:14Z","pushed_at":"2016-02-11T09:38:29Z","git_url":"git://github.com/shopware/devdocs.git","ssh_url":"git@github.com:shopware/devdocs.git","clone_url":"https://github.com/shopware/devdocs.git","svn_url":"https://github.com/shopware/devdocs","homepage":"https://developers.shopware.com","size":52108,"stargazers_count":22,"watchers_count":22,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":39,"mirror_url":null,"open_issues_count":5,"forks":39,"open_issues":5,"watchers":22,"default_branch":"master"}},"base":{"label":"shopware:master","ref":"master","sha":"a21c78ccbed4bcbfd0255aa19b1c20642a3168d8","user":{"login":"shopware","id":612628,"avatar_url":"https://avatars.githubusercontent.com/u/612628?v=3","gravatar_id":"","url":"https://api.github.com/users/shopware","html_url":"https://github.com/shopware","followers_url":"https://api.github.com/users/shopware/followers","following_url":"https://api.github.com/users/shopware/following{/other_user}","gists_url":"https://api.github.com/users/shopware/gists{/gist_id}","starred_url":"https://api.github.com/users/shopware/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shopware/subscriptions","organizations_url":"https://api.github.com/users/shopware/orgs","repos_url":"https://api.github.com/users/shopware/repos","events_url":"https://api.github.com/users/shopware/events{/privacy}","received_events_url":"https://api.github.com/users/shopware/received_events","type":"Organization","site_admin":false},"repo":{"id":32542624,"name":"devdocs","full_name":"shopware/devdocs","owner":{"login":"shopware","id":612628,"avatar_url":"https://avatars.githubusercontent.com/u/612628?v=3","gravatar_id":"","url":"https://api.github.com/users/shopware","html_url":"https://github.com/shopware","followers_url":"https://api.github.com/users/shopware/followers","following_url":"https://api.github.com/users/shopware/following{/other_user}","gists_url":"https://api.github.com/users/shopware/gists{/gist_id}","starred_url":"https://api.github.com/users/shopware/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shopware/subscriptions","organizations_url":"https://api.github.com/users/shopware/orgs","repos_url":"https://api.github.com/users/shopware/repos","events_url":"https://api.github.com/users/shopware/events{/privacy}","received_events_url":"https://api.github.com/users/shopware/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/shopware/devdocs","description":"Shopware Developers Website","fork":false,"url":"https://api.github.com/repos/shopware/devdocs","forks_url":"https://api.github.com/repos/shopware/devdocs/forks","keys_url":"https://api.github.com/repos/shopware/devdocs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/shopware/devdocs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/shopware/devdocs/teams","hooks_url":"https://api.github.com/repos/shopware/devdocs/hooks","issue_events_url":"https://api.github.com/repos/shopware/devdocs/issues/events{/number}","events_url":"https://api.github.com/repos/shopware/devdocs/events","assignees_url":"https://api.github.com/repos/shopware/devdocs/assignees{/user}","branches_url":"https://api.github.com/repos/shopware/devdocs/branches{/branch}","tags_url":"https://api.github.com/repos/shopware/devdocs/tags","blobs_url":"https://api.github.com/repos/shopware/devdocs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/shopware/devdocs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/shopware/devdocs/git/refs{/sha}","trees_url":"https://api.github.com/repos/shopware/devdocs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/shopware/devdocs/statuses/{sha}","languages_url":"https://api.github.com/repos/shopware/devdocs/languages","stargazers_url":"https://api.github.com/repos/shopware/devdocs/stargazers","contributors_url":"https://api.github.com/repos/shopware/devdocs/contributors","subscribers_url":"https://api.github.com/repos/shopware/devdocs/subscribers","subscription_url":"https://api.github.com/repos/shopware/devdocs/subscription","commits_url":"https://api.github.com/repos/shopware/devdocs/commits{/sha}","git_commits_url":"https://api.github.com/repos/shopware/devdocs/git/commits{/sha}","comments_url":"https://api.github.com/repos/shopware/devdocs/comments{/number}","issue_comment_url":"https://api.github.com/repos/shopware/devdocs/issues/comments{/number}","contents_url":"https://api.github.com/repos/shopware/devdocs/contents/{+path}","compare_url":"https://api.github.com/repos/shopware/devdocs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/shopware/devdocs/merges","archive_url":"https://api.github.com/repos/shopware/devdocs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/shopware/devdocs/downloads","issues_url":"https://api.github.com/repos/shopware/devdocs/issues{/number}","pulls_url":"https://api.github.com/repos/shopware/devdocs/pulls{/number}","milestones_url":"https://api.github.com/repos/shopware/devdocs/milestones{/number}","notifications_url":"https://api.github.com/repos/shopware/devdocs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/shopware/devdocs/labels{/name}","releases_url":"https://api.github.com/repos/shopware/devdocs/releases{/id}","deployments_url":"https://api.github.com/repos/shopware/devdocs/deployments","created_at":"2015-03-19T19:44:25Z","updated_at":"2016-01-17T14:51:14Z","pushed_at":"2016-02-11T09:38:29Z","git_url":"git://github.com/shopware/devdocs.git","ssh_url":"git@github.com:shopware/devdocs.git","clone_url":"https://github.com/shopware/devdocs.git","svn_url":"https://github.com/shopware/devdocs","homepage":"https://developers.shopware.com","size":52108,"stargazers_count":22,"watchers_count":22,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":39,"mirror_url":null,"open_issues_count":5,"forks":39,"open_issues":5,"watchers":22,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/shopware/devdocs/pulls/233"},"html":{"href":"https://github.com/shopware/devdocs/pull/233"},"issue":{"href":"https://api.github.com/repos/shopware/devdocs/issues/233"},"comments":{"href":"https://api.github.com/repos/shopware/devdocs/issues/233/comments"},"review_comments":{"href":"https://api.github.com/repos/shopware/devdocs/pulls/233/comments"},"review_comment":{"href":"https://api.github.com/repos/shopware/devdocs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/shopware/devdocs/pulls/233/commits"},"statuses":{"href":"https://api.github.com/repos/shopware/devdocs/statuses/760959b1c3b71cba9edad9fca55b27e11363aea0"}}}}