<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Peruna Keremidchieva - SashiDo.io | API Development, Deployment and Scaling made simple.]]></title><description><![CDATA[SashiDo.io is a serverless API development platform with scalable json rest and graphql apis, headless cms, built with nodejs, mongodb, parse server, kubernetes and docker.]]></description><link>https://blog.sashido.io/</link><image><url>https://blog.sashido.io/favicon.png</url><title>Peruna Keremidchieva - SashiDo.io | API Development, Deployment and Scaling made simple.</title><link>https://blog.sashido.io/</link></image><generator>Ghost 1.20</generator><lastBuildDate>Fri, 22 May 2026 20:04:46 GMT</lastBuildDate><atom:link href="https://blog.sashido.io/author/peruna/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[The perks of Parse Server]]></title><description><![CDATA[<div class="kg-card-markdown"><p>After announcing the official shutdown of the hosted Parse service, an open source version was released. It can be deployed to any infrastructure that can run NodeJS, works with the Express web application framework and can be added to existing web applications, or run by itself.</p>
<p>Parse Server is the</p></div>]]></description><link>https://blog.sashido.io/the-perks-of-parse-server/</link><guid isPermaLink="false">5a5dc99834405f92e87fbd5d</guid><category><![CDATA[Getting Started]]></category><dc:creator><![CDATA[Peruna Keremidchieva]]></dc:creator><pubDate>Fri, 20 Jan 2017 12:56:27 GMT</pubDate><media:content url="https://media-blog.sashido.io/content/images/2017/01/cover-3.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://media-blog.sashido.io/content/images/2017/01/cover-3.png" alt="The perks of Parse Server"><p>After announcing the official shutdown of the hosted Parse service, an open source version was released. It can be deployed to any infrastructure that can run NodeJS, works with the Express web application framework and can be added to existing web applications, or run by itself.</p>
<p>Parse Server is the best open source option to explore for those who search for alternative for the Hosted MBaaS (Mobile Backend as a Service). It has the potential to be one of the largest open sourced projects in GitHub. So for those who still can’t get over the fact that Parse will be shut down – have no fear, <strong>Parse Server offers much more that you expect.</strong></p>
<h4 id="whyparseserveroffersmore">Why Parse Server offers more?</h4>
<p>Few years ago programmers had to deal with a lot of stuff – database, servers, user accounts, front-end, network and hardware maintenance etc. Everything had to be build individually and a lot of skills and knowledge were needed to cope with the entire building process. What made Parse  so awesome was that it gave freedom to the developers to focus on the actual building of the app and to not think about the backend. The frustration that Parse’s users felt after learning the bad news of closure is understandable.<br>
<strong>The good news is that with the use of other providers, Parse’s awesomeness can be available even after January 2017.</strong> Parse Server is self-hosted, so you can choose to use Parse Server hosting provider such as SashiDo, run it on your local machine or you can use your own cloud-based server.<br>
There are <strong>few differences between Parse.com and the Parse Server</strong>, as follows :</p>
<ul>
<li>You can <em>test and develop your app locally</em> on Parse Server, which is so useful especially when you want to check something before official update.</li>
<li>Parse had east-coast data center and offers no other location, <em>Parse Server can be hosted anywhere</em>, which means you can choose the most convenient region for you and be closer to your users.</li>
<li>Parse stored all files in their Amazon S3 bucket. Parse Server: <a href="https://github.com/parse-server-modules">adapters</a> are being written to <em>allow developers to choose which database platform and file storage system</em> they'd like to use.</li>
<li>With Parse Server you have to bring your own database, but you receive several pluses like: <em>index management, performance tuning, backup and restore functionality</em>, and all of the other cool features your database provides. If you decide to host the Parse Server on Third party provider you don’t have to deal with managing database, because it’s included in the service so it’s one less thing to worry about.</li>
<li>Parse enforced a 1,000-object maximum on queries, a 3-second time limit on database triggers, a 15-second time limit on cloud functions, and an overall 30-second limit on all requests. This was needed because it powered a lot of apps, but now this limitation is gone since you’re running just your apps.</li>
<li>With Parse Server you can <em>use all official npm modules</em>, not only Parse Cloud Code modules, which is great, because this means a lot more variety of packages for you to include in your application. Check out how to do it on SashiDo with our <a href="https://blog.sashido.io/github-integration-of-advanced-cloud-code-part-1/">Twilio Cloud Code integration</a>. The principle is the same with any npm package. We provide GitHub integration, which makes npm modules management even more simple.</li>
<li><em>New features</em> were included in the Parse Server such as Parse LiveQuery, allowing you to easily include real - time operations in your application. Check out <a href="https://blog.sashido.io/sashido-goes-realtime-with-parse-server-live-queries/">our tutorial</a> on how to use them on SashiDo.</li>
<li><a href="http://parse-opensource.sapp.io/">Parse Open Source community</a> is growing huge. <em>Mobile developers join forces in order to improve the product</em>. There’s constant pull requests, bug-fixing and updates (almost 40 in the last couple of months).</li>
</ul>
<p><strong>The best thing about the Parse Server is that it’s free and open source:</strong> you can change whatever you want and need. And there’s a lot of people who are like you and wish to contribute for the community. One of the most popular products (such as Wordpress, Linux kernel, MySQL etc.) became so popular and developed so much due to the reason that they were open source. <a href="http://blog.parse.com/learn/open-source-spotlight-florent-vilmart/">Here</a> you can read an interview with the biggest contributor to the Parse Server: <a href="https://github.com/flovilmart">Florent Vilmart</a> and what motivated him to do this outstanding job.</p>
<p>The old Parse is about to reborn because of Parse Server and this is a great option to <strong>start something new, better and make it your own</strong>.  It’s up to you whether to host it by yourself or use Parse Server provider such as SashiDo, which will take care of all the time and effort - consuming server-side part. This is actually our passion and what we’re good at. We have experience with Cloud hosting and we’d love to manage the Parse Server for you so you can have the freedom to focus on your applications.</p>
<p>In the meantime, happy coding :-)</p>
</div>]]></content:encoded></item><item><title><![CDATA[Tips for choosing your Parse Server provider]]></title><description><![CDATA[<div class="kg-card-markdown"><p>Choosing your Parse Server provider could be important decision, if you’ve decided to go with a third party solution. <strong>A lot of new companies and providers came on the market during the last year</strong>, which is awesome, because you have more options to choose from. This also creates competition</p></div>]]></description><link>https://blog.sashido.io/tips-for-choosing-your-parse-server-provider/</link><guid isPermaLink="false">5a5dc99834405f92e87fbd5c</guid><category><![CDATA[Getting Started]]></category><dc:creator><![CDATA[Peruna Keremidchieva]]></dc:creator><pubDate>Wed, 11 Jan 2017 18:24:56 GMT</pubDate><media:content url="https://media-blog.sashido.io/content/images/2017/01/cover-2.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://media-blog.sashido.io/content/images/2017/01/cover-2.png" alt="Tips for choosing your Parse Server provider"><p>Choosing your Parse Server provider could be important decision, if you’ve decided to go with a third party solution. <strong>A lot of new companies and providers came on the market during the last year</strong>, which is awesome, because you have more options to choose from. This also creates competition which pushes providers to improve the quality of the service and to give better terms in order to gain more customers. On the other hand you may feel confused - everybody promises good conditions and service, but <strong>what are the “must-haves” of your new partner?</strong> We want to help you out a bit and that’s why we have prepared a list of things we believe a good Parse Server provider needs to have.</p>
<ul>
<li>
<p><strong>Auto scaling</strong> - you probably know the number of users and your regular traffic each month, but let’s imagine you are launching a marketing campaign or some other event that requires escalated data transfer or more push notifications than usually. You need to be sure that your new provider is capable of handling this traffic at any time. Auto scaling is one of the essential concepts in Cloud computing, because it provides the flexibility to automatically add or cut out compute resources based on the actual usage of your applications. You benefit in every way - you pay for what you’ve used and most importantly: don’t have to worry if your apps can handle an unexpected traffic.</p>
</li>
<li>
<p><strong>Multi region</strong> - make sure your provider covers as many regions as possible or at least plans to do so. This is important in many aspects - the distance between your server location and your app’s users may affect the speed and no one wants slow loading of data. SEO (Search Engine Optimization) considers server location as a factor when trying to check if your web app or website is relevant for a certain country or language market.</p>
</li>
<li>
<p><strong>No Vendor Lock-in</strong> - our advice is to double check this, because you need to make sure you’ll be able to migrate your apps away at any time without problems. You should feel satisfied with the service and the provider and this should be the reason that you don’t leave, not because they don’t let you do it.</p>
</li>
<li>
<p><strong>Good 24/7 support</strong> - it’s crucial to be able to get expert assistance and to know your new provider can help you if you experience any troubles.</p>
</li>
<li>
<p><strong>Reasonable pricing</strong> - of course we talk about business and this is an important aspect, so feel free to compare what you’ll receive for your payment. Still have in mind that choosing the lowest price is not always the best solution, because you may miss some important features or good support etc.</p>
</li>
<li>
<p><strong>Check the provider’s background</strong> - we mean not only comments of other users, whо already used the service, but get to know the company a little better - are they on the market for some time now, what is their core business, do they have experience with Cloud hosting, who are the people behind it? Years of experience in the field sounds much more promising and reliably.</p>
</li>
<li>
<p><strong>Vision for the future</strong> - it’s good to know your provider has plans for the future beyond just hosting the Parse Server. As developers we all like to dream big and it’s the best to know you have access to the most innovating technologies. Try to find if they are contributing in some way to the improvement of the Parse Server or just ask them if they have any bigger plans. If they do - they’ll be more than excited to share with you.</p>
</li>
</ul>
<p>We know it’s hard to pin your faith upon a new provider and to allocate your applications in their hands after Parse has shaken the trust in MBaaS as industry. <strong>But the benefits and convenience of using a third party provider definitely worth the risk.</strong> Just follow our tips and you’ll save yourself a lot of time and nerves, spent on switching from one service to another. We’d love to hear what’s important for you when you look for a new Parse Server provider. Share with us your opinion!</p>
<p><em>In the meantime: Happy coding :)</em></p>
</div>]]></content:encoded></item><item><title><![CDATA[Checklist for successful Parse migration by SashiDo]]></title><description><![CDATA[<div class="kg-card-markdown"><p>Time flies fast. <strong>It’s been 10 months since Parse announced the future retirement of their hosted service.</strong><br>
Many of you still feel uncertain about starting the migration process. We do understand your reasons - you need more time to see how the situation is going to develop, which new</p></div>]]></description><link>https://blog.sashido.io/checklist-for-successful-parse-migration-by-sashido/</link><guid isPermaLink="false">5a5dc99734405f92e87fbd5b</guid><category><![CDATA[migration]]></category><category><![CDATA[Getting Started]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[Cloud Code]]></category><dc:creator><![CDATA[Peruna Keremidchieva]]></dc:creator><pubDate>Fri, 23 Dec 2016 18:51:29 GMT</pubDate><media:content url="https://media-blog.sashido.io/content/images/2016/12/cover-1.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://media-blog.sashido.io/content/images/2016/12/cover-1.png" alt="Checklist for successful Parse migration by SashiDo"><p>Time flies fast. <strong>It’s been 10 months since Parse announced the future retirement of their hosted service.</strong><br>
Many of you still feel uncertain about starting the migration process. We do understand your reasons - you need more time to see how the situation is going to develop, which new path to choose - self hosted backend or third party provider, you still wonder how stable are the fresh Parse Server providers. The actual migration also may scare you - you’ve probably have read the long <a href="https://parse.com/migration">official Parse documentation</a> on the process and feel confused whether you'll manage to do it on your own.</p>
<p>Don't worry! We did our best by providing the easiest and fastest possible migration. It's fully automated and takes minutes (depending on your DB size). You can read more in our tutorial - <a href="http://blog.sashido.io/parse-migration-in-a-click/">Parse Migration in a Click</a>.</p>
<p>In addition to this information we'd like to share with you the most appropriate order of steps to do your migration on SashiDo along with few tricky moments you need to know. If you follow them we guarantee you’ll experience troubleless migration and fully functioning features of your apps.</p>
<p>Here’s the short list of the recommended migration steps:</p>
<ol>
<li>Migrate your database</li>
<li>Update your SDK-s</li>
<li>Set up the Cloud Code</li>
<li>Activate your Background Jobs</li>
<li>Upload your Certificates for Push Notifications and switch to FCM /for Android/</li>
<li>Check Global config, Sender Email and e-mail templates, Webhooks</li>
<li>Set up your Host Name (CNAME)</li>
<li>Migrate your files</li>
<li>Prepare your app for IPv6 networks /iOS/</li>
</ol>
<p>So let’s get started :)</p>
<h2 id="migrateyourdatabase">Migrate your database</h2>
<p>There’s plenty of options to transfer your DB from Parse - manually or with supporting tools. We chose to help you in any way possible, so we offer fully automated database migration. Although it's completely safe and trustworthy, it’s always good practice to check if everything has moved successfully. You can easily do this with MongoDB’s <a href="https://docs.mongodb.com/v3.0/reference/command/nav-diagnostic/">diagnostic commands</a> or see it in SashiDo’s Dashboard under Core &gt; Browser and if there’s a problem - just reach us at <a href="mailto:support@sashido.io">support@sashido.io</a> and we’d love to check what could be the problem. Keep in mind that if you don’t finalize your migration on Parse’s Dashboard in the next 24 hours, your application will be using your old database. You can read more information in our <a href="https://blog.sashido.io/parse-migration-in-a-click/">migration tutorial</a>.</p>
<p>If you don’t finalize your migration in 24 hours, you can restart the database migration only manually. For this you would need to clean up the database from any collections. Then to start a manual migration you have to go to SashiDo dashboard &gt; Application Settings &gt; Security &amp; Keys &gt; Copy the Database URI.<br>
Then go to the Parse.com dashboard &gt; App Settings &gt; General and click the button &quot;<strong>migrate</strong>&quot; (Migrate to external database) and paste the URI there. After that you have another 24 hours to finalize the process.</p>
<h2 id="upgradetothelatestsdks">Upgrade to the latest SDKs</h2>
<p>Parse Server uses the latest SDKs- so make sure you update them before you start testing your application in order for your Cloud Code to work properly. Here’s a list of what you might need:</p>
<ul>
<li><a href="https://github.com/ParsePlatform/Parse-SDK-iOS-OSX">For iOS &amp; OSX</a></li>
<li><a href="https://github.com/ParsePlatform/Parse-SDK-Android">For Android</a></li>
<li><a href="https://github.com/ParsePlatform/Parse-SDK-JS">For JavaScript</a></li>
<li><a href="https://github.com/ParsePlatform/Parse-SDK-dotNET">For .NET + Xamarin</a></li>
<li><a href="https://github.com/ParsePlatform/Parse-SDK-dotNET">For Unity</a></li>
<li><a href="https://github.com/parseplatform/parse-php-sdk">Parse PHP SDK</a></li>
<li><a href="https://github.com/ParsePlatform/Parse-SDK-Arduino">For Arduino</a></li>
<li><a href="https://github.com/parseplatform/parse-embedded-sdks">Embedded C</a></li>
<li><a href="https://github.com/ParsePlatform/parse-cli">Cloud Code</a></li>
</ul>
<p><strong>Keep in mind that non revocable sessions are not supported by the open source Parse Server and may need to be migrated</strong></p>
<p>If your application is using old style sessions you will need to migrate these too due to the fact that this functionality is not supported by the open source Parse Server. There is a tutorial on how to do this and it is not hard at all! You can check this link for <a href="https://parse.com/tutorials/session-migration-tutorial">more detailed information about session migration</a></p>
<h2 id="setupthecloudcode">Set up the Cloud Code</h2>
<p>Mentioning Cloud Code - the popular Javascript SDK for a server-side environment, was changed in the Parse Server.</p>
<h3 id="1parseusercurrentisnotsafetouse">1. Parse.User.current() is not safe to use</h3>
<p>In the open source Parse Server it is not safe to use <code>Parse.User.current()</code> and this needs to be changed a bit. You will have to pass the session token taken from the request variable. Here is an example code we will quickly migrate:</p>
<script src="https://gist.github.com/pivanov/8eeb136724e6cf1e386230ef3517f33f.js"></script>
<p>And this is how it should look after the changes:</p>
<script src="https://gist.github.com/pivanov/d3ef342172dd68c2fa2e324fe7f85ae7.js"></script>
<p>Here we get the user from the request variable and we can pass the token to future query and cloud code invocations. We will save it in a variable just to make our life easier and pass it as part of the options argument to the find function. Remember you will need to pass it to other find, delete, save, etc functions as well. You will also need to pass it to other calls to your cloud code functions.</p>
<h3 id="2parsecloudusemasterkeymayleadtosecurityissues">2. Parse.Cloud.useMasterKey() may lead to security issues</h3>
<p>You should not rely on <code>Parse.Cloud.useMasterKey()</code> as it may lead to security issues, instead you should to the same as what we have done with the user’s session token and pass it as part of the options object. Here is an example:</p>
<script src="https://gist.github.com/pivanov/b3825d8a211b1536d5d412ed86615888.js"></script>
<p>And here is the result of the new migrated cloud code:</p>
<script src="https://gist.github.com/pivanov/834a7383a2ac54b371d738d928ea5176.js"></script>
<p>As you can see we have <code>Parse.Cloud.useMasterKey()</code> is now commented out and <code>useMasterKey</code> is passed to the count function. As previously if you need to bypass ACLs or CLPs and need master you will have to pass this to other functions and cloud code calls.</p>
<h3 id="3parsenativecloudcodemodulesarenotavailableanymore">3. Parse native Cloud Code modules are not available anymore</h3>
<p>Parse native Cloud Code modules are not available anymore, now you need to use their official npm modules. This actually is a great news, because before you were restricted to only Parse Cloud Code modules and now you can use any npm module you want to. We did a short tutorial on <a href="https://blog.sashido.io/github-integration-of-advanced-cloud-code-part-1/">how to use Twilio</a> - the principle is the same with all packages.</p>
<p>Here is a list of the modules and their npm counterparts:</p>
<ul>
<li><strong>App Links:</strong> There is no direct replacement, but it is relatively easy to generate these tags yourself.</li>
<li><strong>Buffer:</strong> This is included natively with Node. Remove any <strong>require('buffer')</strong> calls.</li>
<li><strong>Mailgun:</strong> Use the official npm module <a href="https://www.npmjs.com/package/mailgun-js">mailgun-js</a></li>
<li><strong>Mandrill:</strong> Use the official npm module <a href="https://www.npmjs.com/package/mandrill-api">mandrill-api</a></li>
<li><strong>Moment:</strong><br>
Use the official npm module <a href="https://www.npmjs.com/package/moment">moment</a></li>
<li><strong>SendGrid:</strong> Use the official npm module <a href="https://www.npmjs.com/package/sendgrid">sendgrid</a></li>
<li><strong>Stripe:</strong> Use the official npm module <a href="https://www.npmjs.com/package/stripe">stripe</a></li>
<li><strong>Twilio:</strong> Use the official npm module <a href="https://www.npmjs.com/package/twilio">twilio</a></li>
<li><strong>Underscore:</strong> Use the official npm module <a href="https://www.npmjs.com/package/twilio">underscore</a></li>
<li><strong>Parse Image:</strong> We recommend using another image manipulation library, like the <a href="https://www.npmjs.com/package/imagemagick">imagemagick</a> wrapper module</li>
</ul>
<p><strong>Note:</strong> In-app purchases are not yet supported by the open source Parse Server.</p>
<h2 id="activateyourbackgroundjobs">Activate your Background Jobs</h2>
<p>Background Jobs is an useful tool, allowing you to use long-running, repeating tasks. They’re part of the Cloud Code and migrate with it, jobs are not active as they may conflict with your currently running jobs on parse.com and you need to activate them after the migration. Just go in <em>SashiDo’s Dashboard &gt; Core &gt; Jobs &gt; Scheduled Jobs &gt; Activate</em>. After they are activated you will be able to change the schedule and edit them. Bear in mind that jobs will be running on parse.com too and you may need to stop them from running there. If you don’t know how to create Background Jobs and haven’t used them before you can take a look at our tutorial - <a href="https://blog.sashido.io/getting-started-with-background-jobs-on-sashido/">Getting started with Background Jobs on SashiDo</a>.</p>
<h2 id="uploadyourcertificatesforpushnotificationsandswitchtofcmforandroid">Upload your Certificates for Push Notifications and switch to FCM /for Android/</h2>
<p>A common mistake is to forget to upload your certificates in order to use Push Notifications. They can’t be migrated because of security issues, but push audiences will be moved with your application. You need to upload your Apple Push Certificates and Android Push Credentials in your SashiDo Dashboard manually. Important news is that if you use GCM Credentials you’ll need to upgrade to FCM (Firebase Cloud Messaging), because some of the features of GCM are already depreciated and soon the whole GCM will be depreciated. You can read more information on <a href="https://blog.sashido.io/android-push-notifications-how-to-start-using-fcm/">how to upgrade to FCM</a>.</p>
<p><strong>Another important information</strong> regarding Android apps:<br>
Parse.com owns the API Key of all default Sender IDs for each of their users. This means that the legacy FCM tokens can only be published via the hosted Parse.com API end point. If you use your <code>SENDER_ID</code>, generated by Parse, it will publish to all tokens - new and old, but  after January 2017 you won’t be able to use it anymore. There’s no way to migrate the tokens, generated by Parse API, the only solution is to update the client SDK and register each user specifying your own <code>SENDER_ID</code>.</p>
<h2 id="globalconfigemailtemplateswebhooks">Global Config, E-mail templates, Webhooks</h2>
<p><strong>Global Config</strong> allows you to set up parameters that let you control the appearance or behavior of your app. It should migrate successfully with your application, but just check if everything is ok under <em>Core &gt; Config</em>.</p>
<p><strong>E-mail templates</strong> also migrate with your DB, just check them and do some tests if needed.</p>
<p><strong>Reply-to email address:</strong> If you want your users to receive emails like forgotten password, auto reply etc. from a custom email address you have to make a small update. Go to SashiDo’s Dashboard and add your reply-to email address in the <em>Settings &gt; Hosting &amp; Emails</em> section. You will receive an email to verify the address, so make sure you check your inbox and do the necessary to complete the verification.</p>
<p>If you were using <strong>webhooks</strong> you will need to add them yourself. The interface is the same as in Parse.com and thus makes it fairly straight forward to add them in the dashboard.</p>
<h2 id="setupyourhostnamecname">Set up your Host Name (CNAME)</h2>
<p>You can use static web hosting with SashiDo, you just need to set up your custom domain and CNAME in the Dashboard. Here's an article explaining <a href="https://blog.sashido.io/static-web-hosting-with-sashido/">how to use hosting on SashiDo</a>.</p>
<h2 id="takecareofyourfiles">Take care of your files</h2>
<p>Parse stores your files in it’s own AWS S3 Bucket and Mongo database stores only references (URLs) to them. So after migrating the DB, the files don’t move with it and will be deleted after 28th of January 2017. Few months ago, this was a huge problem, but now there are file migration tools. SashiDo was the first to <a href="https://mv.sashido.io/">provide one</a>, you can easily find the tool in SashiDo’s Dashboard: <em>App Settings &gt; File Migration</em>. It’s completely free and can be used by all AWS clients, regardless if they use SashiDo or not.</p>
<p>One important note before you start the migration of your files: when the files are pointing to Parse.com’s S3 bucket they are visible to both api.parse.com and Parse Servers because of the way they are kept in the database Parse.com knows how to find them and provide a correct link. But after the files are being migrated they are no longer pointing to the Parse.com S3 and won’t be visible to Parse.com API end point. Also files uploaded from the Parse Server won't be visible to Parse.com API end point.</p>
<p>This means that file migration should be done after you have released a new build for you application and people start updating it.</p>
<p>Now to start a file migration you need to go to <em>App Settings</em> - choose <em>File Migration</em> and press <em>Start File Migration</em>.</p>
<h2 id="appstorerequiressupportofipv6">App Store requires support of IPv6</h2>
<p>In June this year Apple announced that after iOS 9 apps including, submitted to the App Store, must support IPv6 Network. Starting June 1, 2016 all apps submitted to the App Store must support IPv6-only networking. Most apps will not require any changes because IPv6 is already supported by <code>NSURLSession</code> and <code>CFNetwork APIs</code>, but in case your app uses IPv4-specific APIs or hard-coded IP addresses, you will need to make some changes. In order to meet the requirements your app needs to: work over IPv6 network connections and use DNS over IPv6. When you release the new version of your application on AppStore after migration make sure you meet these requirements.</p>
<p>In other words this IPv6 compatibility means to ensure that your apps work with IPv6 technology, you don’t have to make the endpoints running on IPv6 as DNS64/NAT64, translation technologies will facilitate the communications.</p>
<p>What you actually need to do is to make sure your application is ready for IPv6. This could involve things like not hard coding IPv4 in the app, not using a [short] fixed length string to store IP Address.</p>
<p>If you do use a string to store IP address it’s very important to make sure it has room to store at least 40 characters to accommodate IPv6 address format.</p>
<p>Here is a list of steps you need to take to ensure your application is ready for IPv6:</p>
<ul>
<li>Use High-Level Networking Frameworks</li>
<li>Don not Use IP Address Literals</li>
<li>Connect Without Preflight</li>
<li>Use Appropriately Sized Storage Containers</li>
<li>Check Source Code for IPv6 DNS64/NAT64 Incompatibilities</li>
<li>Use System APIs to Synthesize IPv6 Addresses</li>
<li>Test for IPv6 DNS64/NAT64 Compatibility Regularly</li>
</ul>
<p>We know migration can be challenging and problematic so make sure you give yourself enough time to check everything and leave enough time for live testing with the real users. In this way you’ll ensure the safe and smooth new journey of your apps. Keep in mind that in case you are not happy with your initial Parse.com alternative choice you will need time to find another provider and migrate there. In this line of thoughts our last tip is to make sure your provider doesn’t have vendor lock-in, this was one of the key strategic points in our policy as a company - users should feel free to make their decision based on the quality of the products, not because they feel trapped.</p>
<p>Don't be afraid of the migration, but also don't delay it too much, because there isn't a lot of time left.</p>
<p>If you have any questions regarding the migration - we'd love to help you with answers and we will be happy to receive feedback on your experience with the migration process.</p>
<p>In the meantime, happy coding :-)</p>
</div>]]></content:encoded></item><item><title><![CDATA[SashiDo welcomes US region]]></title><description><![CDATA[<div class="kg-card-markdown"><p>We, SashiDo’s team, like to dream big, because setting up the bar high is the way to achieve awesome results. We wanted to create a service, offering every feature from Parse so you wouldn’t miss anything when coding your favourite apps, to give to you a REAL PARSE</p></div>]]></description><link>https://blog.sashido.io/sashido-welcomes-us-region/</link><guid isPermaLink="false">5a5dc99734405f92e87fbd58</guid><category><![CDATA[announcements]]></category><dc:creator><![CDATA[Peruna Keremidchieva]]></dc:creator><pubDate>Sat, 05 Nov 2016 16:28:00 GMT</pubDate><media:content url="https://media-blog.sashido.io/content/images/2016/11/geo-coverage.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://media-blog.sashido.io/content/images/2016/11/geo-coverage.png" alt="SashiDo welcomes US region"><p>We, SashiDo’s team, like to dream big, because setting up the bar high is the way to achieve awesome results. We wanted to create a service, offering every feature from Parse so you wouldn’t miss anything when coding your favourite apps, to give to you a REAL PARSE ALTERNATIVE. After launching so many of them and putting a lot of effort into improving the service, it was clear: it’s time to expand and cover more hosting location. Since most of you asked for US - it was decided to be the next in our roadmap.<br>
We’re very excited to announce that from today you can</p>
<h3 id="createnewormigrateexistingappsinusregion">Create new or migrate existing apps in US region</h3>
<p>It’s simple, in case you want to build a new app in US location choose it from the dropdown menu in SashiDo’s Dashboard. If you already have apps running on SashiDo, but US is a more convenient for you: write us at <strong><a href="mailto:support@sashido.io">support@sashido.io</a></strong> and we’ll be more than happy to change your current region to US.</p>
<p>We will start migrating your apps from EU to US after 17.11.2016.</p>
<h2 id="whyserverregionmatters">Why server region matters?</h2>
<p>It’s important in many aspects. The distance that data has to travel between your server location and your app’s users may affect the speed that your application loads so if you choose a server, closer to your users, this will make your products faster. So it’s better to keep your app on a server, close to your target market. Another good reason is that SEO (Search Engine Optimization) considers server location as a factor when attempting to ascertain if your web app or website is relevant for a particular country or language market.</p>
<br>
<img src="//www.sashido.io/img/map.svg" alt="SashiDo welcomes US region">
<br>
<h2 id="whatscomingnext">What’s coming next?</h2>
<p>Here’s a sneak peek of what’s already in progress and will be available for you to enjoy very soon:</p>
<ul>
<li>New region Australia</li>
<li>Advanced Push Notifications</li>
<li>Automated MongoDB Backups</li>
<li>Documentation</li>
</ul>
<p>Don’t forget that you can write us at <strong><a href="mailto:support@sashido.io">support@sashido.io</a></strong> in case you have any questions.</p>
<p>In the meantime: happy coding :)</p>
</div>]]></content:encoded></item><item><title><![CDATA[Static web hosting with SashiDo]]></title><description><![CDATA[<div class="kg-card-markdown"><p>One of the guideline policy that Parse created was to try to make everything convenient for their users and that was one of the main reasons developers loved the service. <strong>SashiDo’s team wants to keep this tradition by providing our customers the same experience of comfort and effortless coding</strong></p></div>]]></description><link>https://blog.sashido.io/static-web-hosting-with-sashido/</link><guid isPermaLink="false">5a5dc99634405f92e87fbd57</guid><category><![CDATA[Tutorial]]></category><category><![CDATA[Web Hosting]]></category><category><![CDATA[custom domains]]></category><dc:creator><![CDATA[Peruna Keremidchieva]]></dc:creator><pubDate>Thu, 20 Oct 2016 19:40:44 GMT</pubDate><media:content url="https://media-blog.sashido.io/content/images/2016/10/www.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://media-blog.sashido.io/content/images/2016/10/www.png" alt="Static web hosting with SashiDo"><p>One of the guideline policy that Parse created was to try to make everything convenient for their users and that was one of the main reasons developers loved the service. <strong>SashiDo’s team wants to keep this tradition by providing our customers the same experience of comfort and effortless coding</strong>. I’m sure this happened to you: you get an order for an app, but  the customer also wants a website with it. So you have to use one provider for the mobile application, another for the website, deal with web hosting and sftp servers, domain name registering etc. Wouldn’t it be lovely to have everything in one place?</p>
<h4 id="withsashidoyoucan">With SashiDo you can :)</h4>
<p>In this tutorial we’ll show you how to <strong>publish static web sites in few simple steps</strong>.<br>
When you deploy Cloud Code in your GitHub repo, any files in your directory ‘public’ is uploaded to Parse Server and becomes accessible online. You can choose a subdomain in their app settings.</p>
<p>So let’s get started.</p>
<ul>
<li>
<p>Go to SashiDo’s Dashboard  &gt; App Settings &gt; Emails &amp; Hosting . Choose a subdomain name, it should be in the following format:</p>
<p><strong>[subdomain-name].yoursite.com</strong></p>
</li>
<li>
<p>Enter the wanted subdomain + mysite.com in the input, don’t press ‘Save changes’ yet.</p>
</li>
</ul>
<ul>
<li>By entering the subdomain’s name you’ll see host names to resolve the CNAME.</li>
</ul>
<p><img src="https://media-blog.sashido.io/content/images/2016/10/1.jpg" alt="Static web hosting with SashiDo"></p>
<ul>
<li>Now you have to claim the new host name. Go to your DNS provider and set up a new CNAME record.</li>
<li>Go back to SashiDo’s Dashboard and now save the changes.</li>
<li>You already know about your private GitHub repo with you Cloud Code hosted in it <a href="https://blog.sashido.io/how-to-set-up-cloud-code-on-sashido/">link to tutorial</a>. It also holds a folder named ‘public’ where you can keep your html, css, JavaScript, image files.</li>
<li>Clone the repository and</li>
</ul>
<pre><code>git add .
git commit -am 'upload my awesome site'
git push
</code></pre>
<p>your website files in the ‘public’ directory. Every push triggers a deploy so you don’t have to deploy the code afterwards :)</p>
<ul>
<li>Now go to your new domain and see how the website just came alive for the web.</li>
</ul>
<p><img src="https://media-blog.sashido.io/content/images/2016/10/2.jpg" alt="Static web hosting with SashiDo"></p>
<p>Here’s some useful documentation on how to add new CNAME record:</p>
<p><a href="https://uk.godaddy.com/help/add-a-cname-record-19236">GoDaddy</a><br><br>
<a href="http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html">Amazon</a><br><br>
<a href="https://www.namecheap.com/support/knowledgebase/article.aspx/9646/10/how-can-i-set-up-a-cname-record-for-my-domain">namecheap</a><br><br>
<a href="http://www.networksolutions.com/support/cname-records-host-aliases/">networksolutions</a></p>
<p>Continue enjoying simple and straight-forward coding, leave the messy server-side stuff to us to handle :)</p>
<p>We can’t wait to see the amazing sites you’ll create and host on SashiDo.</p>
<p>Happy coding :)</p>
</div>]]></content:encoded></item><item><title><![CDATA[GitHub integration of Advanced Cloud Code part 2]]></title><description><![CDATA[<div class="kg-card-markdown"><h3 id="howtosetuptwilioforlocaldevelopment">How to set up Twilio for local development</h3>
<p>In the <a href="https://blog.sashido.io/github-integration-of-advanced-cloud-code-part-1">first part</a> of this tutorial we showed you how to make npm package integrations directly into your  Advanced Cloud Code. But let’s say you want to test something on your computer before deploying it on SashiDo’s Cloud Code.</p></div>]]></description><link>https://blog.sashido.io/github-integration-of-advanced-cloud-code-part-2/</link><guid isPermaLink="false">5a5dc99634405f92e87fbd56</guid><category><![CDATA[Cloud Code]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Peruna Keremidchieva]]></dc:creator><pubDate>Tue, 04 Oct 2016 14:44:23 GMT</pubDate><media:content url="https://media-blog.sashido.io/content/images/2016/10/cover-1.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><h3 id="howtosetuptwilioforlocaldevelopment">How to set up Twilio for local development</h3>
<img src="https://media-blog.sashido.io/content/images/2016/10/cover-1.png" alt="GitHub integration of Advanced Cloud Code part 2"><p>In the <a href="https://blog.sashido.io/github-integration-of-advanced-cloud-code-part-1">first part</a> of this tutorial we showed you how to make npm package integrations directly into your  Advanced Cloud Code. But let’s say you want to test something on your computer before deploying it on SashiDo’s Cloud Code. This tutorial is for Mac OS X (for other OS should something similar)</p>
<p>First you should install nvm (Node Version Manager - Simple bash script to manage multiple active node.js versions). Here’s explanation how to do it: <a href="https://github.com/creationix/nvm">link</a>. Command is</p>
<pre><code>curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
</code></pre>
<p>You should also have Node.js installed, you can download it from <a href="https://nodejs.org/en/download/package-manager/">here</a>. But we’ll show how to do it with the NVM. Run in your terminal the following command:</p>
<pre><code>nvm install v6.2.1
</code></pre>
<p>Clone the repository, if you haven’t done it yet.</p>
<pre><code>git clone git@github.com:parsegroundapps/pg-app-yourapp-id.git
</code></pre>
<p>Install twilio, here is explained how to do it <a href="https://www.npmjs.com/package/twilio">link</a>. We suggest you to use the command:</p>
<pre><code>npm install --save twilio
</code></pre>
<p>Command --save will automatically write it in package.json. It’s a good practice to use it, because sometimes a programmer forgets to add the dependency and to push it to the server. The code won’t work as a result.</p>
<p>You should add node_modules directory to the git ignore file, because they’ll be installed on the server automatically by SashiDo.</p>
<pre><code>echo 'node_modules' &gt;&gt; .gitignore
</code></pre>
<p>Let’s create a new file which will keep our test code: twilio.js in the cloud directory. Don’t forget to require it in main.js, otherwise it’ll not work.</p>
<p>Let’s write a simple function in twilio.js, which will send a SMS to a number by your choice.</p>
<script src="https://gist.github.com/pkeremidchieva/273a9acb043f0e28a6a95b26582313e3.js"></script>
<p>You can find 'ACCOUNT_SID' and 'AUTH_TOKEN'  in <a href="https://www.twilio.com/login">Twilio’s Dashboard</a>, here is <a href="https://www.twilio.com/docs/">Twilio’s  documentation</a> in case you need it.</p>
<p>In order to test, you’ll need some database. You can use your application’s database. Go to SashiDo’s Dashboard, App Settings -&gt; Security &amp; Keys -&gt; Database URL. Copy &amp; Paste in index.js:</p>
<script src="https://gist.github.com/pkeremidchieva/03259795dbf992473a81efc1215e31b3.js"></script>
<p>Run Parse Server in Node.js with command<br>
node index.js</p>
<p>Open a new tab of the terminal and write the following POST request to do the test:</p>
<pre><code>curl -X POST \
	-H 'X-Parse-Application-Id: myAppId' \
	-H 'X-Parse-REST-API-Key: key' \
	http://localhost:1337/1/functions/inviteWithTwilio
