Every year we try to think of something we would like to do around the Christmas period, but inevitably client work comes first and we have to shelve our ideas. This year, we have a bigger team and so we actually managed to do something in between client projects.

We came up with the idea of doing a very simple gift generator – we know they have been done before, but we have never found one we like or one that doesn’t feel the same as a stressful trip to the shops. Instead of having an overwhelming number of gifts based on endless filters, we chose only three criteria: price, age and interest.

The idea

It is easy to go overboard at Christmas, spending a huge amount of money after buying for the various relatives and friends on the list. By sticking to an upper limit of £20 (and in most cases trying to go below this), we are hoping that people don’t end up in the red! For age categories, we thought hard about this one. We decided that for a person under the age of 18, they would just have different lists of gifts for the various age categories without narrowing them down further by interest. If we were doing this to make profit or as a viable commercial idea, we would have definitely included more categories and gifts per age group, but time simply didn’t allow this.

Interests were scoped out and we ended up trying to go fairly broad and avoiding anything controversial! Some other categories were left out as well, just as beauty or cosmetics, as those presents can sometimes feel like a back-up (not for everyone I hasten to add) and we were hoping to provide ideas that wouldn’t appear to be that. Overall we used ourselves and our own Christmas shopping lists as a bit of a guide. So sorry if we don’t have anyone we know with an interest area you really need help with!

A simple design

What we ended up with was a spreadsheet of around 150 gift ideas. The design had to be simple so a user wouldn’t be presented with this full list. A user selects an age category and if under 18, a modal would appear showing the randomly generated item that was within that age group. If the age group selected was over 18, the user would then click on the interest and again, the modal would appear with the gift idea. If the user then wanted to see another, they just clicked a button to do this, or they could select another button to go to the retailer’s site for the gift. That was it in terms of the user journey – not endless clicking or narrowing down, but age > interest (if over 18) > gift.

Developing the generator

Moving on to the build, we decided to use a Laravel Lumen build instead of the extensive standard Laravel build. There were a few reasons for this; firstly this was going to be a fairly simple one page website so there was no need to waste performance on installing a full Laravel build when only select packages were needed. Furthermore, we have never done a Lumen build before so it would be a good learning experience for everyone involved.

To start off with we had to get Lumen up and running; we did this by utilising composer and added a global require for ‘laravel/lumen-installer’. After that had been installed it was time to start the build. We decided to go with a csv to store all the gifts, as a database would have been overkill and impact on the performance of the site. Once the website had been populated with products, we started working on the functionality, where a random product would be produced once the user had chosen an age and possibly category depending on the respective age group.

Finally, once the main purpose had been fulfilled we moved onto extra features. The most notable of which was the background snow effect, which was produced using JavaScript. To accomplish this in JavaScript we utilised the canvas object in html. Once our canvas had been created, we needed to add a snow-like effect. Starting off we created random dots which resembled snow, so they were coloured white and were translucent. Then we created an animation function that would update the snow by drawing and redrawing new snowflakes after a short time interval.

A little extra

One last decision we made for the generator was to use affiliate links. This wasn’t a way to profit from the idea, but we thought if people were clicking on it then it might as well make money and anything we do make can be given to charity. We have no idea if this would be a one, two or three figure sum (or who knows, it could even go into the thousands!), but seeing as there was the potential to make money and give it to a good cause, we couldn’t pass up on that.

Overall we are pretty happy with the result. It was meant to be a simple idea, design and build and we managed to keep it as such, despite the temptation to get carried away with new features. We hope it fulfils its purpose and helps people with their Christmas shopping and also spreads a little cheer this holiday season.

Merry Christmas, from all the team at We Create Digital.