A Gentle Introduction To Setting Up A React and MongoDB Stitch App From Scratch In 10 Minutes

Joe Karlsson
5 min readDec 28, 2018

Are you interested in learning how to use the MongoDB Stitch serverless platform? Like many of you, I have been interested in learning more about MongoDB’s cloud offerings while simultaneously not spending a dime. This guide is for the developer who only has 10 minutes to spare and who wants to learn a brand new tool from MongoDB.

If this is your reaction, then this is the tutorial for you!

Okay, first of all, what is MongoDB Stitch? Well…

MongoDB Stitch is a cross-platform application on top of MongoDB. Stitch removes the need for tedious boilerplate when setting up a new app and automatically manages your app’s backend so you can focus on building what matters.

Stitch sounds awesome, right?

Now that we have got that out of the way, let’s see if we can set up a new app in record time. For this tutorial, we will be setting up a todo app.

Note: This tutorial does not touch all of the features of Stitch, it is intended to be a quickest possible way to explore the platform.

You can find the source code for this tutorial here: https://github.com/JoeKarlsson/mongodb-stitch-todo-tutorial

For additional information on setting up an Atlas account, check out the MongoDB Atlas Creating an Atlas User Account guide.

  • You will also need to set up a MongoDB cluster hosted on Atlas.

You can create an M0 Atlas cluster for free. No credit card is required to get started.
To get up and running with a free M0 cluster, follow the MongoDB Atlas Getting Started guide.

  • Once you have initialized your new Atlas account and set up your free Atlas cluster, you will have to create a new Stitch Application.
  • First of all, make sure you are logged into MongoDb Atlas.
  • Click Stitch Apps in the left-hand navigation of the MongoDB Atlas console.
  • Click Create New Application.
  • Give the application a name (e.g. TodoTutorial) and click Create.
  • Wait for your application to initialize. Upon creation of your app, you will be redirected to the Stitch UI.
  • Once, your app has been initialized, you will need to turn on Anonymous Authentication.

Note: MongoDB and Atlas come secure by default, this is why we need to do this step.

MFW I authenticate to our todo app.
  • From the Getting Started page of the Stitch UI, enable Anonymous Authentication under the Turn On Authentication heading.
Turn on Anonymous Authentication
  • Next, we will need to configure rules for the todo collection before Stitch will allow users to query it. To configure the collection:
  1. Click Rules under MongoDB Atlas in the left-hand navigation of the Stitch UI.
  1. Click Add Collection.
  2. Enter todos for the Database Name. Enter item for the Collection Name and Select No Template. Then click Add Collection.
  • You should now see the Permissions tab of the rules for the item collection. The default role doesn’t allow any user to read or write to the collection.
  • To enable reading and writing to the comments collection:
  1. Click the Read and Write check boxes for the default role.
  2. Click Save.
  • Okay! Now that we are done with setting up Atlas, we can get to the really fun part, building our app! In your terminal run:
$ npx create-react-app mongodb-stitch-tutorial
$ cd mongodb-stitch-tutorial
$ npm install mongodb-stitch-browser-sdk
$ npm start
  • In src/App.js replace the App component with this code snippet and save. Be sure to replace the YOUR_APP_ID with your client app id.
import React, { Component } from "react";
import {
Stitch,
AnonymousCredential,
RemoteMongoClient
} from "mongodb-stitch-browser-sdk";
import "./App.css";
class App extends Component {
constructor() {
super();
this.state = {
todos: [],
value: ""
};
this.handleChange = this.handleChange.bind(this);
this.displayTodos = this.displayTodos.bind(this);
this.addTodo = this.addTodo.bind(this);
}

componentDidMount() {
// Initialize the App Client
this.client = Stitch.initializeDefaultAppClient("YOUR_APP_ID");
// Get a MongoDB Service Client
// This is used for logging in and communicating with Stitch
const mongodb = this.client.getServiceClient(
RemoteMongoClient.factory,
"mongodb-atlas"
);
// Get a reference to the todo database
this.db = mongodb.db("todos");
this.displayTodosOnLoad();
}

displayTodos() {
// query the remote DB and update the component state
this.db
.collection("item")
.find({}, { limit: 1000 })
.asArray()
.then(todos => {
this.setState({todos});
});
}
displayTodosOnLoad() {
// Anonymously log in and display comments on load
this.client.auth
.loginWithCredential(new AnonymousCredential())
.then(this.displayTodos)
.catch(console.error);
}
addTodo(event) {
event.preventDefault();
const { value } = this.state;
// insert the todo into the remote Stitch DB
// then re-query the DB and display the new todos
this.db
.collection("item")
.insertOne({
owner_id: this.client.auth.user.id,
item: value
})
.then(this.displayTodos)
.catch(console.error);
}
handleChange(event) {
this.setState({ value: event.target.value });
}
render() {
return (
<div className="App">
<h3>This is a todo app</h3>
<hr />
<p>Add a Todo Item:</p>
<form onSubmit={this.addTodo}>
<label>
<input
type="text"
value={this.state.value}
onChange={this.handleChange}
/>
</label>
<input type="submit" value="Submit" />
</form>
<ul>
{/* Map over the todos from our remote DB */}
{this.state.todos.map(todo => {
return <li>{todo.item}</li>;
})}
</ul>
</div>
);
}
}
export default App;

And that’s it!

By the end, your app should look and work like this.

By the end, your todo app should look like this

If you have any questions or comments, feel free to reach out or open an issue in the repo.

You can find the source code for this tutorial here: https://github.com/JoeKarlsson/mongodb-stitch-todo-tutorial

My name is Joe Karlsson, and I am a Software Engineer from the frozen tundra known as Minneapolis, Minnesota. I write code, build teams and give talks. You can follow me on:

--

--