Rowan Shields


Computer Science MEng Student (2nd Year) | University of Warwick | Computing Society Social Secretary 2024-25

Contact

Or contact me here:

About Me

Hello, my name is Rowan Shields and I'm a 2nd year undergraduate at the University of Warwick studying Computing Science (MEng). I am based in south east Cornwall and currently have a job at Tesco Callington.

Computing Society

I am social secretary for the University of Warwick Computing Society executive committee 2024-25, some of my responsibilities include:

Personal Projects

SwiftAdmit

A ticketing/event web-application developed with Flask and using jQuery UI.


This is one of the most interesting projects I've emarked on. With absolutely no knowledge of Flask I was tasked with designing an app that allows users to acquire tickets for events. Learning the basics of Flask and Jinja2 templates was a great back-end refresher alongside jQuery UI to complement the front end. Some of the features of SwiftAdmit include:

  • Real-Time Notifications: Alerts for events with less than 5% capacity remaining.
  • Email Verification: New users must verify their email to complete registration.
  • Unique Barcode Generation: Each ticket includes a unique barcode stored securely as a base64 string.
  • Unique Barcode Generation: Users can reset their password through email verification with a time-sensitive code.
  • User-Friendly Ticket Purchase: Seamless ticket acquisition with quantity selection and server capacity checks.
  • Event Creation by Superusers: Ability to create and manage events with comprehensive validation.
  • Cancel Events and Notify Ticket Holders: Superusers can cancel events and automatically notify all ticket holders via email.
  • Dynamic Event Information: Users see real-time updates on event status (e.g., low capacity, sold out, cancelled).
  • Visual Ticket Display: Purchased tickets presented in a grid format, including event details and cancellation options.
  • Activity Logging: Detailed logs of user activities (e.g., logins, ticket purchases) for monitoring and security.
  • Asynchronous logs & Notifications: Admin user can view information such as number of tickets Purchased and capacity in real-time without reloading the page!
  • Profile Pictures: Users can upload thier own images which is displayed alongside their username in the navbar.

Note: I learnt a lot more about how apache virtualhosts are configured as getting this website working alongside the laravel app (these pages) was a pain.

Admin login details: admin/123

Agrimanuals

An indepth raw PHP e-commerce website selling agricultural manual.

My most in-depth web application to date! This app uses the most complex database and has several relationships between tables which meant me rapidly learning how to use tools such as MySQL workbench in order to get the database setup correctly. Building this app required me to go from close to 0 PHP knowledge to an intermediate level where I interact with sessions and query strings for example. Featues of agrimanuals include:

  • Login System: Users can register and login to their agrimanuals account so that they can place orders.
  • Change Account Information: Unlike SwiftAdmit users can actually update their account information; username, password and email!
  • Randomly Generated Products: On the home page a grid of 6 products is randomly picked from the database, if you refresh the page different products appear each time.
  • Shopping Basket: Also unlike SwiftAdmit users can queue up several items with varying quantites in their personal shopping basket, due to it buffering stored in the database it is persistent and required the creation of a ShoppingBasketItem table to fix the many to many relationship.
  • Filtering & Sorting: Users can filter products on the shop page depending on their type and category and also sort them based on name and price in ascending or descending order.
  • Searching: As well as filtering/sorting users can search all products with a query string, which then scans all information in the product and displays the results with a counter outlining how many match.
  • Sales Dashboard: Using Chart.js the admin user can view all the sales data for the site as a whole in a graph which shows how much money has been made in the past month.
  • Data Exports: The admin user can also export the sales data into a portable CSV format.
  • Product, category and type management: Finally, the admin user can create, modify and destroy products and their categories and types (this was probably the most complicated part of the site).

Note: This project was quite interesting due to the fact that if this one line of code "ob_flush();" was left out of the header.php file the entire website would break, it's to do with output buffering and how websites can't display content while PHP is executing.

Admin login details: admin/123