Interactive Design - Final Project
23 June 2025 - 14 July 2025 // Week 10 - Week 14
Racheal Tan Tze Rou // 0381005
Interactive Design // Bachelor of Design (Hons) // Creative Media
Final Project
MODULE INFORMATION BOOKLET
PROCESS WORK
This redesign project is a continuation of my Project 2 prototype, and the final deliverable required a fully functional website consisting of five web pages:
1. Homepage
Google Drive Project Link: https://drive.google.com/drive/folders/18xeWh8b8ljHAz-1qXeSu-e9hubb_mRfD?usp=sharing
Early in working on prototype, I experimented with bold, stylized text effects such as strokes and outlines to create a visually striking layout. For example, I applied a stroked text style to the main titles and buttons using CSS properties like
text-stroke and -webkit-text-stroke. However, during a feedback session, Mr. Shamsul advised me to simplify the visual style. He pointed out that the use of strokes could make the text appear outdated or overly decorative.Following his suggestion, I removed the stroke effect from the main headings and buttons and instead opted for solid color fills. This not only made the text more readable but also gave the entire layout a cleaner and more modern appearance. I learned that sometimes less is more, removing complex styling can actually strengthen the visual impact and improve accessibility.
Navigation Bar:
The navigation bar underwent similar simplification. Initially, the "Ticket" button had a stroked design to help it stand out, but Mr. Shamsul suggested maintaining a consistent and minimalist approach. I replaced the stroke with a standard text color and kept the navigation links clean by removing underlines (
text-decoration: none;), which contributed to a more refined and uncluttered user interface.I also focused on spacing and padding to ensure that the navbar looked balanced on both desktop and mobile devices. Using
flexbox helped me maintain alignment and spacing, especially when testing responsiveness later on.Footer:
The footer gave me the most trouble since the beginning. No matter how many times I adjusted the padding and margin, it consistently had awkward gaps on both sides of the container (refer to Figure 2.1). Fortunately, I found the bug when I was about to give up, I discovered the issue was related to how I structured the HTML.
The real culprit turned out to be the placement of a closing
</div> tag. It was prematurely placed before the footer, causing the layout to break. Once I moved the closing tag after the event section and just before the footer, everything snapped into place perfectly. ![]() |
| Figure 2.1 ; Footer type choice |
To maintain typographic consistency in the footer, I also changed the copyright text to Roboto Slab, aligning it with the other footer elements.
This fix was first implemented on my homepage (
index.html). Once everything displayed correctly, I copied the updated structure and styling to all other pages. Thankfully, I didn’t need to reapply the CSS separately for each page since the styling was already centralized in the external stylesheet.I first did it in my index.html which is homepage. Once everything displayed correctly, I copied the updated structure and styling to all other pages. One good thing is that I didn’t need to reapply the CSS separately for each page since the styling was already centralized in the external stylesheet.
Homepage
My homepage includes an engaging hero section, site navigation, a brief introduction, and links to upcoming events. Visually, the homepage adopts the retro-skating vibe established in my prototype, but with a cleaner, more modern execution.
Visit Us
The most challenging part of developing the “Visit Us” page was implementing the rules accordion. It required JavaScript functionality to toggle open/close behavior.
I manually added each FAQ question and answer into the accordion code, ensuring clear wording and a consistent layout. Each question was wrapped inside a button element, while the answer was placed inside a hidden panel that toggled visibility when clicked.
Hours
The "Hours" page was visually and technically the most complex.
![]() |
| Figure 2.3 ; Adding graphic elements |
Initially, I intended to use multiple decorative graphic elements to create a retro vibe (refer to Figure 2.3) like my prototype. However, after experimenting, I found that too many elements made the layout feel cluttered, especially around the calendar.
Instead, I decided to keep only the essential components: the calendar and a simple search bar. This minimalist approach made the layout feel neater and easier to read.
![]() |
| Figure ; Misaligned Search Bar |
Solution: To fix this, I wrapped the search bar in a
<div class="search-container"> and placed it inside the <main> tag, immediately after the calendar table. This allowed me to control its spacing better using margin and padding.Mr. Shamsul advised me to use a table layout for the calendar. He also warned that managing multiple months and implementing hover events would be complex. Still, I wanted to give it a try.
I tested using
overflow-y: scroll to display all events, but the result was a long, unwieldy page.Instead, I discovered a cleaner method: using an event tooltip system. This allowed me to display event details on hover using
position: absolute and a combination of CSS hover states and JavaScript.![]() |
| Figure ; overflow |
Bookings
The Bookings page wasn’t included in my original prototype, so I first designed the "Contact Us" page and then followed a similar layout structure to build the Bookings page.
![]() |
| Figure ; Bookings page reference |
I added a subtitle directing users to the Rules/FAQs page, reducing the need to overcrowd the booking form with too much information. I also included a clear and well-structured pricing table so users wouldn’t have to scroll endlessly to find the right prices.
To avoid confusion or invalid inputs, I added date and time selection fields using
input type="date" and input type="time" with the required attribute. This ensures that the form cannot be submitted unless those fields are completed, reducing the chance of users entering irrelevant or blank content.![]() |
| Figure ; JavaScript for Bookings |
Initially, I inserted the JavaScript directly into the HTML using a
<script> tag at the bottom of the page. But as I added more scripts for this "Bookings" page, I created a new external file named moonlight.js and placed all my JavaScript code there. This made the code more maintainable and allowed me to keep each HTML file clean and organized. I then included the external file in each page using: <script src="moonlight.js"></script>Contact Us
I created the “Contact Us” page before the Bookings page and used it as a style reference. Like with the “Hours” page, I removed all non-essential graphic elements to maintain consistency and clarity. I focused on user accessibility, mobile responsiveness, and ensuring that the contact form was easy to fill out.
Responsiveness
After finalizing all desktop layouts, I moved on to making the site responsive. I added media queries in my CSS to support tablet and mobile views, targeting each major page section.
Netlify Deploying
https://moonlightrollerwaybyrachealtantzerou.netlify.app
FEEDBACK
Week 11
-Showed Mr. Shamsul my final prototype, even though it was already submitted, i want to make sure the layout didn’t have major issues, since I hadn’t shown him the final version yet.
-also shown Homepage, "Visit Us" page
-Mr. Shamsul advised to simplify the design further.
-Mr. Shamsul advised to simplify the design further.
Week 14
-Suggested including Bootstrap so I can use its components and customize them based on my prototype.
-Mentioned the homepage looked unbalanced due to inconsistent element sizing.
-Recommended using a container to wrap all page elements, including the navbar and footer, instead of a page-wrapper. This makes it easier to control responsiveness by adjusting the container size only.
-Advised setting element widths to 100% and avoiding fixed sizes.
-For the "Hours" page, recommended using a table layout and said there's no need to add hover effects for events, as it’s easy in Figma but harder to implement in code.
REFLECTION
Experience
This project taught me a lot about the gap between design and development. One of the biggest challenges was sizing. In Figma, I didn’t consider how hard some layouts would be to code, which led to several changes during development. I also struggled when Live Preview wouldn’t reflect my code changes, making it difficult to test or debug in real-time.
Observation
I realized that designing with code in mind is essential. Some effects that looked good in the prototype like strokes and overlapping graphics were either hard to implement or hurt readability. Simplifying these based on feedback improved the overall design.
Findings
-Not all design ideas are practical for coding.
-Clean, modular code (using external CSS/JS) saves time.
-Small structural errors can break a layout.
-Clean, modular code (using external CSS/JS) saves time.
-Small structural errors can break a layout.









Comments
Post a Comment