Welcome to the Niche.com full-stack coding exercise! This exercise is designed to assess your skills in building a full-stack application with Go, TypeScript, and React. You'll be implementing a college review search and autocomplete system using real college review data from Niche.com.
For this exercise, you'll need to:
- Implement the back-end functionality for loading reviews, autocompleting college names, and retrieving reviews for a specific college.
- Create a React front-end that implements an autocomplete feature and displays college reviews.
- Feel free to ask questions about the exercise, if you need clarity on approach, requirements, or anything else. Asking meaningful questions can only reflect well on you.
- Please submit your solution within 7 days.
- Feel free to use AI tooling if you believe it will be useful. Be prepared to discuss your approach to using this tooling, and document your approach as described in the Submission section.
Your submission should include the following:
- A branch containing your changes
- A new file in that branch that documents your approach to solving this problem.
- Call out key decisions you made, and why
- If you used AI tooling of any sort, please include your approach to working with those tools, as well as specific prompts you used, in this documentation.
To submit your solution, create a pull request against the main
branch in this repository and email your recruiter.
The back-end is a Go service with some incomplete functionality. Your task is to:
- Implement the
loadReviews
function inreviews.go
- Process the review data from the provided CSV file.
- Implement
ReviewsData
as an in-memory data structure to support the following operations:- Retrieve reviews for a given college
- Support autocomplete for college names
- You do not need to persist this data - it's fine to read it from the CSV each time the service starts.
- Implement
handleGetReviews
inserver.go
- The endpoint should accept a college url (as specified in the source data).
- The endpoint should return reviews for the specified entity.
- Implement
handleAutocomplete
inserver.go
- The endpoint should accept a query parameter and return matching college names.
- Return any matching colleges including their Name and url.
Using React and TypeScript, implement:
-
An autocomplete component for searching college names
- The component should display matching college names as the user types
- The component should support keyboard navigation (arrow keys, enter for selection)
- Visual styling with CSS
-
A review display component
- When a college is selected from autocomplete, fetch and display its reviews
- Format the reviews in a clean, readable way
- Visual styling with CSS
back-end/main.go
- Entry point for the Go serviceback-end/server.go
- HTTP server implementation with endpointsback-end/reviews.go
- Reviews data processingback-end/data/niche_reviews.csv
- A CSV file containing college reviews data
front-end/
- Contains the React application
- Navigate to the
back-end
directory - Run
go mod tidy
to install dependencies - Run
go run .
to start the server - The server will be available at
http://localhost:8080
- Navigate to the
front-end
directory - Run
npm install
to install dependencies - Run
npm run dev
to start the development server - The application will be available at
http://localhost:3000
Your submission will be evaluated based on:
- Functionality - Does it correctly implement all the required features?
- Code Quality - Is the code well-structured, readable, and maintainable?
- Performance - Does the service start quickly? Are page interactions fast?
- UI/UX - Is the interface intuitive and responsive?
- Technical Decisions - Can you justify your technical choices?
-
Please document your approach in a
SOLUTION.md
file, explaining:- Your implementation strategy
- Any trade-offs or assumptions you made
- How you used AI tools (if applicable)
- Any challenges you encountered
- How your solution could be improved with more time
-
Include instructions for running your solution
-
If you use AI tools like ChatGPT, GitHub Copilot, Claude Code or other similar tools, please document:
- Which parts of your solution used AI assistance
- The specific prompts you used
- How you verified and modified the AI-generated code
- Where you found the AI tools most and least helpful and why
We encourage you to ask questions about any requirements that may be unclear. Feel free to make reasonable assumptions where necessary, but please document these assumptions in your submission.
We expect this exercise to take approximately 2-3 hours to complete. Don't worry if you don't finish everything - focus on demonstrating your best work within a reasonable timeframe.
Good luck!