logo

Lorenzo Ye

Fakintosh HD

projects

cv.pdf

about.md

skills.md

contacts.txt

close
min
max

Calcisticamente Parlando

Calcisticamente Parlando


Short description

A football app that allowed to listen to the "Calcisticamente Parlando Podcast", watch live Serie A scores, Football player ranking and read the "Calcisticamente Parlando Blog"


Technologies

React Native, Expo, Javascript, Puppeteer for web scraping, AWS


The story

In the middle of the COVID pandemic (2020/21), I graduated with my Bachelor's degree in computer science.
One of my best friends, who is super passionate about football, told me that he had started a podcast and wanted a sort of "companion app" for it. I thought, "I just built an app (Anime Song Quiz), it could be fun building another one, " so that 's what I did.
This time, it was absolutely crucial to have the app on both the Google Play Store and Apple App Store right at the beginning, so I chose to build it using React Native. At the time, it wasn't that popular yet, but the benefits were clear, and unlike Flutter, it felt like home to someone familiar with React.
We prototyped the app, built it, and launched it in, I think, two weeks. The obvious challenges were, of course, how to use the technologies, but here are some not-so-obvious ones:

1. How to play the podcast: My friend recorded and published his podcast with Spreaker, a sort of podcast agency (?), which then distributed the podcast on all the major platforms (Spotify, Apple Podcasts, etc.). Ok, Spreaker has an API, so it's very simple, just call it, get my friend's podcast, and play it on the app, right? Yes, but actually, no. First of all, React Native wasn't that developed at the time; handling audio playing wasn't that straightforward. I started developing using Expo, but I needed some native libraries, so I ended up ejecting the project. Then, Spreaker gives you the audio stream, sometimes with ads at the beginning, and for some reason we didn't want the ads. So I had to figure out how to cut the ads, if any, once I got the audio stream.

2. How to get match scores in real-time: This was by far the biggest challenge. All the APIs I could find were behind a paywall. So what I did was create a cron job on AWS that used Puppeteer to scrape Serie A's official website every one minute and save the result on DynamoDB. This approach was actually a mess because it wasn't actually real-time, and every time Serie A changed its interface, the cron job broke. But it was the best option we had. Look, we were two broke recent graduates.

The app wasn't successful, obviously, because, honestly no one wanted it. It was completely useless. You could already listen to the podcast on every major platform, and you could watch match scores live on literally every football app and on Serie A's official website. There was no point for the app to exist. It was fun, though, and in the end, I'm proud of what I built. I learned new technologies and built something with literally zero dollars that worked (maybe not perfectly) by thinking outside the box.