---
# System prepended metadata

title: DUX Architecture Challenge

---

# DUX Architecture Challenge

Hello, candidate.

This challenge requires you to use a tool like https://excalidraw.com/ to draw and define some diagrams to explain how would you design a system.

## Objectives
Design an application that allows people to visualize votes on polls. The developer should create a high-level block diagram of the entire system, including the main components and their interactions. 

![](https://i.imgur.com/HJqTTPd.png)

## Definitions
A poll is an entity that has title, description, other metadata and different options to be voted on.
A poll vote is a entity that tells what option has been choosen on a poll by a user. 
A poll vote aggregate is the result at the current time in a certain poll.

## Application structure
The application has the following URL structure

- homepage
  - List of latest 3 polls and their current results with links to the poll detail
- poll detail
  - Information about the poll and votes casted on that poll. Possibly hundreds of votes on a poll



## System architecture
Create a high-level block diagram of the entire system, including the main components and their interactions.

Define the data sources and how the data will be fetched. Determine if the developer will develop APIs or do everything on the client side.

## Code structure

Identify the main modules or packages that will be needed to organize the code.

Provide a brief explanation of how the codebase will be organized, including the design patterns used and the way the different components interact with each other.

Explain any additional details that you think will be important for the overall system design.

## QA and delivery
Define a visual representation of a simple CI/CD pipeline that could sustain this project.

Explain how the system will be tested and how it scales.

## Bonus
Identify and explain how the system can be made more resilient and fault-tolerant.

Identify and explain any security concerns and how they will be addressed.

Add one more page to your app: 
- Voter detail
  - Description of the voter and list of votes from that user. possibly hundreds of voters

- polls
  - List of polls. Possibly hundreds of them