pandurd / smartbooking

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Running in local

Run via Docker command, Self hosted in Visual studio 2022

To start via Docker, run follwing command in root folder

docker build . --tag smartbooking
docker run --env ASPNETCORE_ENVIRONMENT=docker --env ACESSTOKEN={ReplaceTokenHere}  -d -p 5050:80 smartbooking:latest 

App URL : http://localhost:5050

  • Please reload once after main page loads

Swagger Docker URL : http://localhost:5050/swagger/index.html

High Level Design

name-of-you-image

Scalable Design proposed

  1. Reduce api cost if it incurs
  2. Have centralized caching, if Movies list and Movie price from same provider is same for a particualr time (does not change in realtime)

Caching is currently done via inbuilt memory cache

name-of-you-image

Screenshots

Main Page

name-of-you-image

Movie Page

name-of-you-image

Dev

  • Used polly to retry, should be configurable to reduce client wait time
  • Used in Memory cache to cache
  • Used hooks to cover functionalities needed in react. It would be still great to use redux.
  • Authentication/Authorizations not covered
  • if need another provider, only configuration need to be changed (MovieProvider, URL configs)
  • Tests are not covered
  • Not all devices are not testsed. For now optimised for Desktop site with 100%. Need some more changes for mobile/ipad
  • Left nav deafault to main page
  • Used Grommet (https://v2.grommet.io/) for all react components fore repsonsive components, have not used scss/css as it was not required for most

Other Assumptions

  • Only showing the result for cheapest is needed, but button is not imeplemented
  • Price remains till user click buy and purchase
  • Also show other avaialble prices with provider for same movie (For comparisons)
  • Paginations is not required - would be great to have infinite scroll
  • All service provider give similar API response with minimal change - using same model all api repsonses. should be configurebale

About


Languages

Language:C# 63.1%Language:JavaScript 25.9%Language:HTML 6.3%Language:Dockerfile 3.9%Language:CSS 0.8%Language:Shell 0.0%