hackRPI2024-CityFindr

hackRPI2024-CityFindr is a web application designed to simplify the process of finding activities and organizations in your city.

Usage

index.php

  • Functionality: Provides login and signup capabilities.
    • Users can create an account by clicking the Signup button and log in using the Login button.
    • Users must navigate through this page to access any other pages and perform actions on them.
    • Note: Security features are still under development, so some pages may be accessible without proper authentication. However, users will be unable to complete any tasks on those pages.

profile.php

  • Forms Available:
    • Preference Form:
    • Users can add their preferences by clicking the Add Preference button. They can either type in their own preference or choose from an autocomplete selection.
    • Make Event Form:
    • Users can create their own events on the platform.
    • New events will have null ratings until users provide feedback.
    • Make Organization Form:
    • Users can create their own organizations on the platform.
    • New organizations will also have null ratings until rated by users.

settings.php

  • Functionality: Contains multiple forms that handle:
    • Changing the password
    • Updating location
    • Deleting the account
    • Note: Backend functionality for these features is currently incomplete.

Unfinished Work

  • Adding social features to events and organizations, including:
    • Dedicated event/organization pages
    • Allowing users to sign up for events or organizations
    • Implementing a rating system for user submissions
    • Completing backend functionality for settings.php

Future Enhancements

  • Implement secure password hashing, session management, and access control to protect user accounts and sensitive data.
  • Optimize the web application for mobile devices to ensure a seamless user experience across different screen sizes.
  • Implement a feature for users to submit feedback on their experiences, which can be used to improve the platform further.

Sources

Inspiration

I was inspired by my childhood growing up in Brooklyn, NY. I remember how hard it was for my family and me to find activities within the city that fit our needs without breaking the budget. Many event sites tend to be niche or do not have personalized feeds based on user needs. Additionally, it was often challenging to find niche organizations and events, especially if the person uploading them lacked initial traction. This led me to create a web application that prioritizes user preferences when finding events, while also providing an easy and manageable way to upload events and organizations within the city.

What It Does

This web application saves user preferences through a unique session ID. Through the organizations and events page, users are recommended different events and organizations based on their preferences. Users can also upload their own organizations and events to the webpage.

How I Built It

I utilized PHP, JavaScript, MySQL, HTML, PHPMyAdmin, and CSS to create the majority of the site. Much of the backend was managed through PHP and PHPMyAdmin, which stored each value the user inputs into a MySQL database I created. Additionally, I saved a lot of data into PHPMyAdmin in the form of JSONs, and a significant portion of my backend involved parsing, creating, and editing these JSON objects.

Challenges I Ran Into

Completing this project within a limited timeframe was challenging. I had to prioritize what needed to be accomplished in the backend, which resulted in sacrificing some frontend features to ensure the backend functioned correctly. I also struggled with the sorting algorithm for recommendations, exploring the Data Structure extension for PHP. This experience taught me about methods I was previously unfamiliar with, such as usort, and I gained experience working with arrays in PHP. Another challenge was integrating the autocomplete function within profile.php, as I wanted users to be able to add tags based on existing database tags. Through debugging and consulting jQuery documentation, I successfully completed this task.

Accomplishments That I'm Proud Of

I am proud of what I was able to accomplish within 24 hours, especially regarding the complexity of the sorting algorithm. I am also proud of my ability to self-solve problems under time constraints, demonstrating my determination to work through challenges.

What I Learned

  • How to use usort to create a sorting algorithm in PHP.
  • Effective use of arrays in PHP to parse, edit, and create JSON files, as well as store data in PHPMyAdmin.
  • How to use jQuery to create autocomplete options within a form.
  • Time management skills and how to prioritize tasks effectively.
Share this project:

Updates