A challenge for architects that want to join our team. In order to be considered for an architect position, you must complete the following architect challenge.
-
Fork the architect-challenge repository.
-
Clone your fork:
git clone https://github.com/<your-name>/architect-challenge.git
-
Complete the architect challenge described below (please see Architect Task, Deliverables, Guidelines, and On Complete sections). Be sure to
git commit
your work as you go (see Guidelines) -
git push
your design and code to your forked repository on GitHub. -
Send us a pull request. We will review your design and code and get back to you.
Use the sample datasets provided in the input directory to design an information model for a Lit Building List. The information model should be designed using a UML class diagram and only needs to care for the the entities and their attributes and relationships collectively represented in the sample datasets.
Document any imporant thoughts or notes from your analysis and information model design in design/design.md. Your documentation should include:
- A list of entities you have identified from the sample datasets.
- A view of the UML class diagram you've created.
- Anything else you think is important for understanding your information model design.
Your documentation should be clean, clear, and should look really nice. You may want to read up on GitHub Flavored Markdown to accomplish this.
NOTE: You may use any modeling tool you want for creating the UML class diagram. If you would like, you can use one of our floating licenses for Visual Paradigm. Here's how to get started:
- Download and install Visual Paradign 12.0
- Select Perpetual License, then select Floating License.
- Enter Host: opsframework.services.cablelabs.com
- Enter Port: 1999
- Enter Access code: 1234
Create a data model using JSON Schema that is based on your information model design. You are writing code here, so use whatever editor or IDE you feel most comfortable in. The data model you create could be in a single .json
file, multiple .json
files that reference each other, or fully included in the Swagger file you will be creating next.
You may include additional data model notes in design/design.md, but it is not required.
Design a RESTful API using Swagger that will allow basic CRUD
operations to be performed on the Lit Build List you have designed.
Your API design should be contained in a single Swagger file. The file should be called swagger-file.json
and should be included in the api-docs directory. You may either reference the JSON Schema(s) you previously designed or include them directly in the Swagger file.
Again, use whatever editor or IDE you feel most comfortable in.
The Swagger file you deliver should be fully compliant with Swagger Version 2.0.
-
The project that has your complete solution.
-
Design notes and any additional documentation for your analysis and design in design/design.md
-
Information model design as a UML class diagram in the design directory (png or pdf file).
-
API design as a single Swagger file in the api-docs directory. Your Swagger file should either included or reference your data model design in JSON Schema.
Mock a single GET
operation on a single endpoint for the API you have designed. You may use any language(s) of your choice.
Please deliver your solution to a new src
directory and provide detailed instructions on how to run and tryout your program in a README.md
file within the new src
direcotry.
NOTE: completing this bonus is not a requirement, but it will get you serious cred with the developers on our team.
-
Your solution should be self explanatory.
-
Everything you deliver should be clean, clear, and should look really ncie.
-
Make frequent commits to Git (local repo).
-
While the solution you provide matters, how you arrive at it (commits, design style, coding style, etc.) is also very important.
-
git commit
andgit push
your design and code to your forked repository on GitHub. -
Send us a pull request. We will review your design and code and get back to you.
Happy architecting!
PS - If you're having trouble with Git, please reference the Pro Git book.