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
- Use https://dictionaryapi.dev/ as the external API, and develop data model accordingly
- 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
- Separate process should subscribe to the
- 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 therequest
endpoint.
- if Rest endpoint is used to serve the
- Rest or websocket endpoint which serves the UI responds based on the
- Request
- 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
, andlchen-2101
(how to invite collaborators)