We are in the process of building a modern content platform to deliver our content through various channels. We decided to go with Microservices architecture as we wanted scale. Microservice architecture style is an approach to developing an application as a suite of small independently deployable services built around specific business capabilities. You can gain modularity, extensive parallelism and cost-effective scaling by deploying services across many distributed servers. Microservices modularity facilitates independent updates/deployments, and helps to avoid single point of failure, which can help prevent large-scale outages.\nWe also decided to use Event Driven Architecture pattern which is a popular distributed asynchronous architecture pattern used to produce highly scalable applications. The event-driven architecture is made up of highly decoupled, single-purpose event processing components that asynchronously receive and process events.\n\n
To build our #Backend capabilities we decided to use the following:\n1. #Microservices - Java with Spring Boot , Node.js with ExpressJS and Python with Flask \n2. #Eventsourcingframework - Amazon Kinesis , Amazon Kinesis Firehose , Amazon SNS , Amazon SQS, AWS Lambda \n3. #Data - Amazon RDS , Amazon DynamoDB , Amazon S3 , MongoDB Atlas \n\n
To build #Webapps we decided to use Angular 2 with RxJS \n\n#Devops - GitHub , Travis CI , Terraform , Docker , Serverless ","private":false,"viewCount":4059530,"publishedAt":"2019-07-29T09:17:15Z","upvotesCount":19,"decisionType":"freeform","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231773669807419","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773636491087","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773410696721","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773970332063","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775927452566","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231773840406851","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776297440807","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773838011785","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774666323920","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773920953695","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773837179153","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773632626053","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775186090046","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773618592622","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773618167288","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774215979427","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775174055327","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774170220209","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773410696721","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773636491087","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773970332063","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773669807419","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775927452566","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773523090140","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773615579247","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773409399220","typename":"Tool"}],"topics":[{"type":"id","generated":false,"id":"Topic:101231988901054690","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988911787479","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101348076767785781","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101348393685875978","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988857851707","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101910501640308173","typename":"Topic"}],"__typename":"StackDecision"},"Tool:101231773636491087":{"id":"101231773636491087","name":"Travis CI","slug":"travis-ci","title":"A hosted continuous integration service for open source and private projects","verified":true,"imageUrl":"https://img.stackshare.io/service/460/Lu6cGu0z_400x400.png","canonicalUrl":"/travis-ci","path":"/travis-ci","votes":1749,"fans":9421,"stacks":26456,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/460/thumb_Lu6cGu0z_400x400.png"},"Tool:101231773970332063":{"id":"101231773970332063","name":"Terraform","slug":"terraform","title":"Describe your complete infrastructure as code and build resources across providers","verified":true,"imageUrl":"https://img.stackshare.io/service/1276/default_2316907c4199f912e2ed79cbdb99025c9e5e2665.png","canonicalUrl":"/terraform","path":"/terraform","votes":344,"fans":17667,"stacks":18592,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/1276/thumb_2316907c4199f912e2ed79cbdb99025c9e5e2665.png"},"Tool:101231775927452566":{"id":"101231775927452566","name":"Serverless","slug":"serverless","title":"The most widely-adopted toolkit for building serverless applications","verified":false,"imageUrl":"https://img.stackshare.io/service/5095/serverless-logo.png","canonicalUrl":"/serverless","path":"/serverless","votes":28,"fans":1545,"stacks":1338,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/5095/thumb_serverless-logo.png"},"Tool:101231776297440807":{"name":"MongoDB Atlas","path":"/mongodb-atlas","id":"101231776297440807","imageUrl":"https://img.stackshare.io/service/5739/atlas-360x360.png","thumbUrl":"https://img.stackshare.io/service/5739/thumb_atlas-360x360.png","stacks":847,"fans":1154,"votes":34,"followingTool":false,"__typename":"Tool"},"Tool:101231774666323920":{"name":"Spring Boot","path":"/spring-boot","id":"101231774666323920","imageUrl":"https://img.stackshare.io/service/2927/nPzvMuo2_400x400.png","thumbUrl":"https://img.stackshare.io/service/2927/thumb_nPzvMuo2_400x400.png","stacks":26282,"fans":27947,"votes":1012,"followingTool":false,"__typename":"Tool","thumbRetinaUrl":"https://img.stackshare.io/service/2927/thumb_retina_nPzvMuo2_400x400.png","slug":"spring-boot"},"Tool:101231773920953695":{"name":"ExpressJS","path":"/expressjs","id":"101231773920953695","imageUrl":"https://img.stackshare.io/service/1163/hashtag.png","thumbUrl":"https://img.stackshare.io/service/1163/thumb_hashtag.png","stacks":32242,"fans":29145,"votes":1617,"followingTool":false,"__typename":"Tool"},"Tool:101231775186090046":{"name":"Amazon Kinesis Firehose","path":"/amazon-kinesis-firehose","id":"101231775186090046","imageUrl":"https://img.stackshare.io/service/3770/amazon-kinesis.png","thumbUrl":"https://img.stackshare.io/service/3770/thumb_amazon-kinesis.png","stacks":235,"fans":239,"votes":0,"followingTool":false,"__typename":"Tool"},"Tool:101231773618592622":{"name":"Amazon SNS","path":"/amazon-sns","id":"101231773618592622","imageUrl":"https://img.stackshare.io/service/396/amazon-sns.png","thumbUrl":"https://img.stackshare.io/service/396/thumb_amazon-sns.png","stacks":1394,"fans":1573,"votes":18,"followingTool":false,"__typename":"Tool"},"Tool:101231774215979427":{"name":"AWS Lambda","path":"/aws-lambda","id":"101231774215979427","imageUrl":"https://img.stackshare.io/service/1909/aws-lambda.png","thumbUrl":"https://img.stackshare.io/service/1909/thumb_aws-lambda.png","stacks":24203,"fans":22975,"votes":432,"followingTool":false,"__typename":"Tool"},"Tool:101231775174055327":{"name":"Angular","path":"/angular","id":"101231775174055327","imageUrl":"https://img.stackshare.io/service/3745/cb8U-gL6_400x400.jpg","thumbUrl":"https://img.stackshare.io/service/3745/thumb_cb8U-gL6_400x400.jpg","stacks":1872,"fans":5405,"votes":499,"followingTool":false,"__typename":"Tool"},"Tool:101231774170220209":{"name":"RxJS","path":"/rxjs","id":"101231774170220209","imageUrl":"https://img.stackshare.io/service/1796/984368.png","thumbUrl":"https://img.stackshare.io/service/1796/thumb_984368.png","stacks":2130,"fans":1166,"votes":21,"followingTool":false,"__typename":"Tool"},"Tool:101231773523090140":{"name":"Amazon RDS","path":"/amazon-rds","id":"101231773523090140","imageUrl":"https://img.stackshare.io/service/232/amazon-rds.png","thumbUrl":"https://img.stackshare.io/service/232/thumb_amazon-rds.png","stacks":15963,"fans":13791,"votes":761,"followingTool":false,"__typename":"Tool"},"Topic:101231988901054690":{"name":"Backend","id":"101231988901054690","__typename":"Topic"},"Topic:101231988911787479":{"name":"Microservices","id":"101231988911787479","__typename":"Topic"},"Topic:101348076767785781":{"name":"Eventsourcingframework","id":"101348076767785781","__typename":"Topic"},"Topic:101348393685875978":{"name":"Webapps","id":"101348393685875978","__typename":"Topic"},"Topic:101231988857851707":{"name":"Devops","id":"101231988857851707","__typename":"Topic"},"Topic:101910501640308173":{"name":"Data","id":"101910501640308173","__typename":"Topic"},"$Tool:101231773838011785.stackDecisions({\"first\":6}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:102523983538702954","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:101232079706377588":{"id":"101232079706377588","username":"kamilkowalski","title":"Lead Architect","companyName":"Fresha","imageUrl":"https://img.stackshare.io/user/175610/default_715c96c98f4362992833dd4e0410513ce77c3eeb.jpeg","thumbUrl":"https://img.stackshare.io/user/175610/thumb_715c96c98f4362992833dd4e0410513ce77c3eeb.jpeg","displayName":"Kamil Kowalski","__typename":"User"},"StackDecision:103356936364529702":{"user":{"type":"id","generated":false,"id":"User:101232079706377588","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:103356936364529702.company","typename":"Company"},"link":null,"publicId":"103356936364529702","id":"103356936364529702","htmlContent":"When you think about test automation, itâs crucial to make it everyoneâs responsibility (not just QA Engineers'). We started with Selenium and Java, but with our platform revolving around Ruby, Elixir and JavaScript, QA Engineers were left alone to automate tests. Cypress was the answer, as we could switch to JS and simply involve more people from day one. There's a downside too, as it meant testing on Chrome only, but that was \"good enough\" for us + if really needed we can always cover some specific cases in a different way.","private":false,"viewCount":4113262,"publishedAt":"2019-12-23T11:48:09Z","upvotesCount":28,"decisionType":"tool","fromTools":[{"type":"id","generated":false,"id":"Tool:101231774063724150","typename":"Tool"}],"toTools":[{"type":"id","generated":false,"id":"Tool:101231778053837910","typename":"Tool"}],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231778053837910","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774063724150","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231774063724150","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773838011785","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773835511567","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774237595825","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773939333405","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231778053837910","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:103356936364529702.company":{"imageUrl":"https://img.stackshare.io/company/29444/default_f292b7432398c825a68b4fbe8ddbedc9c135b2a1.png","thumbUrl":"https://img.stackshare.io/company/29444/thumb_f292b7432398c825a68b4fbe8ddbedc9c135b2a1.png","name":"Fresha","path":"/companies/fresha","features":[],"__typename":"Company"},"Tool:101231774063724150":{"id":"101231774063724150","name":"Selenium","slug":"selenium","title":"Web Browser Automation","verified":false,"imageUrl":"https://img.stackshare.io/service/1517/sbUizSli_400x400.jpg","canonicalUrl":"/selenium","path":"/selenium","votes":527,"fans":15493,"stacks":15745,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/1517/thumb_sbUizSli_400x400.jpg"},"$Tool:101231773838011785.stackDecisions({\"first\":6}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:103356936364529702","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:103765180708785071":{"id":"103765180708785071","username":"keinsell","title":"Node.js Software Engineer","companyName":"","imageUrl":"https://img.stackshare.io/user/421186/default_7cb64e3be897c37ec21b411878cbf813731d1c86.jpeg","thumbUrl":"https://img.stackshare.io/user/421186/thumb_7cb64e3be897c37ec21b411878cbf813731d1c86.jpeg","displayName":"Jakub Olan","__typename":"User"},"StackDecision:103776818977450459":{"user":{"type":"id","generated":false,"id":"User:103765180708785071","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:103776818977450459.company","typename":"Company"},"link":null,"publicId":"103776818977450459","id":"103776818977450459","htmlContent":"In our company we have think a lot about languages that we're willing to use, there we have considering Java, Python and C++ . All of there languages are old and well developed at fact but that's not ideology of araclx. We've choose a edge technologies such as Node.js , Rust , Kotlin and Go as our programming languages which is some kind of fun. Node.js is one of biggest trends of 2019, same for Go. We want to grow in our company with growth of languages we have choose, and probably when we would choose Java that would be almost impossible because larger languages move on today's market slower, and cannot have big changes.","private":false,"viewCount":830738,"publishedAt":"2020-03-06T15:29:50Z","upvotesCount":17,"decisionType":"tool","fromTools":[{"type":"id","generated":false,"id":"Tool:101231773837179153","typename":"Tool"}],"toTools":[{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"}],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773837179153","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231773838011785","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773837179153","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773860248995","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773869138699","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775176212882","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773842107538","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:103776818977450459.company":{"imageUrl":"https://img.stackshare.io/company/161094/default_9ebd05c64a8f161056e2cb6592899008ba858d56.png","thumbUrl":"https://img.stackshare.io/company/161094/thumb_9ebd05c64a8f161056e2cb6592899008ba858d56.png","name":"Araclx","path":"/companies/araclx","features":[],"__typename":"Company"},"Tool:101231773869138699":{"name":"Rust","path":"/rust","id":"101231773869138699","imageUrl":"https://img.stackshare.io/service/1070/v7txhrjp9pdqrkdtxxp0.png","thumbUrl":"https://img.stackshare.io/service/1070/thumb_v7txhrjp9pdqrkdtxxp0.png","stacks":5872,"fans":5844,"votes":1241,"followingTool":false,"__typename":"Tool"},"$Tool:101231773838011785.stackDecisions({\"first\":6}).edges.2":{"node":{"type":"id","generated":false,"id":"StackDecision:103776818977450459","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:103881883034590149":{"id":"103881883034590149","username":"shivambhargava97","title":"AVP - Business","companyName":"VAYUZ Technologies Pvt. Ltd.","imageUrl":"https://img.stackshare.io/user/462613/default_d2bd4e52711752a001e1a56b125e015efb0351d2.jpg","thumbUrl":"https://img.stackshare.io/user/462613/thumb_d2bd4e52711752a001e1a56b125e015efb0351d2.jpg","displayName":"Shivam Bhargava","__typename":"User"},"StackDecision:103881959530526323":{"user":{"type":"id","generated":false,"id":"User:103881883034590149","typename":"User"},"company":null,"link":{"type":"id","generated":true,"id":"$StackDecision:103881959530526323.link","typename":"Link"},"publicId":"103881959530526323","id":"103881959530526323","htmlContent":"Hi Community! Trust everyone is keeping safe. I am exploring the idea of building a #Neobank (App) with end-to-end banking capabilities. In the process of exploring this space, I have come across multiple Apps (N26, Revolut, Monese, etc) and explored their stacks in detail. The confusion remains to be the Backend Tech to be used? \r\n\r\nWhat would you go with considering all of the languages such as Node.js Java Rails Python are suggested by some person or the other. As a general trend, I have noticed the usage of Node with React on the front or Node with a combination of Kotlin and Swift. Please suggest what would be the right approach!","private":false,"viewCount":893876,"publishedAt":"2020-03-25T05:08:00Z","upvotesCount":22,"decisionType":"getAdvice","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773837179153","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773835996572","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231773844232272","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775176212882","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773837179153","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773835996572","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773838011785","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"}],"topics":[{"type":"id","generated":false,"id":"Topic:103881959524712023","typename":"Topic"}],"__typename":"StackDecision"},"$StackDecision:103881959530526323.link":{"url":"https://en.wikipedia.org/wiki/Neobank","title":"Neobank - Wikipedia","__typename":"Link"},"Tool:101231773835996572":{"id":"101231773835996572","name":"Rails","slug":"rails","title":"Web development that doesn't hurt","verified":false,"imageUrl":"https://img.stackshare.io/service/990/x57_Lorv.png","canonicalUrl":"/rails","path":"/rails","votes":5462,"fans":16879,"stacks":19598,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/990/thumb_x57_Lorv.png"},"Tool:101231773844232272":{"name":"Swift","path":"/swift","id":"101231773844232272","imageUrl":"https://img.stackshare.io/service/1009/tuHsaI2U.png","thumbUrl":"https://img.stackshare.io/service/1009/thumb_tuHsaI2U.png","stacks":20430,"fans":16608,"votes":1275,"followingTool":false,"__typename":"Tool"},"Topic:103881959524712023":{"name":"Neobank","id":"103881959524712023","__typename":"Topic"},"$Tool:101231773838011785.stackDecisions({\"first\":6}).edges.3":{"node":{"type":"id","generated":false,"id":"StackDecision:103881959530526323","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:103893721553358583":{"id":"103893721553358583","username":"sauravpandit","title":"Application Devloper","companyName":"Bny Mellon","imageUrl":"https://img.stackshare.io/user/467935/default_95fecf726e890b4399eab9c1fa0cfb87c8d19d70.jpeg","thumbUrl":"https://img.stackshare.io/user/467935/thumb_95fecf726e890b4399eab9c1fa0cfb87c8d19d70.jpeg","displayName":"Saurav Pandit","__typename":"User"},"StackDecision:103896968096889036":{"user":{"type":"id","generated":false,"id":"User:103893721553358583","typename":"User"},"company":null,"link":null,"publicId":"103896968096889036","id":"103896968096889036","htmlContent":"I have just started learning Python 3 week back. I want to create REST api using python. The api will be use to save form data in Oracle database. The front end is using AngularJS 8 with Angular Material. In python there are so many framework for developing REST\n** I am looking for some suggestions which REST framework to choose? **\nHere are some feature I am looking for\n* Easy integration and unit testing like in Angular we just run command.\n* Code packageing, like in Java maven project we can build and package. I am looking for something which I can push in artifactory and deploy whole code as package.\n*Support for swagger/ OpenAPI\n* Support for JSON Web Token\n* Support for testcase coverage report\n Framework can have feature included or can be available by extension.","private":false,"viewCount":330270,"publishedAt":"2020-03-27T20:45:20Z","upvotesCount":9,"decisionType":"getAdvice","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231776122837715","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231777107444235","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773837179153","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231776654235080","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231778301696995","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773838011785","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773848354670","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773852399063","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773837179153","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231776122837715":{"id":"101231776122837715","name":"Angular Material ","slug":"angular-material","title":"Easy to use material design for angular","verified":false,"imageUrl":"https://img.stackshare.io/service/5445/cb8U-gL6_400x400.jpg","canonicalUrl":"/angular-material","path":"/angular-material","votes":32,"fans":931,"stacks":622,"followingTool":false,"followContext":null,"__typename":"Tool"},"Tool:101231777107444235":{"id":"101231777107444235","name":"Oracle PL/SQL","slug":"oracle-pl-sql","title":"It is a combination of SQL along with the procedural features of programming languages","verified":false,"imageUrl":"https://img.stackshare.io/service/7328/plsql.png","canonicalUrl":"/oracle-pl-sql","path":"/oracle-pl-sql","votes":8,"fans":855,"stacks":754,"followingTool":false,"followContext":null,"__typename":"Tool"},"Tool:101231776654235080":{"name":"JSON Web Token","path":"/json-web-token","id":"101231776654235080","imageUrl":"https://img.stackshare.io/service/6417/jwt-icon.png","thumbUrl":"https://img.stackshare.io/service/6417/thumb_jwt-icon.png","stacks":657,"fans":636,"votes":0,"followingTool":false,"__typename":"Tool"},"Tool:101231778301696995":{"name":"OpenAPI","path":"/open-api","id":"101231778301696995","imageUrl":"https://img.stackshare.io/service/9792/L8C2-2bd_400x400.jpg","thumbUrl":"https://img.stackshare.io/service/9792/thumb_L8C2-2bd_400x400.jpg","stacks":666,"fans":689,"votes":6,"followingTool":false,"__typename":"Tool"},"Tool:101231773848354670":{"name":"AngularJS","path":"/angularjs","id":"101231773848354670","imageUrl":"https://img.stackshare.io/service/1019/square.png","thumbUrl":"https://img.stackshare.io/service/1019/thumb_square.png","stacks":61297,"fans":55791,"votes":5283,"followingTool":false,"__typename":"Tool","slug":"angularjs","title":"Superheroic JavaScript MVW Framework","verified":false,"canonicalUrl":"/angularjs","followContext":null},"Tool:101231773852399063":{"name":"Oracle","path":"/oracle","id":"101231773852399063","imageUrl":"https://img.stackshare.io/service/1026/jT-HJYJg.png","thumbUrl":"https://img.stackshare.io/service/1026/thumb_jT-HJYJg.png","stacks":2331,"fans":2383,"votes":113,"followingTool":false,"__typename":"Tool"},"$Tool:101231773838011785.stackDecisions({\"first\":6}).edges.4":{"node":{"type":"id","generated":false,"id":"StackDecision:103896968096889036","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:104041144458664971":{"id":"104041144458664971","username":"lovkiys","title":null,"companyName":null,"imageUrl":"https://img.stackshare.io/user/534524/default_30885bc31095377bee7761c2ad0aa38e1534642b.jpg","thumbUrl":"https://img.stackshare.io/user/534524/thumb_30885bc31095377bee7761c2ad0aa38e1534642b.jpg","displayName":"Slava Lovkiy","__typename":"User"},"StackDecision:104046417712610986":{"user":{"type":"id","generated":false,"id":"User:104041144458664971","typename":"User"},"company":null,"link":null,"publicId":"104046417712610986","id":"104046417712610986","htmlContent":"What is the best MVC stack to build mobile-friendly, light-weight, and fast single-page application with Spring Boot as back-end (Java)? Is Bootstrap still required to front-end layer these days?\n\nThe idea is to host on-premise initially with the potential to move to the cloud. Which combo would have minimal developer ramp-up time and low long-term maintenance costs (BAU support)?","private":false,"viewCount":852741,"publishedAt":"2020-04-23T06:12:20Z","upvotesCount":3,"decisionType":"getAdvice","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231773848354670","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775222204089","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231773838011785","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774666323920","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231775222204089":{"id":"101231775222204089","name":"Vue.js","slug":"vue-js","title":"A progressive framework for building user interfaces","verified":false,"imageUrl":"https://img.stackshare.io/service/3837/paeckCWC.png","canonicalUrl":"/vue-js","path":"/vue-js","votes":1562,"fans":52437,"stacks":54664,"followingTool":false,"followContext":null,"__typename":"Tool"},"$Tool:101231773838011785.stackDecisions({\"first\":6}).edges.5":{"node":{"type":"id","generated":false,"id":"StackDecision:104046417712610986","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773838011785.allToolIntegrations({\"first\":9})":{"count":446,"pageInfo":{"type":"id","generated":true,"id":"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).pageInfo","typename":"PageInfo"},"edges":[{"type":"id","generated":true,"id":"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.4","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.5","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.6","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.7","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.8","typename":"ToolEdge"}],"__typename":"ToolConnection"},"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).pageInfo":{"hasNextPage":true,"endCursor":"OQ","__typename":"PageInfo"},"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.0":{"node":{"type":"id","generated":false,"id":"Tool:101231773669807419","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231774035999984":{"imageUrl":"https://img.stackshare.io/service/1453/icon_IntelliJIDEA.png","thumbUrl":"https://img.stackshare.io/service/1453/thumb_icon_IntelliJIDEA.png","thumbRetinaUrl":"https://img.stackshare.io/service/1453/thumb_retina_icon_IntelliJIDEA.png","name":"IntelliJ IDEA","id":"101231774035999984","slug":"intellij-idea","path":"/intellij-idea","__typename":"Tool"},"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.1":{"node":{"type":"id","generated":false,"id":"Tool:101231774035999984","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.2":{"node":{"type":"id","generated":false,"id":"Tool:101231774666323920","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.3":{"node":{"type":"id","generated":false,"id":"Tool:101231773844705754","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231773501596063":{"imageUrl":"https://img.stackshare.io/service/191/default_9262326592c97828a2a4299dec085a3674dd05f4.png","thumbUrl":"https://img.stackshare.io/service/191/thumb_9262326592c97828a2a4299dec085a3674dd05f4.png","thumbRetinaUrl":"https://img.stackshare.io/service/191/thumb_retina_9262326592c97828a2a4299dec085a3674dd05f4.png","name":"Sentry","id":"101231773501596063","slug":"sentry","path":"/sentry","__typename":"Tool"},"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.4":{"node":{"type":"id","generated":false,"id":"Tool:101231773501596063","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.5":{"node":{"type":"id","generated":false,"id":"Tool:101231773845539901","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231773703014119":{"imageUrl":"https://img.stackshare.io/service/669/default_34b3b9b42d07c33ac47ecdff75dd6f4f82aa70ee.jpg","thumbUrl":"https://img.stackshare.io/service/669/thumb_34b3b9b42d07c33ac47ecdff75dd6f4f82aa70ee.jpg","thumbRetinaUrl":"https://img.stackshare.io/service/669/thumb_retina_34b3b9b42d07c33ac47ecdff75dd6f4f82aa70ee.jpg","name":"Datadog","id":"101231773703014119","slug":"datadog","path":"/datadog","__typename":"Tool"},"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.6":{"node":{"type":"id","generated":false,"id":"Tool:101231773703014119","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231774255233876":{"imageUrl":"https://img.stackshare.io/service/2020/874086.png","thumbUrl":"https://img.stackshare.io/service/2020/thumb_874086.png","thumbRetinaUrl":"https://img.stackshare.io/service/2020/thumb_retina_874086.png","name":"JUnit","id":"101231774255233876","slug":"junit","path":"/junit","__typename":"Tool"},"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.7":{"node":{"type":"id","generated":false,"id":"Tool:101231774255233876","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231773838374890":{"imageUrl":"https://img.stackshare.io/service/996/unnamed.jpg","thumbUrl":"https://img.stackshare.io/service/996/thumb_unnamed.jpg","thumbRetinaUrl":"https://img.stackshare.io/service/996/thumb_retina_unnamed.jpg","name":"Spring","id":"101231773838374890","slug":"spring","path":"/spring","__typename":"Tool"},"$Tool:101231773838011785.allToolIntegrations({\"first\":9}).edges.8":{"node":{"type":"id","generated":false,"id":"Tool:101231773838374890","typename":"Tool"},"__typename":"ToolEdge"}}