This repository is designed to be a take-home assessment of software development candidates for TRISTAR. The assessment is designed to test your ability to understand line-of-business architecture and development practices. This solution is a simplified example of the kind of architecture that you are likely to find while working at TRISTAR.
This solution consists of a web server project that runs a very basic http API and a client project that contains a class that is designed to communicate with the http API. It also contains a core project that contains common code that is shared between the client and server projects, along with a test project where integration tests are contained.
The http API has basic endpoints for manipulating Person
resources. With the API, you can create, read, update, and delete Person
objects. To view the API capabilities and details, you can run the server project and visit http://localhost:3000/api. Note that this link will not work unless you are running the server project!
The following is a quick overview of each project:
- TRISTAR.Assessment.Core: All files shared between client and server are found here. For example, all repository interfaces are defined here.
- TRISTAR.Assessment.Client: Client-side files are found in this project. For example, the client-side implementation of IPersonRepository lives here.
- TRISTAR.Assessment.Server: This project contains the code for the http api. You can run this project and view the api at http://localhost:3000/api.
- TRISTAR.Assessment.Tests: Integration tests are found in this project.
- Make a new git branch named
development
frommaster
. Your changes will reside in this branch. - Implement the methods in PersonClientRepository.
- Ensure all integration tests in PersonIntegrationTests pass. You are not allowed to modify the tests.
- Commit your changes to the
development
branch. - Merge your changes from the
development
branch into themaster
branch. - Put the repository into a zip file and send it back to your TRISTAR point of contact.
You are encouraged to add files or NuGet packages to the project as you see fit, especially if you think it will result in better code. This is your chance to show your skills, but keep in mind that there is elegance in simplicity!