Inside Airbnb

Het project "Inside Airbnb" is een insideAirbnb kloon, die alle Airbnb-locaties in Amsterdam laat zien. Het laat zien wanneer locaties worden verhuurd en welk type advertenties het populairst zijn.

Idee

De school besloot dat een Inside Airbnb-kloon een goed concept was, omdat studenten te maken zouden krijgen met grote hoeveelheden data. We moeten alle gegevens verwerken, migraties toevoegen en uiteindelijk de gegevens snel aan de klant kunnen presenteren.

Vereisten

  • ASP.Net Core 5
  • ASP.NET Razor pages
  • MSSQL Server
  • IDaaS met IdentityServer4
  • Caching met Redis
  • Moet worden beveiligd voor de OWASP top 5
  • Moet goed presteren met onderbouwde statistieken.

Uitdagingen

De installatie van IdentityServer4 was ingewikkeld. Gelukkig waren er enkele sjablonen gebruikt konden worden. Die sjablonen zijn echter niet compleet en er zijn aanpassingen nodig om deze werkend te krijgen. Het duurde even om erachter te komen welke aanpassingen nodig waren.

Een Redis-cache kan requests aanzienlijk versnellen. Maar er is een maximale grootte in Redis waarbij de snelheid behouden blijft. Tijdens de ontwikkeling had ik besloten om al mijn GeoJSON responses te bouwen en deze in Redis te cachen. Maar deze bestanden waren te groot en ik moest de responses aanpassen.

Zowel de beveiligings- als de prestatie-eisen waren een uitdaging, omdat deze onderwerpen niet eerder aanbod waren gekomen. De OWASP-top 5 werd uiteindelijk gemakkelijk afgedekt, de meeste onderwerpen gingen over data sanitization. Omdat ik Entity Framework heb gebruikt, was het meeste hiervan al gedekt. Wat de prestaties betreft, heb ik K6 gebruikt voor het testen van de belasting om te zien of wijzigingen een verschil maakten. Na wat debuggen en profilen ben ik erin geslaagd om First Contentful Paint (-1sec) en Largest Contentful Paint (-15sec) aanzienlijk te verbeteren.

Repository

Technologieën

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