Inside Airbnb

The project "Inside Airbnb" is an insideAirbnb clone, that shows all Airbnb locations in Amsterdam. It shows you when locations are rented and what type of listings are the most popular.

Idea

School decided an Inside Airbnb clone was a good concept because students would have to deal with large amount of data. They need to process all the data, add migrations and finally present the data in a fast way to the client.

Requirements

  • ASP.Net Core 5
  • ASP.NET Razor pages
  • MSSQL Server
  • IDaaS with IdentityServer4
  • Caching with Redis
  • Needs to be secured for the OWASP top 5
  • Needs to be high performant with metrics to prove.

Challenges

The setup of IdentityServer4 is complicated. Luckily there are some templates that someone can use. Those templates are not complete and modification is needed. It took a while to figure out which modifications were necessary.

Redis cache can make things speed up significantly. But there is a size limit for Redis. During the development I decided to prebuild all my GeoJSON responses and cache these in Redis. But these files were too big and I had to modify the output.

Both the security and performance requirements were a hard thing to do because I had no previous encounter with these topics. The OWASP top 5 was easily covered in the end, most of the topics are about data sanitization. Because I used Entity Framework most of this was already covered. As for performance, I ran K6 for load testing to see if changes made a difference. After some debugging and profiling I managed to significantly improve First Contentful Paint (-1sec) and Largest Contentful Paint(-15sec).

Repository

Technologies

  • C#
  • ASP.NET Core 5
  • MSSQL
  • JavaScript
  • IdentityServer 4
  • Bootstrap
  • Entity Framework
  • Redis
  • GeoJson
  • ChartJS
  • Mapbox