Using TypeScript and React, your challenge is to build out a URL shortening web app, integrate with the cleanURI API, and get it looking as close to the design as possible.
URL shortening is a technique on the Web in which a Uniform Resource Locator (URL) may be made substantially shorter and still direct to the required page. This is achieved by using a redirect that links to the web page that has a long URL. For example, the URL "https://example.com/assets/category_B/subcategory_C/Foo/" can be shortened to "https://cleanuri.com/WAsdZXC".
Your challenge is to build out this landing page, integrate with the cleanURI API and get it looking as close to the design as possible.
Your users should be able to:
- View the optimal layout for the site depending on their device's screen size
- Shorten any valid URL
- See a list of their shortened links, even after refreshing the browser
- Copy the shortened link to their clipboard in a single click
- Receive an error message when the
form
is submitted if:- The
input
field is empty
- The
Your task is to build out the project to the designs inside the /design
folder. You will find both a mobile and a desktop version of the design to work to along with active states.
You will find all the required assets in the /images
folder. The assets are already optimized. The designs are in JPG static format. This will mean that you'll need to use your best judgment for styles such as font-size
, padding
, and margin
.
There is also a style-guide.md
file containing the information you'll need, such as color palette and fonts.
- TypeScript best practices
- Show us your work through your commit history
- We're looking for you to produce working code, with enough room to demonstrate how to structure components in a small program
- Completeness: did you complete the features?
- Correctness: does the functionality act in sensible, thought-out ways?
- Maintainability: is it written in a clean, maintainable way?
- Testing: is the system adequately tested?
Make sure to include all source code in the repository.
Please organize, design, test, and document your code as if it were going into production - then push your changes to the master branch. After you have pushed your code, you may submit the assignment on the assignment page.
Have fun building! 🚀
The Terem Technologies Team