The UPSU JobShop website

The UPSU JobShop is a student-only employment service focusing on providing part-time jobs to help students to make ends meet while they study at Portsmouth University. I wrote the JobShop application from the ground upwards, within the Mambo CMS framework, to provide a web-based service which was primarily easy to learn and administer for the largely non-technical staff team, and easy for students to use to find work.

Key design features...


A key aim with this project was to build an information service which made use of tags instead of categorisation. Key benefits of this approach included the ability to easily visualise the distribution of job types through tag clouds, as per the thumbnail image, and - more importantly - making the task of adding new job types to the database as simple as possible as, with a tagging-orientated system instead of the more traditional categorisation approach, the administrator simply has to enter the tag when editing the job, rather than the more lengthy process of creating a new job category. One key requirement to ensure this approach is reliable was the need for the administrators of the jobs website - the staff of the JobShop who are largely non-technical users - to have a crib-sheet of the most commonly-used and recommended tags; a future code upgrade has been suggested which automagically provides this list of most-used tags as a simple "click to add this tag" box to the right of the tags input box, encouraging uniformity of tagging. The tagging engine functionality was written into the global tools class, allowing the "tags" homepage - - to include a JobShop tags cloud, increasing exposure of the service to other parts of the union's extensive website, and hence to those users who might not otherwise have found the union's job service.

More information


The search system which underpins the tagging system (searching for jobs tagged with "x" uses the JobShop's own search engine) was designed to be fast and extremely flexible. By divorcing the search functionality from any presentation code, the search engine drives not only the search functionality, but also provides the output for the latest, closing soon, and most popular jobs listings, as well as all the employer views, and additionally provides the RSS and mass-mail output functionality. From a usability and design point of view, the search homepage aimed to present a flexible and powerful search interface, but also one which - conversely - was not intimidating in its complexity. This was achieved through the use of some fairly clever DHTML and JavaScript code, which hid any search fields from view, except for the default free-form text search box and any search fields which had already been populated from the URL (i.e. from a GET request). Additionally, any combination of search provided an RSS feed link, encouraging - in-line with the union's aims to get more users to make use of RSS - job seekers to subscribe to the JobShop's listings.

More information

RSS everywhere

The flexibility of the search functionality, mentioned previously, meant that producing highly customisable RSS feeds to present the extensive jobs and employers data in formats useful to job seekers was extremely simple. Key feeds provided include the latest vacancies, most popular, and closing soon. Because the latter two feeds are based on information which must be recorded over a period of time - for example, the most popular vacancies have to be calculated between two fixed points in time - it was necessary to produce a daily RSS entry which included a vacancies listing, instead of publishing one entry per vacancy.

More information

To see this process in action, please take a look at the RSS feeds by following the links below (please note that some older web browsers won't display RSS feeds in a readable format; if the links below take you to a page of nonsense, you may need an RSS Reader - you can find some here).

Search engine-friendly URLs and unique resource IDs

By extending the SEF functionality within the Mambo core, it was possible to base the JobShop website around easily-remembered and search-engine friendly URLs; for example, job vacancy URLs are based on the vacancy's unique database identification number, for example (and, in a slightly excessive moment of future-proofing, I ensured that the numbers will simply continue increasing should the JobShop ever exceed 9,999,999 vacancies). Employer URLs are similarly structured. This has three key benefits: the first is that vacancies and employers can be and are indexed by Google, the second is that there is and - for the life of the vacancy, or for as long as the employer is registered with the JobShop - always will be one unique resource locator for that particular piece of information. The third benefit, tied into the second one, is that we can also generate a unique reference identifier for a job or employer, e.g. J0000619, which can be used by developers and back-office processes alike as a reference number.

Restricted (i.e. student-only) information

To ensure the JobShop - which is funded by the students' union's block grant, funded from the university's public money source for the explicit purpose of being spent on students and their education - is student-only, the JobShop was tied into the Mambo authentication system. This makes sure that only those logged into the website - namely students and staff at Portsmouth - can see employer information, making it largely impossible to apply for a job without physical access to the union's JobShop at the students' union. The design of the entire JobShop application was based around this authentication-checking system, so even parts of the site such as the RSS feeds functionality cannot display employer information. However, once logged in, employer information is displayed and is highlighted using CSS to ensure job seekers can easily apply for vacancies.

Integration with Google Maps

To make the process of finding a job as easy as possible, a link is provided on job and employer pages - where address information is available - to a Google Map showing the employer's location. Although only a small touch, the natural language processing used by Google Maps means that even those vacancies where a complete address cannot be provided can still make use of this feature; for example "Hilsea, Hampshire, UK" will generate a link to a map which a job seeker can use to get directions from their halls of residence, etc.

Administration features

A simple-to-use administration back-end underpins the JobShop website, with a very strong focus on the use of "plain English" throughout, to make training and induction for new staff as simple as possible. JobShop staff are granted access to the administration interface by joining them to the JobShop Administrators group, and can either be regular staff (who can add, edit and hide vacancies and employers), or administrators (who can also delete certain data and access the Google Analytics interface). The UPSU Groups functionality underpins this authentication system, and you can find out more about this project elsewhere in my UPSU portfolio.

Use of Google Analytics

While each job vacancy and employer page displays the number of visits and unique visitors, more detailed traffic reporting is used extensively by the union's JobShop to analyse and improve the service offered, and - importantly given the forthcoming QAA audit process - to justify the benefit of investing public money in such a service.