Skip to content

RascalTwo/quotes

Repository files navigation

OpenAPI Valid Website

Return when things were said in your favorite media!

Defined as an OpenAPI, for easy documentation via Swagger UI and usage with various tools.

Link to project: https://r2-quotes.herokuapp.com

search for "Sometimes I'll" showing one quote from Friends and two from The Office

Examples

https://r2-quotes.herokuapp.com/api/search?query=Sometimes%20I'll&title=The%20Office&season=5&episodes=11&page=1&includeCounts=true&perPage=100

{
  "quotes": [{
    "timeStamp": 694.11,
    "text": "Sometimes I'll start a sentence and I don't even know where it's going.",
    "media": {
      "title": "The Office",
      "season": 5,
      "episode": "11"
    }
  }],
  "counts": {
    "total": 1,
    "page": 1
  }
}

How It's Made

Tech used: HTML, CSS, JavaScript, TypeScript, Express, Node.js, OpenAPI, EJS, Mocha, C8, MongoDB, Playwright

Powered by captions of your favorite TV Shows & Movies, uploaded into the database in an easily searchable manner, exposed both as a basic EJS frontend allowing for the searching of media quotes by query, title, and media fields.

Exposed as an OpenAPI via express-openapi with a Swagger UI via swagger-ui-express, allowing for easy usage and experimentation.

With a near 100% test coverage provided by mocha, c8, and frontend coverage via playwright.

Deployment

Combining GitHub Actions with my tests and Heroku, the API is guaranteed to always be stable and working at all times.

Optimizations

The API can additionally be exposed via GraphQL to be accessible to more developers, in addition there are a few MongoDB aggregation pipelines that can be rewritten more efficiently, but with the amount of current data the performance improvement would be negligible.