top of page

Summer 2022 Entry Level Developer Candidate Project A

Edited 11/28/22

 

As part of the candidate evaluation process, you will complete a simple project in React that will be used to evaluate your skills.

 

Project Overview

The Lucit Application delivers advertising images in real-time to digital billboards. Each time one of the images is displayed on a digital billboard screen, that system delivers a “pingback” to our system notifying us that the image was displayed.

You may login to the Lucit App to get an idea of what some of these images look like. You have been given access to “Demo” accounts within Lucit that you are free to play around with.

Your project is to build an application that simply shows the last image that was played on a digital billboard, when and where it played. This application will be an internal application that we will run on screens / TV’s inside of our office so we can see, in real-time, the most recent image that we ran.

 

Evaluation Criteria

Your work will be evaluated based on

 

  • How well you followed the project requirements / instructions

  • What you did differently than other candidates

  • The quality of your code, your commits and the organization of your components, files, etc.

  • What you innovated / added / created beyond what was listed in the project requirements

 

Pre-Requisites

In order to build this project you will need

 

  • The Lucit App – You will receive an Invite to the App – Which can you can install from the App Store or Play Store (see here for help https://lucit.cc/help/#1631108430399-48f23e04-21ef OR, you can login to the application at https://layoutui.lucit.cc

  • An API Token – You must REQUEST an API Token, by submitting a HELP Request from within the Lucit App – Click on “Help” in the toolbar and then type the following into the Help Request box : “API Token Request for Entry Level Developer Project : {Your Name}

  • A github account. You will push your project to your github account for us to review

 

Project Requirements

A successful project will

 

  • Be able to run on any windows / mac / linux machine in the browser

  • Must be able to launch from the cli (e.g. using something like npm start )

  • Look great on a variety of screen sizes (from a 60″ TV down to a small 13″ Screen)

  • Take into account a large range of billboard image sizes (some are 160px wide, some are 1800px wide, some are long rectangles, some are short and square)

  • Shows a new image every XXX seconds

  • Always shows (or attempts to show) a different image from a different campaign than the previous one that was displayed

  • Show the location and operator of the digital billboard that the image appeared on

 

Delivery

Your project should be

 

  • Pushed to a new repo in your personal github account.

  • Please call this repo lucit-dev-project-a-{your-first-name-and-last-initial}

  • Notify Lucit by sending an email to support@lucit.cc with the exact subject line Entry Level Developer Project A : Submission

 

Definitions

image-1.png
Pingback
A pingback object is created every time an image is displayed on a digital billboard. Typically a pingback will tell us where, when, and for how long an image appeared on the digital billboard
Inventory Export
In our terminology an Inventory Export is equivilent to a Campaign.
Digital Board
A digital billboard – a large digital screen normally mounted on a large pole or other structure that has a physical location
Agency
Most commonly a Billboard Operator, this is the company that owns the physical billboard that the images running on
Inventory Photo
This object represents the actual creative image

API Endpoint

 

We have created a specific endpoint in our api that can be used to fetch the most recent image and associated details

endpoint: GET http://layout.lucit.cc/api/v1/analytics/pingbacks/get-last

returns: JSON array with an element called pingbacks which contains a single pingback representing the last image that ran

parameters:

Parameter
Type
Description
Example
api_token
required string
An api token will be provided to you and will be required to make the call to the api
?api_token={yourtoken}
exclude_export_ids
optional array
Each image is assigned to an “export” which is a group of images that will run on any given set of bilboards. Use this option to exclude 1 or more export_id’s from being selected
?exclude_export_ids=[67,98,105]
exclude_photo_ids
optional array
Each image has a “photo_id” that uniquely identifies it. Use this option to exclude 1 or more photo_ids from being selected
?exclude_photo_ids=[1098,8768,9894]

Objects

A description of some objects and fields

NOTE: Not all fields are described and not all fields will need to be used within your project

pingback

Represents the event of when and where this image played.

id
Unique Id of the pingback
photo_id
The unique id of the image that played
play_datetime
UTC datetime of when the image played on the billboard
play_duration
How long the image was on the screen
inventory_export_id
The export to which this image belongs
object_id
Always the same as photo_id
object_class
Always InventoryPhoto
board_id
Unique ID of the Digital Billboard
impressions
Sometimes zero, sometimes a number. This is an estimate of the number of People that saw this image
impressions_calc_method
If 0 – no impressions. If 1 we have it calculated based on an avg daily total

digital_board

This is the screen on which this advertisement was displayed. Typically these are large screens mounted atop a pole at a location

id
Unique Id of the digital board
agency_id
Id of the operator that owns the board
board_identifier
An id that is used by the board owner to identify their board.
name
A name of the board – sometimes its location or address
location_id
Id of the location object where this board is physically located at
width
Width in pixels of this board
height
Height in pixels of this board

location

Location objects are physical locations used to identify where a board is.

id
Unique id for this location
name
A name for this location
address
Address of this location
city
City
state
State
postal_code
Zip Code
Country
Country
latitude
Latitude
longitude
Longitude

agency

 

The “agency” represents the owner of the digital billboard. Called an Operator or a Billboard Operator

id
Unique id
name
Name of the Billboard Operator
options.primary_image_public_url
The logo or icon for the billboard operator

inventory_photo

 

The inventory_photo object represents the image that was displayed

id
Unique photo_id for this image
inventory_item_id
Images (1 or more) can be attached to a single inventory item which represents this specific creative in multiple sizes or styles
options.public_url
The url to this image
options.dimension_width
Width in pixels of this image
options.dimension_height
Height in pixels of this image
public_url
Same as options.public_url

inventory_export

 

The “export” can be thought of like an “Advertising Campaign” This campaign contains multiple “inventory_photo” objects and is attached to multiple “digital_board” objects

id
Unique id
name
Name of the campaign
options.primary_image_public_url
If this exists, it is an icon for the campaign
bottom of page