Skip to content

Building Taco: The idea

Building taco: The Idea

How to transform your idea into a real platform

"What really turned me over was the ability to understand how everything works without any prior knowledge."
John Doe
Designer

the idea

When the Covid-19 crisis started, I felt that I had to do something. I didn’t have enough money to do contribute in anything relevant. I didn’t have the muscle to do something fast enough to help in the first weeks. So I decided to use this time to review one of my first ideas, an app to promote local businesses and find the perfect client. I will go deeper in details, but for now, let says that this is my objective, help the community in a medium/long term.

But, it’s quite probable that I won’t make it by myself. In my experience I know that I will need at list 300 hours of hard work to have a reasonable prototype. So I will use this chance to:

  • Get out my confort zone and code and change PHP and Ionic for Python and React. If I don’t finish the app at least I will improve my skills (maybe for a future job…)
  • Explain how I’m working on it so I can write a guide of how to create a platform based on a business idea

So I will write a blog explaining everything, from choosing the technology to writing the business plan. I will try my best to represent the struggles but also the motivation while working on the project

Where will I start?

The first thing to do when you are writing something long, is creating an index, so let’s write down what I’m going to do to create this app This will be my first task list, and will help me to put order in my mind in order.

  • A low definition sketch. Grab a paper and a pencil a draw some screen. It doesn’t matter if you don’t know how to do it, just start drawing. Include some arrows showing the flow when a button is pressed and the screen changes. Something like this is enough
  •  Have a look at potential competitors. This case is different, as my target is to help as many people as possible. But, I will research and find similar idea because maybe, in a future, we can find a common ground and share resources. You can check my analysis here.
  • Define the functionality: Just create a list of what do you want your app to do. The previous competitors study will give you some ideas. Try to be as detailed as possible, including Login, Signup, Email sending, push notifications and anything that pops to your mind. In TACO, I did it like this.
  •  Identify the task that’s you will need to address to build all the functionalities. This is tricky if you don’t have experience building apps, but you can have an idea of how can you d it here.
  •  Create a work plan and define the project milestones. I like to do it separating the different disciplines (Backend, frontend, UX, DevOps), so this is the perfect moment to define the stack, infrastructure and third parties integration. You can check the idea here.
  • Assign a team for each part of the plan and get a relation of the actors and dedication that you will need based on the previous step. Assign the resulting task to people (existing or not) and get an estimation of workload
  • Cost estimation
  • Business plan
  • Delay strategy
  • Build de MNP
  • Do it again (and show the evolution)
  • Build the MVP
 

The technical part

But also I need to go a step further and start thinking about technical needs like:

  • RESTFull API
  • Token based authentication, JWT is a nice option
  • Social Login (Basically Google, FB and maybe tweeter), I need people to get full access fast.
  • Images management (uploading and cropping)
  • Gelocation, I need to show the distance to petitions and places
  • Transactional and massive emailing
  • Push notifications

The technOLOGY

And of course, I have to decide what technology I’m going to use. My recent background is stronger in PHP and Ionic 3, but my concern is to find the maximum number of collaborators as possible, so I decide the following:

  • Backend: I can use PHP/Symfony as I have been doing for the last years. But, I think that I can find more help if I use something more popular, like Java or Python. This last one,  is 5 times more popular than PHP (30% of market against 6%) and I really want to try it. So, Python it is!
  • Framework: After some minutes of researching in sites like this one or this one,  I don’t have a clear view of using Django or Flask. I’m not the best developer and Django seems to have a larger community, that’s something important to me as I tent to be stuck and I need to find help fast. Both seems to be the right decision, but I try first with Django and I like it. So, I keep it.
  • Web development: well, I didn’t mention before that one of the reason tho choose Django is how insanely fast is to use forms, templates and anything you need to create your website. I give a try to Angular because I herd that is the best solution to build a PWA, but man, Django is so easy that I change my mind quickly. I decide to use Django for the web development rather than going for any other javascript framework.
  • Database: I’m updating this point after 4 weeks of work. Initialy I started using MySQL because is like a Ford Fiesta. It has been here forever, it’s easy to use and it works fine. But, when I tried to include Geodjango I found problems with measuring distances. Since I’m using ORM it should be so hard to change the whole schema an move to PostgreSQL. And it wasn’t. Besides it seems to work better with bigger sizes and is the perfect combination for Django + Geolocation. So PSQL it is!
  • App Development: I don’t think using native languages is the right choice if I want to have something fast. And I’m a little sick of Cordova (nothing wrong with that, but… I don’t feel it). Xamarin sounds like a mage on a cave, so my choice is clear, React Native. It is popular, reliable and the community is huge as well.
  • Infrastructure: to be honest, this is not my strongest field of expertise, so I will buy the chipset VPS for the moment and think about this with a little more help. Of course I’m thinking in cloud services (AWS, Google Cloud or Azure)
  • Transactional and massive emailing: I’ve always used Sendgrid, but I’m open to any other like Sendingblue or Mailgun. I will think about it when the moment arrives, but Sendgrid is OK.
  • Push notifications: I will rely once more in Firebase. It works like a charm and is not even close to be expensive.
  • CI/CD: if I have to be honest, I just know Jenkins and Bamboo, so this point is open and I’m happy to listen to any advice.
  • Repository: nothing fancy, I will use GitHub and make the repository public.

The RESOURCES

And of course, I have to decide what technology I’m going to use. My recent background is stronger in PHP and Ionic 3, but my concern is to find the maximum number of collaborators as possible, so I decide the following:

The PrOJECT: DJANGO

Learn how to download the Django/Python project and get it ready in your local machine.

Image Source: WOCinTechChat, Icon Finder

en_GBEnglish