Cosmic JS Blog Stay tuned for community news, company announcements and updates from the Cosmic JS team.

How to Build a Cross-Platform Blog Using React Native and Node.js


We live in a world of inter-connected devices, each powered by their own software, built with their own circuits and protected by their own casing.  The best way to deliver information to these seemingly closed-off systems is with an API.  Cosmic JS is an API-first cloud-based content platform that makes it not only easy to add dynamic content to any existing or new website, but makes it possible to seamlessly deliver content across devices and platforms.

In this article I’m going to show you how to quickly and easily create a cross-platform blog that will connect your content across Web, iOS and Android.  With content powered by Cosmic JS, you will be able to edit your content once and deliver the updates simultaneously across all devices and platforms.  Let’s get started.

TL;DR

Check out the demo.


Website


To get started, download the Cross-Platform Blog on GitHub which is based on the Node.js Website Boilerplate.  This comes with everything you need to get started with a basic website as well as the codebase for the native applications running React Native for iOS and Android.

git clone https://github.com/cosmicjs/cross-platform-blog
cd cross-platform-blog/web
npm install
npm run development

The root of our application runs at app-server.js.  Looking at this file, you'll see how routes are set up and how views are rendered to the routes.

Now that we have our website running, let’s open up another terminal window and get our iOS and Android apps built.

React Native Bridges the Gap

React Native is a very powerful way to build applications for both iOS and Android.  Because most, if not all, of the codebase can be shared between the two platforms, by using React Native you can build your apps in half the time.  If you haven’t gotten your local environment setup for React Native development, go to the React Native website and follow the steps.  Honestly I found setting up the iOS development environment to be super easy, but setting up the Android, not so much.  Mainly because I had to search more to figure it all out.  In short, you need to download Android Studio and make sure you have the correct version of the Java SDK installed and make sure you have all of the developer tools installed.

iOS

To install and run the iOS React Native application run the following commands:

cd cross-platform-blog/ios
npm install
react-native run-ios


Android

Run the following commands to run the Android application (make sure you have your Android device emulator open):

cd cross-platform-blog/android
npm install
react-native android

Looking at index.ios.js and index.android.js you will notice that the root of our application for both iOS and Android runs at App.js.   And all other components LandingPage.js, BlogList.js and BlogPost.js are shared between the two platforms as well.

When we run our react-native commands, our React Native code base is translated to both Objective-C and Java languages.  It is not a “hybrid app” or web-based at all.  It basically just translates your JavaScript (React) building blocks together into the native language of each platform.

Connect to the CMS API

If you don't have an account yet, sign up for Cosmic JS to set up your bucket.  Your bucket is the place to add and edit content for your cross-platform blog.  To upload the demo content from the Cross-Platform Blog on GitHub, go to Your Bucket > Import / Export.  Then upload the bucket.json file located in the root folder of the Cross-Platform Blog repository.  This will upload all of the demo data and files from the Cross-Platform Blog demo application.   To configure your local application to point to your bucket, simply edit your config files in both web and native folders to point to "your-bucket-slug".

// config.js
export default {
  COSMIC_BUCKET: 'your-bucket-slug'
}

Now when you edit content in your Cosmic JS bucket, you will see that the content automatically updates across Web, iOS and Android applications.  By connecting your applications to Cosmic JS, you are using a powerful tool that breaks down the barriers between devices and programming languages.

I hope you found this tutorial helpful.  If you have any questions about how Cosmic JS can help your team build websites and applications faster and easier, reach out to us on Twitter and join our community on Slack.

You may also like


Cosmic JS debutes its Enterprise Plans for Content Management and Application Development. 

In this installment of the Cosmic JS Developer Spotlight Series, we sat down with Owen Liversidge, a Web Developer residing in Atlanta, Georgia who's currently helping lead the development charge at renowned game development company Tripwire Interactive. Owen just built Tripwire's new corporate website on a React and Cosmic stack. Follow Owen on LinkedIn or GitHub, and enjoy the Q/A.

When building websites connected to a CMS, it is important that the content is structured as simply as possible for the end user to edit.  I call this user-first content development.   It benefits everyone – the content editor, the developer and the agency when the developer makes sure the content editor is empowered with the easiest and most intuitive way to manage content.  This seems obvious, but this oversight happens all too often and results in confusion and ultimately a bad experience which is bad for everyone  the developer, the content editor and the agency.

Extendible Objects is one of the most powerful features of Cosmic JS.  And this powerful feature just became more intuitive with a new property added to all endpoint responses: Metadata.

The process of building your messenger bot is fairly simple the hardest part is setting up your machine to talk to talk to Facebook. That's why today I'm going to walk you through that real quick. Once it is all done you can get right on the way to creating your own bot.

You can now use Cosmic JS to deploy your GitHub private repos to the web.  All you have to do is sign up or sign in using your GitHub account and authorize access to your private repos. (Don't worry, we only access your private repos when you are ready to deploy them to the web).


After you authorize access the process is super easy.  Just go to Your Bucket > Settings > Deploy Web App and choose which private (or public) GitHub repo you would like to deploy. You can also deploy an app from any public Git repo url (make sure your app follows the Heroku deployment guidelines).


Click Deploy Web App and your private repo will be deployed to the world!