A tool to redefine online learning
Hobbygenius uses APIs to provide professionals, students, and hobbyists access to courses and events where they can learn and practice new skills in supportive environments.
Hobbygenius is an attempt to overcome some of the shortcomings of online learning: a lack of support and the inability to practice practical application of new skills.
Users may include professionals looking to make a career change, students trying to pick up new skills over break, or someone looking for a new hobby they can share with a community of like-minded people.
Hobbygenius was built as the final project for HCDE 310 Interactive Systems Technology with Professor Sean Munson. Throughout the quarter, we had learned the basics of python coding, accessing APIs using URL requests, and
hosting a webpage using Google App Engine.
For the final project in this class, we needed to use these skills to build something of value.
The Challenge: Build something
of value using APIs
I chose to start my project by identifying the APIs I wanted to use so that I could have a full understanding of the data available for me to use before creating a concept.
Hobbygenius uses data from two APIs:
The Udemy API provides access to online courses hosted by Udemy. Using the getCourses function provides the title, instructor, price, photos, and a URL link to the courses page on Udemy.
The Meetup.com API allows users to access data about groups and events in Seattle. My code uses getEvents to search for events using a keyword defined by the user and returning the search results with the event name, the associated group, date and time of the event, pictures, and a link to the page on Meetup.com
Data was obtained using URL Requests and was saved as a JSON dictionary that could be iterated through to present results to users.
Next, my code uses JINJA templates to send data saved in dictionary to an HTML file. In order to do this, I created JINJA templates that call on data from the dictionary passed to them in order to fill in information to present to users. The templates are further styled using HTML and CSS.
Lastly, Google App Engine is used to host the site.
Hobbygenius was designed using HTML and CSS. The design for this project has two goals.
1. To create a beautiful and usable interface
2. To learn through experimentation in HTML and CSS
I experimented with many elements in Hobbygenius interface. I mostly did this using online tutorials and youtube videos. The first example of experimentation is the header with the Hobbygenius logo, the info tab, and the search again tab. This was hard to make because it uses divs, containers, and scrolls with the page instead of disappearing like a normal header would.
The second example is the use of the card element. In order to design these, I again used divs and containers along with the shadow styling and a change in the shadow when the user hovers over the card.
This project was a great opportunity to build coding skills. One of the biggest challenges was choosing APIs that were accessible. I investigated many APIs that were not upfront about the cost of their product. This experience taught me to thoroughly investigate before investing time in an infeasible project.
Working with HTML and CSS was an additional challenge to this project. Through experimentation and research, I learned how to solve coding and design problems by using the advice and expertise of others.
In the future, I would love to incorporate more online learning resources into Hobbygenius. There are so many resources available online for learning new skills including Kahn Academy, TED Talks, and Youtube, and many others. Gaining access to this data and presenting it to users would help facilitate and organize learning for a larger audience.