Symfony demo app

I was assigned a coding challenge for a Symfony Developer role. Here is what I made.

 

The Project

The task was to make a URL shortener site (like bit.ly) in Symfony. I completed the task in one weekend - and honesly, I’m surprised at how quickly I was able to finish an entire Symfony app.

I was a Symfony Developer for almost 2 years, and used versions 3 and 4. Version 5 makes it pretty easy to set up (as far as a PHP app goes, anyway).

 

Here is how to access my demo:

 

Goal

Your submission must meet the following requirements:

  • The application must be built using Symfony.
  • There should be three “actions” a user can take:
    • Main page (/) - contains a form where long URLs can be input and submitted. Form redirects to the info page on success. Must have validation.
    • Short link info page (/view/abcd123) – shows information about the shortened URL.
    • Redirect link (/abcd123) – looks up the full URL and redirects to it.
  • One additional feature of your choosing. Some possible ideas:
    • Vanity URLs
    • Analytics (number of users redirected)
    • REST API
    • QR codes
    • Add some color and theme beyond the basic CSS provided by a framework.
    • Add ability to "Favorite" entries, bringing them to the top of thelist.
    • Use a modern modern JavaScript MVC framework
    • Add ability to edit/delete existing shortened URLs.
    • Automated unit/functional tests
    • Anything else you can think of
  • Links must be stored in a database (of your choosing)
  • Provide the schema with your project
  • Shortened link identifiers must be unique strings of 5 - 9 alphanumeric characters.
  • Code should be written in an object-oriented fashion using appropriate design patterns.
  • You can leverage a CSS framework for the UI.

 

Submission

Please either push your app to GitHub or BitBucket and provide us with publicly accessible link or provide us with a zip/tar. You need to provide us will all of your source code. If any build instructions are required, include then in a readme file.