02 min reading inDevOpsHackathon

Tim's Stack: Dynamic Cross-platform Web App Stack, deployed with Bunnyshell

This article showcases a high-performing web app stack I created for a recent Bunnyshell hackathon, using Docker, Kubernetes, Microk8s, Django and Next.js.

UPDATE: We made 2. Place! 🥳 Checkout the hackathon page.

Checkout the full stack code on my repo

Introduction

I recently participated in the Bunnyshell hackathon, where I successfully orchestrated a dynamic cross-platform web app stack. I want to share with you in detail my development process, core features, and the benefits of this stack.

This stack is primarily designed for dynamic, real-time web apps, with a specific inclination towards mobile clients. One of the prominent features is that any changes made in the backend can be directly and instantly transmitted to the clients via a WebSocket connection, thanks to Redux for smooth state management.

Architecture

I used a Docker container-based architecture using Helm for my application. Docker simplifies the process of managing my application's lifecycle, while Helm assists in deploying my Docker images into a Kubernetes cluster.

Here is an image representation of my stack's architecture:

stack overview

Building the Stack

The stack incorporates:

  • Django Backend: Django is utilised for the backend due to its simplicity and rapid development capabilities. Features like Celery for task management and DRF Spectacular for API documentation are added advantages.

  • Next.js + React Frontend: Next.js powers the frontend, providing performance benefits, SEO capabilities, and better developer experience.

  • Postgresql & Redis: They act as primary databases for data and celery respectively.

  • Documentation: Pdoc3 was used to generate code documentation from backend code.

Configuring the Stack on Bunnyshell

Bunnyshell significantly simplifies cloud management and deployment automation making it a breeze to set up a Kubernetes cluster and to deploy my application there.

In addition to this, I also exemplify setting up a private Microk8s cluster. Microk8s serves as a lightweight, lean, and efficient Kubernetes distribution, enabling quick and easy deployment of Kubernetes resources even on a low-end VPS.

I hope you find this stack setup helpful and efficient for your next big project. The GitHub repository contains all the code with appropriate comments and READMEs for further exploration.

Happy Coding!

Technologies

The following table provides a quick overview of the key technologies integrated into the stack:

ComponentTechnologyPurpose
FrontendNext.js + ReactRich UI
Tailwind CSS + DaisyUIStyling
ReduxState Management
CapacitorNative integrations and iOS/Android PWA export
BackendDjangoApplication Framework
CeleryTask Management
Django REST Framework + django_rest_dataclassesREST API Development
DRF SpectacularAPI Documentation
Django ChannelsManaging WebSockets
DocumentationPdoc3Code Documentation
DatabasePostgreSQLPrimary Backend Database
RedisBroker for Celery and Django Channels
ContainerizationDockerContainer Creation and Management
Deployment and OrchestrationHelm + BunnyshellSimplified deployment, Scaling and Management

Each of these technologies has been selected for its specific capabilities that contribute to the efficient operation of the entire web application stack.


Keep Reading