</code></pre>
<p>Check the phone for the results, if you followed this tutorial correctly, you should get the SMS:</p>
<p><img src="https://media-blog.sashido.io/content/images/2016/10/img2-4.png" alt="GitHub integration of Advanced Cloud Code part 2"></p>
<p>If you’re happy with the results, it’s time to deploy the code. Git add, git commit, git push your changes</p>
<pre><code>git add .
git commit -am 'Add twillio integration'
git push
</code></pre>
<br>
**Now you can smoothly enjoy building complex apps with the power, given by SashiDo and Advanced Cloud Code.** If you have any difficulties or need help - reach us at support@sashido.io .
<p>Happy coding :)</p>
</div>]]></content:encoded></item><item><title><![CDATA[GitHub integration of Advanced Cloud Code part 1]]></title><description><![CDATA[<div class="kg-card-markdown"><h3 id="setupoftwiliopackagetutorial">Setup of Twilio package tutorial</h3>
<p>Building more complex apps without a lot of knowledge about back-ends and infrastructure sounds difficult, but we believe in Parse’s vision for letting developers create any app effortlessly. When we first launched early access for SashiDo, most of our lovely users asked for Advanced</p></div>]]></description><link>https://blog.sashido.io/github-integration-of-advanced-cloud-code-part-1/</link><guid isPermaLink="false">5a5dc99634405f92e87fbd55</guid><category><![CDATA[Tutorial]]></category><category><![CDATA[Cloud Code]]></category><dc:creator><![CDATA[Peruna Keremidchieva]]></dc:creator><pubDate>Tue, 04 Oct 2016 14:44:13 GMT</pubDate><media:content url="https://media-blog.sashido.io/content/images/2016/10/cover.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><h3 id="setupoftwiliopackagetutorial">Setup of Twilio package tutorial</h3>
<img src="https://media-blog.sashido.io/content/images/2016/10/cover.png" alt="GitHub integration of Advanced Cloud Code part 1"><p>Building more complex apps without a lot of knowledge about back-ends and infrastructure sounds difficult, but we believe in Parse’s vision for letting developers create any app effortlessly. When we first launched early access for SashiDo, most of our lovely users asked for Advanced Cloud Code and we do understand why -  it’s essential  feature, because it’s flexible, allows you to write Express applications and use different packages such as Mashape, Mailgun etc. This means that Advanced Cloud Code gives you the opportunity to build more complex application with minimum of logic and no struggle. <strong>You only need to integrate a Cloud module into your SashiDo GitHub repo and you can easily use third-party services and libraries which will help you to create the dream product.</strong><br>
Those of you who haven’t used external packages will surely enjoy the power, given by them, <strong>and those of you who don’t know how to set them up with SashiDo, will see how easy and straight-forward it is.</strong></p>
<p>This tutorial will show you how to setup Twilio (  an awesome API providing video and voice calls, send &amp; receive SMS, MMS, authentication service for more secure apps ) into your Advanced Cloud Code. <strong>You can do the same with every Cloud module</strong> and the same technique will work with Android, iOS and any other platforms, supported by SashiDo. So let’s get started !</p>
<p>We’ll divide this tutorial into two parts: the first will show how to do the integration on the Cloud Code of SashiDo, and the <a href="https://blog.sashido.io/github-integration-of-advanced-cloud-code-part-2">second</a> will describe how develop locally on your pc (in case you want to do some testing before deployment).</p>
<h4 id="setupoftwilioonsashidoscloudcode">Setup of Twilio on SashiDo’s Cloud Code</h4>
<p>You already know about your private GitHub repo, provided by SashiDo with your Cloud Code (if you’ve missed this important info, <a href="https://blog.sashido.io/how-to-set-up-cloud-code-on-sashido/">read more here</a>.<br>
Here is a helpful article about how to set up Git. Clone the repository, if you haven’t done it yet.</p>
<p>Find in the main directory file package.json. <strong>In package.json you can add all npm packages</strong> you want to use in your app. According to our tutorial this will be Twilio, <strong>but the same principle will apply for other npm packages.</strong></p>
<script src="https://gist.github.com/pkeremidchieva/510799a80e26c33cdc5cb0c3ed5124e9.js"></script>
<p>P.S. Take a look at line 14.</p>
<p>We’ll create a new JavaScipt file named twilio.js and require it in the main.js file. Every Cloud Code file should be included there, otherwise it will not work.</p>
<script src="https://gist.github.com/pkeremidchieva/5e562919c1a65dea889e96d40d907504.js"></script>
<p>Let’s write a simple function in twilio.js in the cloud directory, which will send a SMS to a number by your choice.</p>
<script src="https://gist.github.com/pkeremidchieva/273a9acb043f0e28a6a95b26582313e3.js"></script>
<p>You can find 'ACCOUNT_SID' and 'AUTH_TOKEN'  in <a href="https://www.twilio.com/login">Twilio’s Dashboard</a>, here is <a href="https://www.twilio.com/docs/">Twilio’s  documentation</a> in case you need it.</p>
<p>We’re ready with the preparations, it’s time to deploy our code.</p>
<pre><code>git add .
git commit -am 'Add twillio integration'
git push
</code></pre>
<p>Keep in mind that every trigger causes a deploy in your application, so you don’t have to do anything about it.</p>
<p>Go to SashiDo’s Dashboard -&gt; Core -&gt; Cloud Code and wait until the code is finished deploying.</p>
<p>Now it’s time to test if our integration is successful: go to Core -&gt; Api Console, make a POST request with function twilio.js and press Send Query.</p>
<p><img src="https://media-blog.sashido.io/content/images/2016/10/1-1.png" alt="GitHub integration of Advanced Cloud Code part 1"></p>
<br>
<p>Let’s see the result on the phone :)</p>
<p><img src="https://media-blog.sashido.io/content/images/2016/10/img2-3.png" alt="GitHub integration of Advanced Cloud Code part 1"></p>
<br>
<p>If you followed the steps correctly, you should have received the SMS. In the <a href="https://blog.sashido.io/github-integration-of-advanced-cloud-code-part-2">second</a> of the tutorial we’ll learn how to set up npm package for local development.</p>
<p><a href="https://blog.sashido.io/github-integration-of-advanced-cloud-code-part-2" class="btn blue">GitHub integration of Advanced Cloud Code part 2</a></p>
<p>If you have any difficulties or need help - reach us at <a href="mailto:support@sashido.io">support@sashido.io</a> .</p>
<p>Happy coding :)</p>
</div>]]></content:encoded></item><item><title><![CDATA[Getting started with Background Jobs on SashiDo]]></title><description><![CDATA[Background Jobs allow you to build long running tasks on SashiDo with the Parse Server by writing code similar to Cloud Functions.]]></description><link>https://blog.sashido.io/getting-started-with-background-jobs-on-sashido-2/</link><guid isPermaLink="false">5a5dc99634405f92e87fbd54</guid><category><![CDATA[background jobs]]></category><category><![CDATA[cloud jobs]]></category><category><![CDATA[workers]]></category><category><![CDATA[Getting Started]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Peruna Keremidchieva]]></dc:creator><pubDate>Sun, 18 Sep 2016 00:08:00 GMT</pubDate><media:content url="https://media-blog.sashido.io/content/images/2016/09/background_jobs_cover.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://media-blog.sashido.io/content/images/2016/09/background_jobs_cover.png" alt="Getting started with Background Jobs on SashiDo"><p>SashiDo has been on the market for few months and during this time we had the opportunity to get to know more about our clients and what they need in order to receive fully complete experience with the service.</p>
<p>After launching Advanced Cloud Code the top asked question was “Are Background jobs in the roadmap?” So we did it - now you can run scheduled tasks on your app.</p>
<h4 id="whydoineedbackgroundjobs">Why do I need Background Jobs?</h4>
<p>Because they give you the comfort to write a function once and set it up to run as often as you want. Background Jobs allow you to build long running tasks by writing code similar to Cloud Functions.</p>
<p>Let’s say you have an app game with free and paid users accounts. The second group has access to more features and you want to make regular check if a user has an active paid account.</p>
<p>Of course it will be very hard to do this check every couple of hours and as developers we always think of a logic solution to a problem. This is a good time to use background jobs - we can write a simple function that checks twice a day all the users if they have inactive payment their plan changes to “free”.</p>
<p>You do it once, schedule it and update it anytime you want to change its functionality.</p>
<h4 id="howtousebackgroundjobsonsashido">How to use Background Jobs on SashiDo?</h4>
<p>First we’ll need some users that we want to check for payment status. Enter SashiDo’s dashboard and choose an app you want to work on. Create a new Class named User and add two Objects.</p>
<p>Add parameters “plan” and “payment”. Set payment with different values in order to check later if our function is working correctly. <img src="https://media-blog.sashido.io/content/images/2016/09/img_4.png" alt="Getting started with Background Jobs on SashiDo"></p>
<p>Go to your private GitHub repository where your Cloud Code is stored and clone it if you haven’t done it yet. Go to the cloud directory in the cloned project: <span class="pre">cd appfolder/cloud</span> And make a new javascript file in it with name checkUserStatus.js. Now let’s write the function that does the check: <script src="https://gist.github.com/pkeremidchieva/6de73f3fac7d8cd0ab60934f05dbd836.js"></script></p>
<p><em>Function checkUserStatus(); checks all instances of Class User with a loop and if the payment status of the user. If it’s inactive the plan changes to free.</em></p>
<p>Now go to your appfolder/cloud/main.js file in the same repo and include the file we’ve just created: <script src="https://gist.github.com/pkeremidchieva/59587f0cddbb812075188f37d38a8c47.js"></script></p>
<p>It’s time to commit and push the changes. They will automatically deploy to your app so you don’t have to do it additionally. Enter SashiDo’s Dashboard and open Core &gt; Cloud Code. You’ll see a button saying that the Cloud Code is building at the moment - wait until it says the process is finished.</p>
<p>Next you have to go to Scheduled Jobs (Your app &gt; Core &gt; Jobs). Here you can manage your Background Jobs, create, edit and delete.  Click the button to create a new Cloud Job and name it, then add JSON parameters (in our case it’s the new status of the user): <img src="https://media-blog.sashido.io/content/images/2016/09/img_3.png" alt="Getting started with Background Jobs on SashiDo"></p>
<p>You can choose if and how often the jobs will repeat. We’ll choose twice a day. After the setup is finished we can start the function immediately in order to see if it’s working.  We can see the result in Jobs Status - go there and refresh the page. You can also see input and result of the function in your Logs (Your app &gt; Core &gt; Logs). <img src="https://media-blog.sashido.io/content/images/2016/09/Screen-Shot-2016-09-18-at-14-43-00.png" alt="Getting started with Background Jobs on SashiDo"></p>
<p>Looks like our function is working, let’s more importantly see if it’s do the job. Go in the Browser and check class User: <img src="https://media-blog.sashido.io/content/images/2016/09/Screen-Shot-2016-09-18-at-23-05-33.png" alt="Getting started with Background Jobs on SashiDo"></p>
<p><strong>Voilà, our first Background jobs is working!</strong></p>
<p>Now you can build your own jobs according to your needs, it’s easy and fun.</p>
<h4 id="backgroundjobsusecases">Background Jobs use cases</h4>
<p>You can use Background Jobs whenever you want to run a process without user intervention like logging, user notification, monitoring etc., when you need to automate a process that needs to be running repeatedly in your app.</p>
<p>This is the basic setup of SashiDo’s Background Jobs.<br>Now you can start building Cloud functions which saves you time and efforts.</p>
<p>Happy coding!</p>
</div>]]></content:encoded></item><item><title><![CDATA[How to set up WebHooks on SashiDo]]></title><description><![CDATA[<div class="kg-card-markdown"><p>SashiDo launched Advanced Cloud Code so you can have the ability to write more complex logic, add 3rd party API libraries and packages which provide you a lot of ready-to-use functionality. That’s awesome, but what happens if you want to implement your server-side logic in a  language other than</p></div>]]></description><link>https://blog.sashido.io/how-to-set-up-webhooks-on-sashido/</link><guid isPermaLink="false">5a5dc99534405f92e87fbd52</guid><category><![CDATA[webhooks]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[Getting Started]]></category><dc:creator><![CDATA[Peruna Keremidchieva]]></dc:creator><pubDate>Sat, 17 Sep 2016 00:02:00 GMT</pubDate><media:content url="https://media-blog.sashido.io/content/images/2016/09/webhooks_cover-1.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://media-blog.sashido.io/content/images/2016/09/webhooks_cover-1.png" alt="How to set up WebHooks on SashiDo"><p>SashiDo launched Advanced Cloud Code so you can have the ability to write more complex logic, add 3rd party API libraries and packages which provide you a lot of ready-to-use functionality. That’s awesome, but what happens if you want to implement your server-side logic in a  language other than Javascript? Or if you want to use in your project a tool, not supported by Cloud Code? Then the perfect solution is to set up WebHooks on your application. They are an HTTP POST callback request sent to URL of a user's choice in response to some occurring event. They offer simple and effective server-to-server communication without long running connections.</p>
<p>WebHooks give you the freedom to use the programming language that you want and to add specialized libraries and technologies. You can write functions on your preferred language and host locally for testing before deployment.</p>
<h4 id="webhooksusecasesideas">Webhooks use cases ideas</h4>
<p>You can use WebHooks whenever you want to add technology, not supported by Cloud Code. For example - integration with Billing, e-mail templates, PayPal, Slack etc. A webhook delivers data to other applications as it happens, meaning you get data immediately.</p>
<h4 id="howtousewebhooks">How to use WebHooks?</h4>
<p>It’s quite easy on SashiDo.  Let’s imagine we have an app with active paid users and free trial. We need to know which users are paid and which not so we can stop their access to the system. We’ll do this by implementing a simple function in Python and framework Flask , but the principle is the same with other languages and technologies. If you want to  run the sample code locally, you’ll need a tunneling service like ngrok or ultrahook to map your local http endpoints to public URLs.</p>
<ul>
<li>
<p>Go to SashiDo’s Dashboard &gt; Browser and create a new class User with two instances: jane and john so we can test.<br>
<img src="https://media-blog.sashido.io/content/images/2016/09/img_1-1.png" alt="How to set up WebHooks on SashiDo"></p>
</li>
<li>
<p>Add two properties to the class: plan and payment. Set value “try” to plan.</p>
</li>
<li>
<p>Now let’s write the function: <script src="https://gist.github.com/pkeremidchieva/5d1168f2e03806310d7ed81c829baf16.js"></script> <em>Function webhook() has POST method and requests the current user to check its payment status. We also implemented a simple help function make_payment() to fake the payment logic in order to do our test.</em></p>
</li>
<li>
<p>Now go back to SashiDo’s Dashboard Core -&gt; WebHooks. Press Create a WebHook and choose a type, a Class, and add the URL of the WebHook:<br>
We have deployed for your convenience the Python code from above here so you can try with it without any coding right now: <a href="https://webhook-sashido-examples.scalabl.cloud/webhook">https://webhook-sashido-examples.scalabl.cloud/webhook</a> <img src="https://media-blog.sashido.io/content/images/2016/09/img_2-1.png" alt="How to set up WebHooks on SashiDo"></p>
</li>
<li>
<p>It’s time to test :) Go back to the Browser and fill property plan with value “try”. After refreshing we see the results: <img src="https://media-blog.sashido.io/content/images/2016/09/Screen-Shot-2016-09-18-at-22-36-48.png" alt="How to set up WebHooks on SashiDo"></p>
</li>
</ul>
<p>Looks like our function has done its jobs. Now you can use any framework or language to build awesome apps.</p>
<p>If you are fans of Python and want to play with the example on your local computer, we uploaded the source here: <a href="https://github.com/SashiDo/webhook-handler-example">https://github.com/SashiDo/webhook-handler-example</a></p>
<p>If you don’t want to clone and run the whole example, we uploaded it live for quick tests:<br>
<a href="https://webhook-sashido-examples.scalabl.cloud/webhook">https://webhook-sashido-examples.scalabl.cloud/webhook</a></p>
<h4 id="whataboutcloudfunctionsandtriggers">What about Cloud functions and triggers?</h4>
<p>Let’s take a more detailed look to what Webhooks Cloud functions and triggers offer:</p>
<p>Cloud function:  A webhook request for a Cloud function. It must contain the following parameters:</p>
<ul>
<li><strong>master:</strong> True // if the master key was used and false otherwise.</li>
<li><strong>user:</strong> If set, this will contain the Parse User who made the request, in our REST API format. This is not set if the master key is used.</li>
<li><strong>installationId:</strong> If available, the installationId which made the request.</li>
<li><strong>params:</strong> A JSON object containing the parameters passed to the function. For example: <code>{ &quot;foo&quot;: &quot;bar&quot; }</code></li>
<li><strong>functionName:</strong> The name of the Cloud function.</li>
</ul>
<p>Send a JSON object with the key error or success set to respond to this request. If the result is success: send back the expected data or simply “true”. Otherwise: return the error message.</p>
<p>For <code>beforeSave</code>, <code>afterSave</code>, <code>beforeDelete</code>, <code>afterDelete</code>  triggers , the following parameters are sent to your webhook.</p>
<ul>
<li><strong>master:</strong> True // if the master key was used and false otherwise.</li>
<li><strong>user:</strong> If set, this will contain the Parse User who made the request, in our REST API format.</li>
<li><strong>installationId:</strong> If available, the installationId which made the request.</li>
<li><strong>object:</strong> For triggers, this will contain the Parse Object, in our REST API format. For example: <code>{ &quot;className&quot;: &quot;TestObject&quot;, &quot;foo&quot;: &quot;bar&quot; }</code>.<br>
triggerName: <code>&quot;beforeSave&quot;</code></li>
</ul>
<p>Send a JSON object for <code>beforeSave</code> trigger with the keyerror or success set to respond to a <code>beforeSave</code> request - same as Cloud function. The difference is when you return an error, you will cancel the save request and the object will not be stored.</p>
<p>No response is required for <code>afterSave</code> and <code>afterDelete</code> triggers.</p>
<p>To respond to a <code>beforeDelete</code> request, send a JSON object with the key error or success set. If you return an error this will cancel the delete and the object will remain unchanged in your database.</p>
<p>If you have any issues or questions contact us at <a href="mailto:support@sashido.io">support@sashido.io</a></p>
<p>Happy coding :)</p>
</div>]]></content:encoded></item><item><title><![CDATA[SashiDo goes Realtime with Parse Server Live Queries]]></title><description><![CDATA[<div class="kg-card-markdown"><p>Before the concept of Live Queries (WebSockets behind the scenes) was created, developers used comet and long polling in order to simulate real time web. The problem was that this technologies needed almost constant communication with the server, which, as you’d imagine, it’s not very fast and resource-friendly.</p></div>]]></description><link>https://blog.sashido.io/sashido-goes-realtime-with-parse-server-live-queries/</link><guid isPermaLink="false">5a5dc99634405f92e87fbd53</guid><category><![CDATA[Getting Started]]></category><category><![CDATA[livequeries]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Peruna Keremidchieva]]></dc:creator><pubDate>Fri, 16 Sep 2016 00:01:00 GMT</pubDate><media:content url="https://media-blog.sashido.io/content/images/2016/09/livequeries_cover.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://media-blog.sashido.io/content/images/2016/09/livequeries_cover.png" alt="SashiDo goes Realtime with Parse Server Live Queries"><p>Before the concept of Live Queries (WebSockets behind the scenes) was created, developers used comet and long polling in order to simulate real time web. The problem was that this technologies needed almost constant communication with the server, which, as you’d imagine, it’s not very fast and resource-friendly.</p>
<p>Then Live Queries came and the Parse Server became realtime. Imagine an app game, which needs to update in real time non-stop. As you know, games should work very fast so every  resource is important.</p>
<h2 id="whyuselivequeries">Why use Live Queries?</h2>
<p>One of the key concepts behind Parse Server is the Query, which allows you to tell the Parse Server which object you need. If you want to use Live Queries you have to build a Query just like you normally would and instead of <code>find()</code> call <code>subscribe();</code> This means that every time an object matching this query is changed, the server will see this immediately and push the new object data to you realtime.</p>
<p>Live Queries are part of the Parse Server and now they are also included and automated  in SashiDo’s Dashboard and you can access and manipulate them easier that ever.</p>
<p>You can do so many things with them - updates, notifications, gaming, chats - everything will update in realtime!  For example:  you don’t necessarily need them for signing, user registration or other standard operation, but they are crucial if we talk about multiplayer gaming or realtime messaging and stuff.</p>
<h2 id="howtosetuplivequeriesonsashido">How to set up Live Queries on SashiDo?</h2>
<ol>
<li>
<p>Go to SashiDo’s Dashboard App settings -&gt; Live Queries</p>
</li>
<li>
<p>Choose the Class (in our case _User) you want to use Live Queries with and Save Changes</p>
</li>
</ol>
<p><img src="https://media-blog.sashido.io/content/images/2016/09/Screen-Shot-2016-09-18-at-22-49-08.png" alt="SashiDo goes Realtime with Parse Server Live Queries"></p>
<h4 id="thatsitallthesetupiseasyandeffortless">That’s it all! The setup is easy and effortless.</h4>
<h2 id="benindthescenes">Benind the scenes</h2>
<p>We know you're curious ... so here is what happens <strong>&quot;behind the scenes&quot;</strong> in case you had to do it by yourself:</p>
<script src="https://gist.github.com/mignev/c8e21c009b1d564cc0da59e0b0ae2278.js"></script>
<p>We add liveQuery for class _User and a function to listen for the updates:</p>
<script src="https://gist.github.com/mignev/7a49a692723f00e94119fb627468c0a3.js"></script>
<p>More info here:</p>
<ul>
<li><a href="https://www.nginx.com/blog/websocket-nginx/">https://www.nginx.com/blog/websocket-nginx/</a></li>
<li><a href="https://github.com/ParsePlatform/parse-server/wiki/Parse-LiveQuery">https://github.com/ParsePlatform/parse-server/wiki/Parse-LiveQuery</a></li>
</ul>
<h2 id="usinglivequeries">Using Live Queries</h2>
<p>Let's provide a LiveQuery client in our main <a href="https://github.com/ParsePlatform/Parse-SDK-JS">JavaScript SDK (v1.8)</a> and a separate client package for <a href="https://github.com/ParsePlatform/ParseLiveQuery-iOS-OSX">iOS</a>.</p>
<p>We'll use JavaScript for the example. You have to use <code>subscribe()</code> instead of calling <code>find()</code> on a regular Query.</p>
<script src="https://gist.github.com/mignev/56505ac11bddf29abf07a296eeb35c7b.js"></script>
<p>After that, if someone creates a new Player object that matches this query, with data like:</p>
<pre><code>{
  objectId: 'rj9f032j0k',
  name: 'Mengyan',
  favoriteAthlete: 'INnoVation',
  league: 'Platinum'
}
</code></pre>
<p>Then the create event on the subscription will be triggered, and it will log INnoVation to the console.</p>
<p>And here is a simple page for quick tests if you don’t feel like doing the whole tutorial:</p>
<p>And if you want to play around with the code from the example, you can find it here:</p>
<div class="btn-group">
<a href="https://livequeries-webdemo-sashido-examples.scalabl.cloud" class="btn green big" target="_blank">Live Demo</a>
<a href="https://gist.github.com/mignev/4e013e7bfd0d615d738aec01ab5aad5d" class="btn blue big" target="_blank">Code Example </a>
</div>
<p>As mentioned above, we have to use <code>subscribe()</code> to use Live Queries, but there’s also other events like <code>delete</code>, <code>update</code>, <code>enter</code>, <code>error</code>, <code>leave</code>.</p>
<p>Here are the Protocol-Specification and complete LiveQueries documentations for more detailed info so you can decide which one to use according to your use case.</p>
<div class="btn-group">
<a href="https://github.com/ParsePlatform/parse-server/wiki/Parse-LiveQuery" class="btn lightgrey" target="_blank">LiveQueries Full Documentation</a>
<a href="https://github.com/ParsePlatform/parse-server/wiki/Parse-LiveQuery-Protocol-Specification" class="btn lightgrey" target="_blank">LiveQuery protocol specification</a>
</div>
<p>We would love to see what you’ll build with this new feature, share it with us!</p>
<p>Happy coding :)</p>
</div>]]></content:encoded></item><item><title><![CDATA[Do you need a File Migration Tool?]]></title><description><![CDATA[<div class="kg-card-markdown"><p>As Parse developers ourselves we were wondering what is about to happen with our files after the service stops. How to transfer them over the new platform? Whether they will be stored somewhere by Parse, or they will disappear and we have to take precautions. No one provides a service</p></div>]]></description><link>https://blog.sashido.io/do-you-need-a-file-migration-tool/</link><guid isPermaLink="false">5a5dc99534405f92e87fbd4f</guid><category><![CDATA[migration]]></category><category><![CDATA[announcements]]></category><dc:creator><![CDATA[Peruna Keremidchieva]]></dc:creator><pubDate>Fri, 15 Jul 2016 13:02:40 GMT</pubDate><media:content url="https://media-blog.sashido.io/content/images/2016/07/cover-1.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://media-blog.sashido.io/content/images/2016/07/cover-1.png" alt="Do you need a File Migration Tool?"><p>As Parse developers ourselves we were wondering what is about to happen with our files after the service stops. How to transfer them over the new platform? Whether they will be stored somewhere by Parse, or they will disappear and we have to take precautions. No one provides a service for this.</p>
<p>The most probable scenario is that after Jan 28th, 2017 you won’t be able to access your files even if they are not completely deleted. While thinking about how to make it easier for SashiDo users to move their Parse S3 to SashiDo S3 we came up with an idea:</p>
<p><strong>“What about to open a File Migration Tool to everyone?”    : )</strong></p>
<p>And here it is - a pretty simple tool for migrating all your Parse files in a click -- <a href="https://mv.sashido.io/">https://mv.sashido.io/</a> -- SashiDo File Migration. The first file transfer tool for all Parse users. Completely free and ready to utilize.</p>
<p>It takes minutes to move all your files from Parse S3 to your own Amazon S3. No complex tutorials, no manual transfer, no need to spend hours on such a tedious job. Also, you don't need a registration. It's easy, fast and reliable.</p>
<p>You can start in few simple steps. The tiny robot will assist you. : )</p>
<p><strong>If you're a SashiDo user:</strong></p>
<ul>
<li>
<p>Go to SashiDo’s dashboard: <a href="https://dashboard.sashido.io/">https://dashboard.sashido.io/</a></p>
</li>
<li>
<p>Choose the app you want to work on.</p>
</li>
<li>
<p>Go to “App Settings” - choose “File Migration” and press “Start File Migration”.</p>
</li>
<li>
<p>You’ll see the migration process - it takes few minutes, depending on the size of your files.</p>
</li>
</ul>
<p><img src="https://media-blog.sashido.io/content/images/2016/07/t5.png" alt="Do you need a File Migration Tool?"></p>
<ul>
<li>After finishing the process you can restart your file migration with the button “Restart File Migration.”</li>
</ul>
<p><strong>If you're an Amazon user:</strong></p>
<ul>
<li>
<p>Go to <a href="https://mv.sashido.io/">https://mv.sashido.io/</a><br>
You have to provide the following information:</p>
</li>
<li>
<p>E-mail</p>
</li>
<li>
<p>Your own Mongo URI</p>
</li>
<li>
<p>Application File Key</p>
</li>
<li>
<p>And also your:</p>
<ul>
<li>AWS Access Key ID</li>
<li>AWS Secret Access Key</li>
<li>AWS Bucket Name</li>
</ul>
</li>
</ul>
<p>Don’t worry, we don’t save your information anywhere, we only use it to locate your files.<br>
After providing this info - press the button “RUN MIGRATION.”</p>
<ul>
<li>SashiDo will start to transfer your files - you’ll immediately see the running process:</li>
</ul>
<p><img src="https://media-blog.sashido.io/content/images/2016/07/t3.png" alt="Do you need a File Migration Tool?"></p>
<ul>
<li>After few minutes (depending on your files’ size), the migration will be over, how cool :) If you’re happy with the result - please share your experience so other can use it too.</li>
</ul>
<p><img src="https://media-blog.sashido.io/content/images/2016/07/t4.png" alt="Do you need a File Migration Tool?"></p>
<ul>
<li>Repeat the process, if you want to transfer files from another app.</li>
</ul>
<p><strong>WHY?</strong></p>
<p>After Parse shuts down no one knows what will happen with our Parse files. Most probable is that there won’t be an access to the storage. Make sure you have a control over your files.</p>
<p><strong>SashiDo Tool allows:</strong></p>
<ul>
<li>Automated one-click file migration</li>
<li>Migration to your own Amazon S3</li>
<li>Transfer progress tracking</li>
<li>Updating of your database with a new file URL</li>
<li>No limits - migrate everything.</li>
</ul>
<p>If you’re not a SashiDo account - <a href="http://www.sashido.io/#Get-Started">join our family today</a>.</p>
</div>]]></content:encoded></item><item><title><![CDATA[Parse Migration in a Click]]></title><description><![CDATA[<div class="kg-card-markdown"><p>We know very well what a trouble migration of your parse apps could be. There’s a lot of info on the subject, this is just a small part of the official documentation:</p>
<p><a href="https://parse.com/migration">Official Parse docs</a><br><br>
<a href="https://github.com/ParsePlatform/parse-server/wiki/Parse-Server-Guide#migrating">Parse server migration guide</a><br><br>
<a href="https://aws.amazon.com/blogs/aws/resources-for-migrating-parse-applications-to-aws/">AWS docs</a><br><br>
<a href="https://cloud.google.com/nodejs/resources/frameworks/parse-server">Google Cloud Platform</a><br><br>
<a href="https://firebase.google.com/support/guides/parse-ios">Firebase iOS</a><br><br>
<a href="https://firebase.google.com/support/guides/parse-android">Firebase Android</a><br><br>
<a href="https://devcenter.heroku.com/articles/deploying-a-parse-server-to-heroku">Heroku</a></p></div>]]></description><link>https://blog.sashido.io/parse-migration-in-a-click/</link><guid isPermaLink="false">5a5dc99534405f92e87fbd4e</guid><category><![CDATA[migration]]></category><dc:creator><![CDATA[Peruna Keremidchieva]]></dc:creator><pubDate>Fri, 08 Jul 2016 17:52:57 GMT</pubDate><media:content url="https://media-blog.sashido.io/content/images/2016/07/migrate_3-1.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://media-blog.sashido.io/content/images/2016/07/migrate_3-1.png" alt="Parse Migration in a Click"><p>We know very well what a trouble migration of your parse apps could be. There’s a lot of info on the subject, this is just a small part of the official documentation:</p>
<p><a href="https://parse.com/migration">Official Parse docs</a><br><br>
<a href="https://github.com/ParsePlatform/parse-server/wiki/Parse-Server-Guide#migrating">Parse server migration guide</a><br><br>
<a href="https://aws.amazon.com/blogs/aws/resources-for-migrating-parse-applications-to-aws/">AWS docs</a><br><br>
<a href="https://cloud.google.com/nodejs/resources/frameworks/parse-server">Google Cloud Platform</a><br><br>
<a href="https://firebase.google.com/support/guides/parse-ios">Firebase iOS</a><br><br>
<a href="https://firebase.google.com/support/guides/parse-android">Firebase Android</a><br><br>
<a href="https://devcenter.heroku.com/articles/deploying-a-parse-server-to-heroku">Heroku docs</a><br><br>
<a href="https://www.digitalocean.com/community/tutorials/how-to-migrate-a-parse-app-to-parse-server-on-ubuntu-14-04">Digital Ocean docs</a><br></p>
<p>You can also find a ton of tutorials by users, trying to help each other, but don’t worry - there’s fast and easy solution: our <strong>“migration in a click”</strong>.</p>
<p>SashiDo’s team understands the difficulties that you experience and developed the only one available fully automated migration.  It takes minutes, your app is safely migrated, completely for free.</p>
<p>Here are the steps:</p>
<p>Go to SashiDo’s dashboard <a href="https://dashboard.sashido.io">dashboard.sashido.io</a> and sign up/activate your account:</p>
<p><img src="https://media-blog.sashido.io/content/images/2016/07/login.png" alt="Parse Migration in a Click"><br>
<br></p>
<p>When you’re inside the service - choose the button “Migrate from Parse.com”</p>
<p><img src="https://media-blog.sashido.io/content/images/2016/07/migrate_1.png" alt="Parse Migration in a Click"><br>
<br></p>
<p>The service will ask you to provide your username and password from Parse.com. Don’t worry, we only use this info in order to find your apps, we don’t save it anywhere -  safety first ;)<br>
<img src="https://media-blog.sashido.io/content/images/2016/07/migrate_2.png" alt="Parse Migration in a Click"></p>
<p>In a few seconds a dropdown menu will appear with all your apps, associated with Parse.com - choose the one you want to migrate and press the button “Migrate”.</p>
<p>Now the real awesomeness takes place :) SashiDo migrates the whole app, database, Cloud Code, push notification, audiences, settings etc. - it only takes few minutes.<br>
<img src="https://media-blog.sashido.io/content/images/2016/07/migrate_3.png" alt="Parse Migration in a Click"></p>
<p>When the process is ready, a button “Continue” will show up. Press it.</p>
<p>We’re almost done! Your app will continue to work on Parse.com.  Parse’s database is synchronized with SashiDo’s database for the next 24 hours after the start of the migration. Now you can install the latest version of the Parse SDK for Parse JavaScript, iOS, Android SDK etc., update your custom API URL (as the example below), test if your whole database has migrated successfully, set up certificates for push notification, check your Cloud Code  and see if everything is working correctly.</p>
<p><img src="https://media-blog.sashido.io/content/images/2016/07/migrate_4.png" alt="Parse Migration in a Click"><br>
<br></p>
<p>If you like it and want to continue using your app on SashiDo - finalize your migration on Parse.com during these 24 hours, which means  your app will be using the new MongoDB instance.  You have to go to your Parse.com application dashboard -&gt; Core -&gt; Migration -&gt; and click the button “Finalize”. Don’t worry if it’s not active in the very beginning: sometimes it takes a little bit of time. Be careful not to click stop ;)</p>
<p><img src="https://media-blog.sashido.io/content/images/2016/07/finalize.png" alt="Parse Migration in a Click"><br>
<br></p>
<h3 id="whatwillhappenafterfinalizing">What will happen after finalizing?</h3>
<p>After finalizing the migration your application will continue to work on Parse.com, but with SashiDo’s database. Your app’s old database may will stay on Parse.com until January 2017 and after this any calls to the hosted Parse backend service (api.parse.com) will cease to function. In order to avoid this, you should make a new build of the app with your app’s new security keys and URLs. You can find them on Your app -&gt; App Settings -&gt; Security and Keys (in SashiDo's Dashboard). Then just release the new version on App Store or Google Play.</p>
<p><strong>Yeap, it’s THAT EASY!</strong></p>
<p>If you experience any kind of problems during migration - contact us at <a href="mailto:support@sashido.io">support@sashido.io</a>.</p>
<p>We’re always ready to help :)</p>
</div>]]></content:encoded></item><item><title><![CDATA[How to set up Cloud Code  on SashiDo]]></title><description><![CDATA[<div class="kg-card-markdown"><p>Cloud Code is one of the coolest features of Parse, <strong>but we take it even to the next level ;)</strong> You loved it and we love to make you happy so we decided to make the easiest possible way to set up your Cloud Code!</p>
<p>After you migrate your app from</p></div>]]></description><link>https://blog.sashido.io/how-to-set-up-cloud-code-on-sashido/</link><guid isPermaLink="false">5a5dc99434405f92e87fbd4d</guid><category><![CDATA[Getting Started]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[Cloud Code]]></category><dc:creator><![CDATA[Peruna Keremidchieva]]></dc:creator><pubDate>Fri, 08 Jul 2016 17:52:26 GMT</pubDate><media:content url="https://media-blog.sashido.io/content/images/2016/07/private_repo-2.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://media-blog.sashido.io/content/images/2016/07/private_repo-2.png" alt="How to set up Cloud Code  on SashiDo"><p>Cloud Code is one of the coolest features of Parse, <strong>but we take it even to the next level ;)</strong> You loved it and we love to make you happy so we decided to make the easiest possible way to set up your Cloud Code!</p>
<p>After you migrate your app from Parse.com (if you haven’t done this yet, click here: <a href="https://blog.sashido.io/parse-migration-in-a-click/">Parse Migration in a Click</a> ) you have to set up your Cloud Code in order to use it.</p>
<p>First select the app you want to work on:<br>
<img src="https://media-blog.sashido.io/content/images/2016/07/1.png" alt="How to set up Cloud Code  on SashiDo"></p>
<p>Go to Core -&gt; Cloud Code -&gt; press “Connect your account to GitHub”</p>
<p><img src="https://media-blog.sashido.io/content/images/2016/07/2.png" alt="How to set up Cloud Code  on SashiDo"></p>
<p>After a few seconds the service will ask for your username and pass for GitHub (if you’re not logged in yet). A window will show up with option to connect your GitHub account to SashiDo.<br>
Afterwards press the  button “Start your Cloud Code ”:</p>
<p><img src="https://media-blog.sashido.io/content/images/2016/07/3.png" alt="How to set up Cloud Code  on SashiDo"></p>
<p>We’ll automatically create a private GitHub repo for you, how cool is that :)</p>
<p><img src="https://media-blog.sashido.io/content/images/2016/07/private_repo-3.png" alt="How to set up Cloud Code  on SashiDo"><br>
<strong>Yes, we’re the only one who give a private GitHub repo for each app :)</strong></p>
<p>As developers we use GitHub all the time - to collaborate, to manage and deploy our code. We think it’s one of the most convenient tools and <strong>we’ve decided to integrate our platform with GitHub to ease your job.</strong></p>
<p>Soon you’ll see your Cloud Code in the dashboard.</p>
<p>Now you have fast and easy access to this awesome feature!</p>
<p><strong>IMPORTANT!</strong> Note that you should have a folder “cloud” with a file “main.js” inside  in order to have working functionality and to see your Cloud Code in the dashboard.</p>
<p><em>You can find more useful info about your new repo’s possibilities in the file “README.md”.</em></p>
<p>If you experience any kind of troubles during setup - contact us at <a href="mailto:support@sashido.io">support@sashido.io</a>. We’re always ready to help :)</p>
</div>]]></content:encoded></item></channel></rss>