{"id":35386,"date":"2021-04-20T14:48:56","date_gmt":"2021-04-20T11:48:56","guid":{"rendered":"https:\/\/orbitsoft.com\/blog\/?p=35386"},"modified":"2023-08-31T13:07:32","modified_gmt":"2023-08-31T10:07:32","slug":"vpn-app-how-we-fixed-others-mistakes-and-launched-the-project","status":"publish","type":"post","link":"https:\/\/orbitsoft.com\/blog\/vpn-app-how-we-fixed-others-mistakes-and-launched-the-project\/","title":{"rendered":"VPN App: How We Fixed Other\u2019s Mistakes and Launched the Project"},"content":{"rendered":"<div class=\"wp-block-lazyblock-case lazyblock-case-ZWoYl9\"><div class=\"styled-block\">\n  <div class=\"styled-block__main\">\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>The client is<\/span>\n            <\/div>\n            <p>a network that manages advertising in the entertainment content services arena.<\/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>Business tasks<\/span>\n            <\/div>\n            <ul>\n<li><span lang=\"en-US\">To increase the number of users in countries where access to such services is prohibited<\/span><\/li>\n<li><span lang=\"en-US\">To get an additional channel for passive income<\/span><\/li>\n<\/ul>          <\/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>Solution<\/span>\n            <\/div>\n            <p>to launch an application to work via VPN.<\/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<\/span>\n            <\/div>\n            <p><strong>the launch of an app that is in demand<\/strong><\/p>\n<p><strong>50k<\/strong> Number of times the app was downloaded from Google Play in the first 3 months<\/p>\n<p><strong>6+<\/strong> Number of platforms where the application can be used<\/p>\n<p><strong>6 months<\/strong> Application development period<\/p>          <\/div>\n        <\/li>\n          <\/ul>\n  <\/div>\n  <\/div><\/div>\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-Z1eOF83\"><h2 class=\"article__h\">350k users online every day <\/h2><\/div>\n\n\n<p>The customer is an advertising company in Canada.  One of its projects is a service with entertainment content. Most of the content is published in video format, and it is popular: it\u2019s viewed by 350 thousand users every day.<\/p>\n\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-Zg7LrF\"><h2 class=\"article__h\">Problem: service is losing users due to closed access <\/h2><\/div>\n\n\n<p>The customer earns from showing ads to users of the service, for example, in the form of videos, banners, pop-ups, and other formats.  At the beginning of 2021, the service has had more than 9 billion ad impressions per month.<\/p>\n\n\n\n<p>The logic of making money is simple: the more users visit the site, the more ad views they have and the higher the customer&#8217;s earnings are. Thus, the problem is obvious: to increase the number of users.<\/p>\n\n\n<div class=\"wp-block-lazyblock-link-text lazyblock-link-text-1E7jDS\">      <aside class=\"article-aside js-article-aside_under\">\n    <div class=\"article-aside__body\">\n                      <div class=\"article-aside__title\"> <a href=\"https:\/\/orbitsoft.com\/ru\/blog\/artificial-intelligence\/\">How customizing personalized recommendations helped increase ad revenue.<\/a> <\/div>\n              <\/div>\n<\/aside><\/div>\n\n\n<p>There are countries where users are limited in their choice of content for various reasons, often concerning entertainment videos. The customer knows that the content of the service is legal, does not violate the law, but due to the peculiarities of the policies of certain countries, users cannot enter the site.<\/p>\n\n\n\n<p>Another problem is the fear of users that their data can be stolen and used for illegal purposes. Attackers can gain access to their accounts on social networks, to bank accounts, and other services.<\/p>\n\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-24L0KD\"><h2 class=\"article__h\">Solution: launch own VPN app <\/h2><\/div>\n\n\n<p> When users want to securely access a site, they can use virtual private network technology, aka VPN.  It encrypts the data that the user transmits to the ISP, so that it\u2019s impossible &#8211; or very difficult &#8211; to access the user&#8217;s traffic.<\/p>\n\n\n\n<p>There are already a lot of VPN apps on the market. The customer analyzed ready-made solutions and came to the conclusion that it would be more profitable to create their own application. According to the company&#8217;s plan, it will be used by readers of its service and users of other entertainment services.  In this way, the customer will stop losing their audience and also earn money from it.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-11hLic\"><figure class=\"article__figure \">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/1.jpg\" alt=\"\">\n    <\/div>\n                <figcaption>A VPN helps you stay anonymous and secure, so users use it for a variety of different services.<\/figcaption>\n    <\/figure><\/div>\n\n\n<p>To develop the application, the customer first contacted one team. It was chosen for the price: the team offered the cheapest solution, and it seemed like a good way to save money. But the idea failed.<\/p>\n\n\n\n<p>According to the plan, the application should have launched after six months.  But almost a year passed and there were basically no results.  It was then that the customer turned to Orbitsoft.  After discussing the problem, we took up the project.<\/p>\n\n\n<div class=\"wp-block-lazyblock-steps lazyblock-steps-ZgbPv0\"><div class=\"styled-block\">\n  <div class=\"styled-block__main\">\n          <h3 class=\"styled-block__title\">\n        Stages of work on the application      <\/h3>\n        <ul class=\"steps__list\">\n              <li class=\"steps__item\">\n          <div class=\"steps__title\">\n            Audit          <\/div>\n                    <ul>\n<li>\n<p><span lang=\"en-US\">What has already been developed?<\/span><\/p>\n<\/li>\n<li>\n<p><span lang=\"en-US\">How does the application work?<\/span><\/p>\n<\/li>\n<li>\n<p><span lang=\"en-US\">How quickly will it be possible to finalize and launch it?<\/span><\/p>\n<\/li>\n<\/ul>        <\/li>\n              <li class=\"steps__item\">\n          <div class=\"steps__title\">\n            Audit results          <\/div>\n                    <ul>\n<li>\n<p><span lang=\"en-US\">Development problems<\/span><\/p>\n<\/li>\n<li>\n<p><span lang=\"en-US\">Problem solving<\/span><\/p>\n<\/li>\n<li>\n<p><span lang=\"en-US\">Work plan and deadlines<\/span><\/p>\n<\/li>\n<\/ul>        <\/li>\n              <li class=\"steps__item\">\n          <div class=\"steps__title\">\n            Research          <\/div>\n                    <ul>\n<li>\n<p><span lang=\"en-US\">Best practices and efficient technologies for similar tasks<\/span><\/p>\n<\/li>\n<li>\n<p><span lang=\"en-US\">Application architecture<\/span><\/p>\n<\/li>\n<li>\n<p><span lang=\"en-US\">Programming language<\/span><\/p>\n<\/li>\n<\/ul>        <\/li>\n              <li class=\"steps__item\">\n          <div class=\"steps__title\">\n            Design and development          <\/div>\n                    <ul>\n<li>\n<p><span lang=\"en-US\">Minimum Viable Product<\/span><\/p>\n<\/li>\n<li>\n<p><span lang=\"en-US\">Testing<\/span><\/p>\n<\/li>\n<li>\n<p><span lang=\"en-US\">Refinement of other functions<\/span><\/p>\n<\/li>\n<\/ul>        <\/li>\n              <li class=\"steps__item\">\n          <div class=\"steps__title\">\n            Launch          <\/div>\n                      <div class=\"steps__description\">\n              The application is downloaded by real users            <\/div>\n                            <\/li>\n              <li class=\"steps__item\">\n          <div class=\"steps__title\">\n            Refinement          <\/div>\n                    <ul>\n<li>\n<p><span lang=\"en-US\">Feedback from users<\/span><\/p>\n<\/li>\n<li>\n<p><span lang=\"en-US\">Additional testing<\/span><\/p>\n<\/li>\n<li>\n<p><span lang=\"en-US\">Refinement of features that can work better<\/span><\/p>\n<\/li>\n<\/ul>        <\/li>\n          <\/ul>\n  <\/div>\n  <\/div><\/div>\n\n\n<p>We work on each project in stages, and divide the stages into iterations.  After each, we tell the client what has already been done and at what stage the project is.  In this way the customer is always up to date, and if something is wrong, we can quickly discuss it and adjust the work.<\/p>\n\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-R5pwo\"><h2 class=\"article__h\">Stage 1. Analyze situation <\/h2><\/div>\n\n\n<p>The work on the application was divided into six stages. Since we didn\u2019t start from scratch, but were given the results from the first team, the first thing we did was analyze what had already been done and how it worked.  In fact, nothing has been completed.<\/p>\n\n\n\n<p>A few examples of what they found:<\/p>\n\n\n\n<p><strong>The application had a monolithic architecture<\/strong>, so it was difficult to test and maintain it. For the customer, this means spending additional hours to add any new features. It would be better if the architecture consisted of layers: you can make changes to one layer and test only one layer, and not all of them at once.<\/p>\n\n\n<div class=\"wp-block-lazyblock-banner lazyblock-banner-11wDUI\"><div \n  class=\"banner\n   \n  \" \n  >\n    <div class=\"banner__body\">\n        <h2 class=\"banner__h\">Who will find a VPN app useful?<\/h2>\n        <div class=\"banner__content\">\n            <ol>\n<li><strong>Businesses with remote employees.<\/strong> With a VPN, you protect sensitive data from the competition.<\/li>\n<li><strong>Sites and services<\/strong>. Some countries restrict access to certain content. If you work in such an environment, a VPN will help you retain your audience.<\/li>\n<li><strong>Entrepreneurs looking for passive income<\/strong>. VPN apps are in demand, and if they\u2019re convenient, customers are willing to pay for access.<\/li>\n<\/ol>        <\/div>\n                            <div \n              class=\"banner__button button js-form-modal\n               button_style_light-on-promo2\">\n              Start a discussion or order development                          <\/div>\n            <\/div>\n    <div class=\"banner__photo\">\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/Frame-14.png\" alt=\"\" class=\"banner__img\">\n    <\/div>\n<\/div><\/div>\n\n\n<p><strong>There were a lot of bugs in the code<\/strong>, so the program often crashed.  For example, due to an authentication token, not all of the features had been updated.<\/p>\n\n\n<div class=\"wp-block-lazyblock-important-block lazyblock-important-block-Z1n8bjt\"><div class=\"important-box\">\n  <div class=\"important-box__main\">\n          <p class=\"important-box__h\">Technical block: examples of development problems from the first team<\/p>\n      \t<p><strong>Backend:<\/strong><\/p>\n<ul>\n<li>frequent duplication of code sections<\/li>\n<li>lack of a unified code style<\/li>\n<li>incorrect integration with the payment system<\/li>\n<li>lack of automated deployment to servers<\/li>\n<\/ul>\n<p><strong>Frontend:<\/strong><\/p>\n<ul>\n<li>incorrect implementation of routing<\/li>\n<li>no animations for pop-up windows and view transitions<\/li>\n<li>impossibility of selecting the number of displayed lines on pages of different types of statistics<\/li>\n<\/ul>\n<p><strong>Web version:<\/strong><\/p>\n<ul>\n<li><strong>unoptimized code<\/strong>: a lot of repetitive code fragments, constants hardcoded into the code, no OOP, interface and code responsible for the application logic are mixed<\/li>\n<li><strong>poor performance<\/strong>: no caching, requests to the server return the same data and are executed several times in a row in different places of the application, multithreaded programming is not used, requests to the API are executed in the interface thread. Delay when working with the interface reached 15 seconds<\/li>\n<li><strong>security hole<\/strong>: app saves usernames and passwords and other confidential data in an open text file. Some requests to server return confidential data even with unauthorized requests.<\/li>\n<\/ul>\n<p><strong>Mobile version:<\/strong><\/p>\n<ul>\n<li>errors in logic of payment transactions<\/li>\n<li>duplicated animation when loading some screens of the application<\/li>\n<li>different layouts for iPad and different iPhone models<\/li>\n<li>difficult redesign of the application<\/li>\n<li>no localization of the application<\/li>\n<li>incorrect work of tokens for authorization<\/li>\n<li>processing of errors of returned requests from the API not implemented everywhere<\/li>\n<li>configuration files used to store data, which made it difficult to work with data selection, filtering, and sorting<\/li>\n<li>layout is not adapted for screens of different sizes<\/li>\n<\/ul>  <\/div>\n  <\/div><\/div>\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-ZtCOad\"><h2 class=\"article__h\">Stage 2. Discuss with client and clarify goal of project <\/h2><\/div>\n\n\n<p>Following our research, we contacted the client and discussed our results and work plan. While discussing, the client clarified the technical task. Now we not only had to fix the errors of the first team, but to develop a more advanced version of the application. Our project is a cross-platform application that can work with different operating systems.<\/p>\n\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-Z2bYCcW\"><h2 class=\"article__h\">Step 3. Study best practices in market and choose solution <\/h2><\/div>\n\n\n<p>Before starting development, we always study ready-made solutions.  Consequently, our next step was research.<\/p>\n\n\n\n<p>This helps save the customer&#8217;s time: we don\u2019t waste resources on knowingly inefficient solutions. Instead, we cut off the excess and invest in what will help the client earn more.<\/p>\n\n\n\n<p>For example, to transfer the application from Android to iOS, the customer suggested using a converter. We studied it, found limitations in it, and began to think about other options. As a result, we chose Kotlin for Android and Android TV, Swift for iOS and macOS, and C# for Windows applications.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-2sr9Fr\"><figure class=\"article__figure \">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/nwdn_file_temp_1617799750189.jpg\" alt=\"\">\n    <\/div>\n                <figcaption>We studied different architectures and code of ready-made applications. This helps to quickly select the best methods for solving the client&#8217;s problem.<\/figcaption>\n    <\/figure><\/div>\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-1VxpLS\"><h2 class=\"article__h\">Stage 4. Design and develop application internals <\/h2><\/div>\n\n\n<p>First, we made a minimum viable product &#8211; an application that you can download and at least log into. To test the work under real conditions, we agreed with the customer to offer free access to users, and they were warned that we were testing the application.<\/p>\n\n\n\n<p>A week later, we realized that there were no errors, and finalized the application. For example, additional functions such as auto-connect at startup were added, and the design was updated.<\/p>\n\n\n\n<p>There were also some difficulties with the project. One of them was related to integration with iOS. At first, some of the data was not always displayed correctly, for example, whether the user had really subscribed or whether the trial period was still valid. This happened due to the App Store&#8217;s buyer&#8217;s authentication methods.<\/p>\n\n\n\n<p>To fix the incorrect work, we performed several actions. One of them was to implement the &#8220;grace period&#8221; function: if the user cannot pay due to technical problems of the application, we don\u2019t block access. The application is available, but we and the user receive a notification: the payment has not been received. This helped us to not lose customer loyalty \u2013 as they were not to blame for the bug &#8211; and gave us time to find the error and fix it.<\/p>\n\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-21Uc08\"><h2 class=\"article__h\">Results: we launched app on schedule and it\u2019s now in demand <\/h2><\/div>\n\n\n<p>The app was launched in January 2021. It took us six months from first negotiations to launch in the App Store and on Google Play. During this time we released two versions &#8211; the minimum viable product (MVP) and the full-fledged one.<\/p>\n\n\n<div class=\"wp-block-lazyblock-link-text lazyblock-link-text-Z2pGO01\">      <aside class=\"article-aside js-article-aside_under\">\n    <div class=\"article-aside__body\">\n                <div class=\"article-aside__h\">50k<\/div>\n                      <div class=\"article-aside__title\">Number of times app was downloaded from Google Play during first 3 months<\/div>\n              <\/div>\n<\/aside><\/div>\n\n\n<p>The app already has its own audience. By the beginning of April it had been downloaded 50 thousand times from Google Play alone, and this is taking into account that there are dozens, if not hundreds, of VPN solutions. For us this means that users are satisfied with the set of functions and they are ready to work with the application.<\/p>\n\n\n\n<p>The customer is pleased with the result and the Orbitsoft team will maintain the application until the end of the year.<\/p>\n\n\n<div class=\"wp-block-lazyblock-important-block lazyblock-important-block-Z2sP7hP\"><div class=\"important-box\">\n  <div class=\"important-box__main\">\n          <p class=\"important-box__h\">Technical features of the project<\/p>\n      \t<p><strong>Windows: all versions beginning from Windows 7<\/strong><\/p>\n<ul>\n<li>integrated development environment of Microsoft Visual Studio 2019<\/li>\n<li>design development for Microsoft Expression Blend<\/li>\n<li>C# programming language<\/li>\n<li>Windows Presentation Foundation (WPF)<\/li>\n<li>NET Framework 4.7.2<\/li>\n<li>WiX toolset to create installer<\/li>\n<\/ul>\n<p><strong>iOS<\/strong><\/p>\n<ul>\n<li>Swift language<\/li>\n<li>iPhone, iPad<\/li>\n<li>minimum version of iOS 12.0<\/li>\n<li>libraries: Firebase (Analytics, Messaging, DynamicLinks), Google IDFA Support, Facebook SDK, lottie, Toast-Swift, PlainPing<\/li>\n<li>CocoaPods build system<\/li>\n<\/ul>\n<p><strong>macOS<\/strong><\/p>\n<ul>\n<li>Swift language<\/li>\n<li>macOS<\/li>\n<li>minimum version of macOS 10.14<\/li>\n<li>libraries: lottie, Toasts, PlainPing, SRTabBarController (with fixes), CustomSegue, CustomButton, FLOPageViewController<\/li>\n<li>build systems 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>Kotlin programming language<\/li>\n<li>patterns used &#8211; 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<li>reactstrap.js<\/li>\n<li>rc-pagination.js<\/li>\n<li>moment.js<\/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-ZLsORG\"><div \n  class=\"banner\n   \n  \" \n  >\n    <div class=\"banner__body\">\n        <h2 class=\"banner__h\">Ready-made products and custom development<\/h2>\n        <div class=\"banner__content\">\n            <h3>System and platforms<\/h3>\n<ul>\n<li>POS + inventory accounting system<\/li>\n<li>Tools for managing ads and buying traffic<\/li>\n<li>Big data processing solutions<\/li>\n<\/ul>\n<h3>Software products<\/h3>\n<ul>\n<li>Mobile apps<\/li>\n<li>Online shops<\/li>\n<li>Video platforms<\/li>\n<li>Online services<\/li>\n<\/ul>\n<h3>Development and support<\/h3>\n<ul>\n<li>System administration<\/li>\n<li>High-load systems developments<\/li>\n<\/ul>\n<h3>Consulting<\/h3>\n<ul>\n<li>Audit of existing software solutions<\/li>\n<li>Consultations: we will select the best technical solution for your tasks and tell you how to implement it<\/li>\n<\/ul>        <\/div>\n                            <div \n              class=\"banner__button button js-form-modal\n               button_style_light-on-promo2\">\n              Let&#8217;s Discuss Your Project                          <\/div>\n            <\/div>\n    <div class=\"banner__photo\">\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/screens.png\" alt=\"\" class=\"banner__img\">\n    <\/div>\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>The customer is an advertising company in Canada. One of its projects is a service with entertainment content. Most of the content is published in video format, and it is popular: it\u2019s viewed by 350 thousand users every day. The customer earns from showing ads to users of the service, for example, in the form [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":35595,"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>VPN App: How We Fixed Other\u2019s Mistakes and Launched the Project - OrbitSoft Blog<\/title>\n<meta name=\"description\" content=\"In 6 months we developed a VPN application that works on 6+ platforms and was downloaded from Google Play 50K times in the first 3 months\" \/>\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\/vpn-app-how-we-fixed-others-mistakes-and-launched-the-project\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"VPN App: How We Fixed Other\u2019s Mistakes and Launched the Project - OrbitSoft Blog\" \/>\n<meta name=\"twitter:description\" content=\"In 6 months we developed a VPN application that works on 6+ platforms and was downloaded from Google Play 50K times in the first 3 months\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/new-img3.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=\"5 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"VPN App: How We Fixed Other\u2019s Mistakes and Launched the Project - OrbitSoft Blog","description":"In 6 months we developed a VPN application that works on 6+ platforms and was downloaded from Google Play 50K times in the first 3 months","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\/vpn-app-how-we-fixed-others-mistakes-and-launched-the-project\/","twitter_card":"summary_large_image","twitter_title":"VPN App: How We Fixed Other\u2019s Mistakes and Launched the Project - OrbitSoft Blog","twitter_description":"In 6 months we developed a VPN application that works on 6+ platforms and was downloaded from Google Play 50K times in the first 3 months","twitter_image":"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/new-img3.jpg","twitter_creator":"@orbitsoft","twitter_site":"@orbitsoft","twitter_misc":{"Written by":"admin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/orbitsoft.com\/blog\/vpn-app-how-we-fixed-others-mistakes-and-launched-the-project\/","url":"https:\/\/orbitsoft.com\/blog\/vpn-app-how-we-fixed-others-mistakes-and-launched-the-project\/","name":"VPN App: How We Fixed Other\u2019s Mistakes and Launched the Project - OrbitSoft Blog","isPartOf":{"@id":"https:\/\/orbitsoft.com\/blog\/#website"},"datePublished":"2021-04-20T11:48:56+00:00","dateModified":"2023-08-31T10:07:32+00:00","author":{"@id":"https:\/\/orbitsoft.com\/blog\/#\/schema\/person\/e515b3fa91e283750477594c4f028b7b"},"description":"In 6 months we developed a VPN application that works on 6+ platforms and was downloaded from Google Play 50K times in the first 3 months","breadcrumb":{"@id":"https:\/\/orbitsoft.com\/blog\/vpn-app-how-we-fixed-others-mistakes-and-launched-the-project\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/orbitsoft.com\/blog\/vpn-app-how-we-fixed-others-mistakes-and-launched-the-project\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/orbitsoft.com\/blog\/vpn-app-how-we-fixed-others-mistakes-and-launched-the-project\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/orbitsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"VPN App: How We Fixed Other\u2019s Mistakes and Launched the Project"}]},{"@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\/35386"}],"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=35386"}],"version-history":[{"count":40,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/35386\/revisions"}],"predecessor-version":[{"id":35691,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/35386\/revisions\/35691"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/media\/35595"}],"wp:attachment":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=35386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/categories?post=35386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/tags?post=35386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}