Go to file
2024-10-09 18:40:11 -06:00
frontend Working project 2024-10-09 18:40:11 -06:00
new_backend Working project 2024-10-09 18:40:11 -06:00
.envrc Working project 2024-10-09 18:40:11 -06:00
.gitignore Working project 2024-10-09 18:40:11 -06:00
flake.lock Working project 2024-10-09 18:40:11 -06:00
flake.nix Working project 2024-10-09 18:40:11 -06:00
README.md Working project 2024-10-09 18:40:11 -06:00

URL Shortener Take-Home Exercise (Fullstack)

Instructions

Your task is to create a URL shortener web application (similar to bitly or TinyURL). This exercise is intentionally open-ended, and you are welcome to implement your solution using the language and tech stack of your choice. If you are familiar with React & Next.js, please use those for your submission. The core functionality of the application should be expressed through your own original code.

You should aim to spend no more than 2 hours on this project. If you don't complete everything in 2 hours, please submit what you have - we value your time and want to see your prioritization skills.

Application Description

At the root path (e.g., http://localhost:8080/), a user should be presented with a form that allows them to input a URL. When a user submits that form, it should convert the input URL to a shortened version and present that to the user.

The shortened URL should be in the format: http://localhost:8080/{slug}, where {slug} is a unique identifier for the original URL.

When a user navigates to the shortened URL, they should be redirected to the original URL that was used to generate this shortened URL.

Minimum Requirements

  • Format and method of generating slugs for shortened URLs are up to you
  • Shortened URLs do not need to persist across server shutdown/startup (i.e., setting up a DB isn't necessary - server memory should suffice)
  • Only allow valid http(s) URLs

If you have additional time, consider spending it on testing or UI improvements as opposed to supplemental features.

Evaluation Criteria

We will be evaluating your submission based on the following:

  1. Functionality: Does the application work as described?
  2. Code quality: Is the code clean, well-organized, and following best practices?
  3. Error handling: How does the application handle invalid inputs or errors?
  4. Technical choices: Are the chosen technologies appropriate for the task?
  5. Documentation: Is the code well-commented and the README clear?

Deliverables

Please fill out the sections below in the README.md of your project and submit according to the instructions you received with this project. Your code can be sent as a zip file or a link to a repository containing your project.


Implementation Details

How to Run

Testing

Tools Used


Good luck, and we look forward to reviewing your submission!