{"id":35847,"date":"2021-08-31T11:41:12","date_gmt":"2021-08-31T08:41:12","guid":{"rendered":"https:\/\/orbitsoft.com\/blog\/?p=35847"},"modified":"2023-06-09T02:42:59","modified_gmt":"2023-06-08T23:42:59","slug":"tasks-we-solve-with-the-help-of-node-js","status":"publish","type":"post","link":"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-the-help-of-node-js\/","title":{"rendered":"Tasks we solve with the help of Node JS"},"content":{"rendered":"<div class=\"wp-block-lazyblock-case lazyblock-case-1lM9c7\"><div class=\"styled-block\">\n  <div class=\"styled-block__main\">\n          <h3 class=\"styled-block__title\">\n        In brief      <\/h3>\n        <ul class=\"case__list\">\n            \n                    <li class=\"case__item\">\n              \n          <span class=\"case__order\">01<\/span>\n          <div class=\"case__body\">\n            <div class=\"case__title\">\n              <span>Kind of tool<\/span>\n            <\/div>\n            <p>Node JS platform for web development based on Java Script<\/p>          <\/div>\n        <\/li>\n            \n                    <li class=\"case__item\">\n              \n          <span class=\"case__order\">02<\/span>\n          <div class=\"case__body\">\n            <div class=\"case__title\">\n              <span>Where we use it<\/span>\n            <\/div>\n            <p>VPN app for a large entertainment service<\/p>          <\/div>\n        <\/li>\n            \n                    <li class=\"case__item\">\n              \n          <span class=\"case__order\">03<\/span>\n          <div class=\"case__body\">\n            <div class=\"case__title\">\n              <span>Tasks we solved with this technology<\/span>\n            <\/div>\n            <p>Configured the process of payment acceptance<\/p>\n<p>Created a mechanism for collecting statistics<\/p>\n<p>Reduced server load<\/p>          <\/div>\n        <\/li>\n            \n                    <li class=\"case__item case__item_marked\">\n              \n          <span class=\"case__order\">04<\/span>\n          <div class=\"case__body\">\n            <div class=\"case__title\">\n              <span>Results for client<\/span>\n            <\/div>\n            <p>50,000 downloads of the app on Google Play in the first three months<\/p>\n<p>6+ platforms on which the app works<\/p>\n<p>Fast, 6-month application development period<\/p>          <\/div>\n        <\/li>\n          <\/ul>\n  <\/div>\n  <\/div><\/div>\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-1UTNHu\"><h2 class=\"article__h\">Project: VPN app for a large entertainment service <\/h2><\/div>\n\n\n<p>Our client is the largest content provider in Canada. One of its projects is an entertainment service: more than 40 million published videos and 350 thousand users online every day.<\/p>\n\n\n\n<p>Users of the service from some countries had problems with access: they could not watch content due to blocking. OrbitSoft solved this problem. We developed a VPN-app for six different platforms, which resulted in a substantial increase in the number of customers for the service. Read more about the development process in this case study.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-A8Jua\"><figure class=\"article__figure \">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-2021-08-13-\u0432-12.57.24.png\" alt=\"\">\n    <\/div>\n                <figcaption>The app is localized in more than 30 languages, available for users from many different countries.<\/figcaption>\n    <\/figure><\/div>\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-ZVirOo\"><h2 class=\"article__h\">Why we chose Node JS for development <\/h2><\/div>\n\n\n<p>We got involved in the development process after a previous contractor had failed. The program was slow, the payment system wasn\u2019t working correctly, and there were numerous repeated fragments and bugs. At our planning stage, we made decisions regarding which technologies to keep and which to replace.<\/p>\n\n\n\n<p>We decided to keep Node JS for the following reasons:<\/p>\n\n\n\n<ul>\n<li><strong>Asynchrony combined with an event-driven approach.<\/strong> It\u2019s convenient to program interactive applications that depend on user actions.<\/li>\n\n\n\n<li><strong>The large library of Java Script components simplifies development. <\/strong>The libraries are constantly evolving, and new ones are being created regularly.<\/li>\n\n\n\n<li><strong>More than 500,000 Node opensource solutions\/packages<\/strong> allow you to create any kind of functionality.<\/li>\n\n\n\n<li><strong>V8 engine.<\/strong> Compiler allows you not to lose speed in developing large applications.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-kaCR7\"><h2 class=\"article__h\">What tasks we solve with Node JS <\/h2><\/div>\n\n\n<p>We use Node JS for the server part of the app: the tool allows the app to perform multiple tasks simultaneously and not to hang. Rich library of components and open-source solutions provides an opportunity to modify the application functionality to the business tasks.<\/p>\n\n\n\n<p><strong>We set up payment acceptance in the app.<\/strong> To use the app, the user connects a subscription. Payment is deducted every month after the 7-day free period.<\/p>\n\n\n\n<p>The logic of accepting payment was unfortunate in the app \u2013 before choosing a tariff, the user had to create an account. This put a lot of people off: users didn\u2019t want to enter personal information before the y knew the cost of service.<\/p>\n\n\n\n<p>To make the app more accessible to customers, we changed the payment logic \u2013 you can now subscribe to the app without creating an account. This made the app more accessible to customers.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-Z1JYwRK\"><figure class=\"article__figure \">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/node-js.png\" alt=\"\">\n    <\/div>\n                <figcaption>You can now subscribe to the app without creating an accoun<\/figcaption>\n    <\/figure><\/div>\n\n\n<p><strong>Set up the collection of statistics.<\/strong> Our client analyzes the behavior of its users: which videos are popular, which are not, the age of users viewing the content, how often they view content, and so on. Analyzing this behavior allows the company to constantly improve the service for their customers, thereby increasing revenue.<\/p>\n\n\n\n<p>We set up statistics collection, and report creation, using Node JS.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-Z1APPr6\"><figure class=\"article__figure \">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/\u043d\u043e\u04342.png\" alt=\"\">\n    <\/div>\n                <figcaption>The client can set any parameters they need and generate a report.<\/figcaption>\n    <\/figure><\/div>\n\n\n<p><strong>Protect data from fraudulent attack.<\/strong> Any programming tool has its own vulnerabilities, and hackers and fraudsters can use them to steal user data, content, or development data. We took Node JS vulnerabilities into account when creating the application. As a result, data and code are safe.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-Z1x4l4k\"><figure class=\"article__figure \">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/\u043d\u043e\u04343.png\" alt=\"\">\n    <\/div>\n                <figcaption>This is part of the code for setting up the server and using the server software.<\/figcaption>\n    <\/figure><\/div>\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-1FIckv\"><h2 class=\"article__h\">Results of working with Node JS <\/h2><\/div>\n\n\n<p>The app was launched in the App Store in August 2020. We released the updated and corrected version just six months later, in January 2021. With all the modifications and improvements, the project took about 10 months.<\/p>\n\n\n\n<p>The application can be installed on 6 different platforms: iOS, MacOS, Android, Android TV, Fire OS, and Windows.<\/p>\n\n\n\n<p>It has been downloaded and installed over 250,000 times.<\/p>\n\n\n<div class=\"wp-block-lazyblock-important-block lazyblock-important-block-Z1E8B4r\"><div class=\"important-box\">\n  <div class=\"important-box__main\">\n          <p class=\"important-box__h\">Technical block<\/p>\n      \t<p><strong>Windows: All versions starting from Windows 7<\/strong><\/p>\n<ul>\n<li>Integrated development environment: Microsoft Visual Studio 2019<\/li>\n<li>Design development: Microsoft Expression Blend<\/li>\n<li>Programming language: C#<\/li>\n<li>Windows Presentation Foundation (WPF)<\/li>\n<li>NET Framework 4.7.2<\/li>\n<li>WiX toolset to create an installer<\/li>\n<\/ul>\n<p><strong>iOS<\/strong><\/p>\n<ul>\n<li>Programming language: Swift<\/li>\n<li>iPhone, iPad<\/li>\n<li>Minimum version iOS: 12.0<\/li>\n<li>Libraries: Firebase (Analytics, Messaging, DynamicLinks), Google IDFA Support, Facebook SDK, Lottie, Toast-Swift, PlainPing<\/li>\n<li>Build system: CocoaPods<\/li>\n<\/ul>\n<p><strong>macOS<\/strong><\/p>\n<ul>\n<li>Programming language: Swift<\/li>\n<li>macOS<\/li>\n<li>Minimum version macOS: 10.14<\/li>\n<li>Libraries: Lottie, Toasts, PlainPing, SRTabBarController (with changes), CustomSegue, CustomButton, FLOPageViewController<\/li>\n<li>Build system CocoaPods, Swift Package<\/li>\n<\/ul>\n<p><strong>Android<\/strong><\/p>\n<ul>\n<li>API level 21+<\/li>\n<li>Android, Android TV, Fire OS<\/li>\n<li>Phones, tablets, TV<\/li>\n<li>Programming language: Kotlin<\/li>\n<li>Patterns used: MVVM<\/li>\n<li>Libraries: Firebase (Cloud Messaging, Analytic, Crashlytics), Google Play Billing Library, Leanback, AndroidX, Lottie<\/li>\n<\/ul>\n<p><strong>Frontend<\/strong><\/p>\n<ul>\n<li>React.js<\/li>\n<li>Vue.js<\/li>\n<li>WordPress<\/li>\n<\/ul>\n<p><strong>Backend<\/strong><\/p>\n<ul>\n<li>Node.js<\/li>\n<li>TypeScript<\/li>\n<li>NoSQL (MongoDB)<\/li>\n<\/ul>\n<p><strong>Libraries<\/strong><\/p>\n<ul>\n<li>Express.js;<\/li>\n<li>moment.js;<\/li>\n<li>Mongoose.js;<\/li>\n<li>jsonwebtoken.js.<\/li>\n<\/ul>  <\/div>\n  <\/div><\/div>\n\n<div class=\"wp-block-lazyblock-banner lazyblock-banner-Z11lrIF\"><div \n  class=\"banner\n   \n  \" \n  >\n    <div class=\"banner__body\">\n        <h2 class=\"banner__h\"> We release projects for online and offline business<\/h2>\n        <div class=\"banner__content\">\n            <p><strong>We work with businesses of any scale.<\/strong> Our clients include international companies, large and medium-sized businesses, and startups.<\/p>\n<p><strong>Telecom<\/strong>: cellular operators, Internet service providers.<\/p>\n<p><strong>Finance<\/strong>: electronic payment systems, insurance companies and brokers.<\/p>\n<p><strong>Retail<\/strong>: stores, trade networks.<\/p>\n<p><strong>Internet advertising<\/strong>: advertising agencies, advertising networks.<\/p>\n<p><strong>Medicine<\/strong>: clinics, medical services.<\/p>        <\/div>\n                            <div \n              class=\"banner__button button js-form-modal\n               button_style_light-on-promo2\">\n              Discuss or order development                          <\/div>\n            <\/div>\n    <div class=\"banner__photo\">\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/friendship.png\" alt=\"\" class=\"banner__img\">\n    <\/div>\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Our client is the largest content provider in Canada. One of its projects is an entertainment service: more than 40 million published videos and 350 thousand users online every day. Users of the service from some countries had problems with access: they could not watch content due to blocking. OrbitSoft solved this problem. We developed [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":35862,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[196],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tasks we solve with the help of Node JS - OrbitSoft Blog<\/title>\n<meta name=\"description\" content=\"We developed a VPN-app for six different platforms, which resulted in a substantial increase in the number of customers for the service. Read more about the development process in this case study.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-the-help-of-node-js\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Tasks we solve with the help of Node JS - OrbitSoft Blog\" \/>\n<meta name=\"twitter:description\" content=\"We developed a VPN-app for six different platforms, which resulted in a substantial increase in the number of customers for the service. Read more about the development process in this case study.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/node-js-1029x1002-1.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@orbitsoft\" \/>\n<meta name=\"twitter:site\" content=\"@orbitsoft\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tasks we solve with the help of Node JS - OrbitSoft Blog","description":"We developed a VPN-app for six different platforms, which resulted in a substantial increase in the number of customers for the service. Read more about the development process in this case study.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-the-help-of-node-js\/","twitter_card":"summary_large_image","twitter_title":"Tasks we solve with the help of Node JS - OrbitSoft Blog","twitter_description":"We developed a VPN-app for six different platforms, which resulted in a substantial increase in the number of customers for the service. Read more about the development process in this case study.","twitter_image":"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/node-js-1029x1002-1.jpg","twitter_creator":"@orbitsoft","twitter_site":"@orbitsoft","twitter_misc":{"Written by":"admin","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-the-help-of-node-js\/","url":"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-the-help-of-node-js\/","name":"Tasks we solve with the help of Node JS - OrbitSoft Blog","isPartOf":{"@id":"https:\/\/orbitsoft.com\/blog\/#website"},"datePublished":"2021-08-31T08:41:12+00:00","dateModified":"2023-06-08T23:42:59+00:00","author":{"@id":"https:\/\/orbitsoft.com\/blog\/#\/schema\/person\/e515b3fa91e283750477594c4f028b7b"},"description":"We developed a VPN-app for six different platforms, which resulted in a substantial increase in the number of customers for the service. Read more about the development process in this case study.","breadcrumb":{"@id":"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-the-help-of-node-js\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-the-help-of-node-js\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-the-help-of-node-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/orbitsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tasks we solve with the help of Node JS"}]},{"@type":"WebSite","@id":"https:\/\/orbitsoft.com\/blog\/#website","url":"https:\/\/orbitsoft.com\/blog\/","name":"OrbitSoft Blog","description":"Discover the latest in news and resources for OrbitSoft","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/orbitsoft.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/orbitsoft.com\/blog\/#\/schema\/person\/e515b3fa91e283750477594c4f028b7b","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/orbitsoft.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b1b269c579caf059f82b6d114c63fc49?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b1b269c579caf059f82b6d114c63fc49?s=96&d=mm&r=g","caption":"admin"},"url":"https:\/\/orbitsoft.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/35847"}],"collection":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=35847"}],"version-history":[{"count":7,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/35847\/revisions"}],"predecessor-version":[{"id":36538,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/35847\/revisions\/36538"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/media\/35862"}],"wp:attachment":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=35847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/categories?post=35847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/tags?post=35847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}