How we developed the Cinebur App: Part I

The journey of delivering a Flutter app to production

Cinebur
Lumen: Blog by Cinebur
6 min readDec 16, 2020

--

This story was originally published on Lumen: Cinebur’s official blog.

Well, where do I start? It’s been a long year and probably not the best one to launch a startup by any conventional standards. But hey, here we are as Cinebur turns half a year old, and along the way, we’re learning from both an engineering and product management point of view. In this series, I aim to marry these two perspectives, and give you a front row seat into Cinebur… behind-the-scenes.

By the way, I forgot to introduce myself: I’m Adrian Coutsoftides and I’m one of the co-founders of Cinebur. In fact I’m the CTO. A rather grand title to be handed to a recent grad, but I’m doing the best I can! So far, I’ve been keeping a low profile when it comes to our public events as I’ve been busy buried away cranking out all our infrastructure. Come to think of it, it’s probably about time I get to talking about just that: here’s the engineer’s story of how we took an idea and made it into an app that we launched to a live audience.

Architecture

Cinebur is really just a CRUD app with a few twists. That means the majority of the operations are Create, Read, Update and Delete actions on database objects. For the moment, our database is hosted on Google Cloud Firestore as leveraging that gave us the fastest route to market at the time. Actually, when we first launched the application I remember essentially staying up for three days as I grinded my way through our coding base taking what was then a pre-alpha build of the application all the way to production! (Man, that was rough.) But I digress; in addition to our hosted database, we also host additional micro-service components on Google Cloud Kubernetes Engine (from here on referred to as k8s). Our backend is written entirely in Golang with the exception of our upcoming updated streaming service which will be written in Rust to leverage the performance benefits of using a system language. And that’s about it when it comes to the basics; other than that, we also use a standard Redis cache for some ephemeral links to streaming content which I’ll get into later.

Design & User Experience

Looking back, that’s quite a mouthful! But as with the journey of a thousand miles, it begins with a single step. I’ve had the pleasure of building a few flutter apps before either professionally or for hackathons; so, by now I have a basic structure that I start out with. That being said, one of the lessons I carried on from my previous experience was to never underestimate the value that a full user experience and user interface (UX/UI) designer — or simply put, a Product Designer — can bring to the table; particularly in terms of customer experience, which is a core tenet of Cinebur culture. Every conversation we have internally revolves around the idea of making the best product we wished we had, and it is the driving force behind every decision we make. At the onset, I was unmoving in my desire to pay for a designer to help us design our interface before I wrote any code.

Under normal circumstances, before contacting a designer, you would typically undertake extensive user research by leveraging principals from Design Thinking:

  • Empathize
  • Define
  • Ideate
  • Prototype
  • Test

For context, I graduated with a degree in Computer Science. As such, we are taught to solve problems via analysis, rather than synthesis. We like to break down problems into smaller subproblems to uncover coherent systems with structures and rules we can use to generalize for new scenarios. On the other hand, design is a problem solving discipline in its own right. Nonetheless, designers (and indeed to some extent all professionals engaged in the architecture of a qualitative experience) are taught to solve problems via synthesis. Synthesis is a problem solving approach that directly tries to identify solutions through rapid prototyping instead of reduction analysis. In particular, design thinking is extremely human centric; you see that Empathize stage? This is a critical component to solving any problem in a way that is financially viable, technologically feasible and aesthetically pleasing. Without understanding the user, their environment, motivations and internal desires, you have no product.

As a side note, I acknowledge that empathy can actually be very hard to engage with or define in the early stages when creating a new product. To supplement this, I would highly recommend the Jobs to Be Done framework introduced by Bob Moesta of Harvard Business school (who is also a Stanford and MIT alumni).

Idea Creation

Although we have systems set up internally for these practices (me scribbling diagrams and pouring over user-behavior data in low lighting conditions at 12:00AM with a coffee and 3 cigarettes down the hatch), when we first started out, we were flying blind, because you don’t know what you don’t know! Cinebur was actually born out of my co-founder’s vision when we were still sparkly-eyed 1st-year students studying Computer Science — that’s Doddi El-gabry, Cinebur’s CEO. He had set up a projector in his little university dorm room and would host these film nights for his flatmates at the time, occasionally inviting other campus residents to come along. As a good host always does, he would provide the food and drinks for the night while his guests meandered through their conversations until the movie began, and then magic would strike: the room quiets down and the film starts rolling, frame by frame, capturing the audience. The sweet scent of doritos and cheap wine fade into the the recesses of the sensory experience only to allow the spotlight to fall solely on the glowing light of the projector. The odd shuffle here and there, but otherwise the audience would be utterly enamored by the silver screen. At the end of the night, the festivities would wrap up, and the students would discuss the film as they finished their wine. Pretty far call from the usual parties that would be hosted around campus; the people who came not only loved the film but loved the whole experience. The quaint preamble, the screening and the fade to black as the last drop of wine is poured out.

CEO Doddi El-gabry in his university dorm setting up the first Cinebur

Over the years, he refined the formula and presented it in his final year dissertation; so we already had something to work with when we approached the designer. After the initial round of designs, I got to work on developing the mobile interface. It’s funny, that all this preparation goes into developing a product, when in truth, the idea came from a couple of college students who wanted to make something good for the world. They don’t teach you any of this stuff in business school or your tech degrees — you assume the idea is already there — but really, that’s the whole point behind all of this. That’s our goal: work on an idea that just might change the world.

Stay tuned for Part II, where I go in-depth on some critical tips for app development, especially with some insights into the Flutter framework.

Peace,

Adrian Coutsoftides

--

--