Back to Senior Level

Dictionary through Kafka


Prerequisite

  • Use Java Spring Boot
  • Use React incorporating Material UI
  • Have backend persistence layer (SQL, or NoSQL)
  • Use Kafka for data processing
  • Dockerize the app so the system can be started with simply issuing the docker-compose up command

Requirements

  • API and data model
  • UI
    • Should incorporate state management (i.e. Redux)
    • Have a search field
    • Incorporate a responsive card styled layout to list out words searched for
      • Should be blank when user first visits the page, or reloads the page
    • Have a dialog showing more details about the word
      • Should be triggered either through the search field, or card click on previously searched words
      • Retrieve details from UI state management if it exists
      • Asynchronously retrieve these details following the details in the Backend section if UI state management doesn’t contain the information
      • Minimum details should include list of definitions, and example sentences
      • Should incorporate audio button for pronunciations
  • Backend
    • Request
      • UI will make request with a word to search
      • Searched word should go into a request Kafka topic
    • Processing
      • Separate process should subscribe to the request topic, checking if data exists in persistence layer; make use of the https://dictionaryapi.dev/ API if it doesn’t, and persist the data
      • Once data is retrieved, publish to a response Kafka topic
    • Response
      • Rest or websocket endpoint which serves the UI responds based on the response Kafka topic
        • if Rest endpoint is used to serve the response, it should be different from the request endpoint.
  • Note
    • Assume this will be a single user / browser app, so any session and offset management, if necessary, should be as simplistic as possible
    • A gist template has been provided here as an example for docker-compose.yaml: https://gist.github.com/omnipresent07/9773f3a17fe9f22aed50721c4b596a93
      • You may use this as a starting point, and modify based on your needs.
      • Simple Kafka setup has been provided; along with an AKHQ service for easier Kafka data visualization, and can be accessed through http://localhost:8080
    • Spirit of the challenge is to demonstrate an asynchronous process (front-end and back-end)

Deliverable

  • A commit history showing work process
  • A detailed README with instructions on how to run everything locally
  • A GitHub repo with read permissions given to GitHub users rafty8s,bsneider, omnipresent07, barakstout, and lchen-2101 (how to invite collaborators)