Big Prize Draw
The Big Prize Draw was a competition platform that transitioned from a social-media page to an independent web application. As the sole developer, I applied my PHP programming skills to create this user-friendly platform with a custom user system, dynamic ticket selection, and a comprehensive admin page. This work led to the realization of maintaining custom PHP sites' complexity, particularly when scaling. This challenge guided me towards the Laravel framework, streamlining future projects while significantly enhancing my coding skills. An important entry in my portfolio, this project marked a profound milestone in my development journey.
PHP • HTML • Bootstrap • MySQL Database • Stripe Payment Gateway
Project Overview
The Big Prize Draw started as a social media-driven competition platform conceived by a family friend. It rapidly became an ambitious project that allowed me to apply and hone my PHP programming skills in a practical setting outside of my university coursework. The primary aim was to create an independent platform where the Big Prize Draw could host its competitions with functional efficiency and user-friendly intuitiveness, transcending its initial Facebook roots.
My Role and Responsibilities
Working as the sole developer in the project, my responsibilities were extensive and multifaceted. I was in charge of conception, design, implementation, and deployment stages, regularly communicating with the project's stakeholder to tweak requirements and make necessary revisions. This hands-on project offered invaluable insights into every aspect of web development.
Project Duration
The Big Prize Draw flourished from an idea to a fully-fledged operational site over a concise and intense span of two months.
Unique Features and Functionalities
The Big Prize Draw notably consists of multiple unique features. I tailored a custom user system with differentiated roles for members and admins. The dynamic ticket system is another trademark feature wherein users can see and select tickets displayed as distinct cards with individual numbers. After selection, users are routed to the Stripe payment gateway where they can complete their purchase, receive a receipt, and have their tickets reserved for a set time to prevent duplication.
An exclusive admin page was also integrated, permitting the site owners to create and manage competitions, communicate with all members, and notify specific customers about their winnings, all from a single interface.
Challenges and Solutions
While the challenges were numerous, they ultimately provided a great learning experience. The project's expansive scale introduced me to the complexity of maintaining structure and manageability on a custom PHP site. This understanding inspired me to explore the Laravel framework as a robust solution to these challenges, proving instrumental in my subsequent projects.
One of the most distinct challenges I tackled pertained to the ticket ordering system. The aim was to prevent simultaneous ticket purchases, introducing a reservation mechanism that rendered tickets unavailable for ten minutes once a user proceeded to checkout. The complexity lay in designing this timer to persist, irrespective of the user's presence on the page.
My initial approach was to craft a server-side timer - a quest that led me down a maze of inefficient solutions. After extensive brainstorming and finally turning to Stack Overflow for guidance, I switched my perspective entirely. Instead of grappling with a live timer, I added a timestamp to each ticket set ten minutes into the future at the point of checkout initiation. This allotment acted as a built-in cooldown period, wherein a ticket could only be purchased if the 'current' timestamp surpassed the 'checkout' timestamp in the database.
This solution obviated the need for a live server timer, offering simplicity and effectiveness. However, to enhance user experience, a countdown, according to the stored timestamp, was incorporated into the frontend for users present on the live site. This anecdote reaffirms that the most elegant code often lies in redefining the problem at hand.
Project Conclusion
The Big Prize Draw project signified a significant milestone in my coding journey. From interacting with stakeholders and incorporating their inputs to delivering a site that catered to specific, unique requirements, the experience was revelatory. The pivotal role it played in my exploration of the Laravel framework cannot be overstated. The project, intense and gratifying in equal measures, was formative in my evolution as a seasoned PHP developer. It validates my capacity to develop functional and user-friendly software from scratch, making it a standout entry in my portfolio.