Developing a Real-Time Taxi App with Django Channels and React

Learn how to develop and test a real-time ride-sharing app with Django Channels, React, and Cypress!

In this course, you will learn how to create a ride-sharing application that incorporates an React front-end with a Django back-end in a Docker container. The focus of this course is the real-time communication between client and server. We'll be using Django Channels and Redis to send and receive JSON messages over an open WebSockets connection.

Another important aspect of these chapters is Test-Driven Development (TDD). Each step of the way, we'll demonstrate how to test both the UI and the APIs.

What will you build?

Django app: We'll configure user authentication and authorization with core Django, coordinate two-way messaging with Django Channels and Redis, and construct a RESTful API with Django REST Framework.

React app: We'll build an infrastructure of React components and control the flow with routing; communicate with the backend using WebSockets, React services, and reactive programming; and leverage third-party apps like Google Maps to bolster the user experience.



  • Current version: 1.0.0
  • Last updated: December 19th, 2019
  • AuthorJason Parent

What will you learn?

Part 1

In Part 1, you'll learn how to program the server code of the ride-sharing application. We'll start by developing a custom user authentication model and data profile. Then we'll create a data model to track the trips that the riders and drivers participate in along with the APIs that provide access to that data. Lastly, we'll leverage the asynchronous nature of Django Channels to send and receive messages via WebSockets. Throughout this part, we'll be testing every function to make sure that the code we write operates the way we expect it to.

Tools and Technologies: (Asynchronous) Python, Django, Django REST Framework, Django Channels, Redis, PostgreSQL, JSON Web Tokens (JWTs)

Part 2

In Part 2, you'll take the first steps in setting up the user interface for the app. We'll start by creating a React front-end application. Using JSX, we'll write components and services to complement the authentication APIs that allow users to sign up, log in, and log out. Again, we'll make sure to test our application along the way, this time using the Cypress end-to-end testing framework. Before we end this part, we'll learn how to run both the front-end and back-end in a single Docker container.

Tools and Technologies: React, Cypress, Docker, React Hooks

Part 3

In Part 3, you'll finish coding the front-end and you'll stitch the UI together with the server APIs. Continuing where we left off in Part 2, we'll expand our UI to build two dashboards -- one for the rider and one for the driver. Here, we'll also create the JSX code necessary for establishing a WebSockets connection with the server and subscribing to it. Along with manual testing, we'll test the real-time nature of the app through automated tests. We'll also incorporate Google Maps so that users can visualize their current locations and the addresses they input.

Tools and Technologies: (Asynchronous) Python, Django, Django Channels, React, Cypress, WebSockets, Google Maps, Geolocation, React Hooks

Table of Contents

Table of contents from Developing a Real-Time Taxi App with Django Channels and React:

Part 1
Part 2
  • Introduction
  • React Setup
  • React Routing
  • Cypress Testing
  • React Bootstrap
  • React Forms
  • HTTP Requests
  • Docker
  • Conclusion
Part 3
  • Cypress Tasks
  • The User
  • Loading Trips
  • Testing Loading Trips
  • Loading Trip Details
  • Ride Requests
  • Updating Trips
  • Pop-Up Alerts
  • Google Maps
  • Conclusion

Join our mailing list to be notified about course updates and new tutorials.