Skip to content

Commit 06f0e2d

Browse files
author
doug schlenker
authored
Updates to the README.md
Improved our `README.md` making the evaluation section more detailed with regards to what we will be looking for.
1 parent 1cba093 commit 06f0e2d

File tree

1 file changed

+59
-28
lines changed

1 file changed

+59
-28
lines changed

README.md

Lines changed: 59 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
# Busbud Coding Challenge [![Build Status](https://circleci.com/gh/busbud/coding-challenge-backend-c/tree/master.png?circle-token=6e396821f666083bc7af117113bdf3a67523b2fd)](https://circleci.com/gh/busbud/coding-challenge-backend-c)
1+
# Busbud Coding Challenge
22

33
## Requirements
44

5-
Design an API endpoint that provides auto-complete suggestions for large cities.
5+
Design an API endpoint that provides autocomplete suggestions for large cities.
66
The suggestions should be restricted to cities in the USA and Canada with a population above 5000 people.
77

88
- the endpoint is exposed at `/suggestions`
9-
- the partial (or complete) search term is passed as a querystring parameter `q`
10-
- the caller's location can optionally be supplied via querystring parameters `latitude` and `longitude` to help improve relative scores
9+
- the partial (or complete) search term is passed as a query string parameter `q`
10+
- the caller's location can optionally be supplied via query string parameters `latitude` and `longitude` to help improve relative scores
1111
- the endpoint returns a JSON response with an array of scored suggested matches
1212
- the suggestions are sorted by descending score
1313
- each suggestion has a score between 0 and 1 (inclusive) indicating confidence in the suggestion (1 is most confident)
@@ -19,7 +19,7 @@ The suggestions should be restricted to cities in the USA and Canada with a popu
1919

2020
#### Sample responses
2121

22-
These responses are meant to provide guidance. The exact values can vary based on the data source and scoring algorithm
22+
These responses are meant to provide guidance. The exact values can vary based on the data source and scoring algorithm.
2323

2424
**Near match**
2525

@@ -69,61 +69,92 @@ These responses are meant to provide guidance. The exact values can vary based o
6969

7070
### Non-functional
7171

72-
- All code should be written in Javascript
73-
- Mitigations to handle high levels of traffic should be implemented
72+
- All code should be written in Javascript.
73+
- Mitigations to handle high levels of traffic should be implemented.
7474
- Challenge is submitted as pull request against this repo ([fork it](https://help.github.com/articles/fork-a-repo/) and [create a pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/)).
75-
- Documentation and maintainability is a plus
75+
- Documentation and maintainability is a plus.
7676

77-
### References
77+
## Dataset
7878

79-
- Geonames provides city lists Canada and the USA http://download.geonames.org/export/dump/readme.txt
80-
- http://www.nodejs.org/
81-
- http://ejohn.org/blog/node-js-stream-playground/
79+
You can find the necessary dataset along with its description and documentation in the [`data`](data/) directory.
8280

81+
## Evaluation
82+
83+
We will use the following criteria to evaluate your solution:
84+
85+
- Capacity to follow instructions
86+
- Developer Experience (how easy it is to run your solution locally, how clear your documentation is, etc)
87+
- Solution correctness
88+
- Performance
89+
- Tests (quality and coverage)
90+
- Code style and cleanliness
91+
- Attention to detail
92+
- Ability to make sensible assumptions
93+
94+
It is ok to ask us questions!
95+
96+
We know that the time for this project is limited and it is hard to create a "perfect" solution, so we will consider that along with your experience when evaluating the submission.
97+
98+
If you choose to add other services to your challenge, we ask that you use the existing Docker Compose setup, which can be found in the `docker-compose.yml` file.
8399

84100
## Getting Started
85101

86-
Begin by forking this repo and cloning your fork. GitHub has apps for [Mac](http://mac.github.com/) and
87-
[Windows](http://windows.github.com/) that make this easier.
102+
### Prerequisites
88103

89-
### Setting up a Nodejs environment
104+
You are going to need:
90105

91-
Get started by installing [nodejs](http://www.nodejs.org).
106+
- `Git`
107+
- `nvm` (or your preferred node version manager)
108+
- `Node.js`
109+
- `Docker` (optional)
110+
- `Docker Compose` (optional)
92111

93-
For OS X users, use [Homebrew](http://brew.sh) and `brew install nvm`
112+
### Setting up your environment
94113

95-
Once that's done, from the project directory, run
114+
1. Begin by forking this repo and cloning your fork. GitHub has apps for [Mac](http://mac.github.com/) and
115+
[Windows](http://windows.github.com/) that make this easier.
96116

97-
```
98-
nvm use
99-
```
117+
2. Install [nvm](https://github.com/nvm-sh/nvm#install--update-script) or your preferred node version manager.
118+
119+
3. Install [Node.js](http://www.nodejs.org).
120+
121+
4. Install [Docker](https://docs.docker.com/install/).
122+
123+
5. Install [Docker Compose](https://docs.docker.com/compose/install/).
100124

101125
### Setting up the project
102126

103-
In the project directory run
127+
In the project directory run:
104128

105129
```
130+
nvm use
106131
npm install
107132
```
108133

109134
### Running the tests
110135

111-
The test suite can be run with
136+
The test suite can be run with:
112137

113138
```
114-
npm test
139+
npm run test
115140
```
116141

117142
### Starting the application
118143

119-
To start a local server run
144+
To start a local server run:
145+
146+
```
147+
npm run start
148+
```
149+
150+
#### or using Docker Compose:
120151

121152
```
122-
PORT=3456 npm start
153+
npm run start:docker
123154
```
124155

125-
which should produce output similar to
156+
either should produce an output similar to:
126157

127158
```
128-
Server running at http://127.0.0.1:3456/suggestions
159+
Server running at http://127.0.0.1:2345/suggestions
129160
```

0 commit comments

Comments
 (0)