I thought of this idea in my sleep. I'm an introvert, and I deeply love my friends, but they never seem to understand how much alone time I need. I thought it would be funny if there were an app which they could check to see whether or not I was ready to hangout yet, instead of asking me to hangout constantly and being told "no" most of the time.
What it does
It's designed to be used by extroverts: you can log in, enter your friends' name and their favorite activity, and log when you hang out with that friend. When you "hangout" with a friend, that friend goes on cooldown and you can't hangout with them again until....finally! You can hang out with them after the cooldown ends.
How I built it
It's built with React.js. While building this project, I learned to use React hooks as well, and I incorporated Formidable's Victory graphing library for metrics on a user's hangouts. The backend is in Ruby on Rails.
Challenges I ran into
I learned a lot about how you can style things in React. I wrote all the styles in a separate file and imported them as necessary into other React components. It was fun to figure out how you can make specific style elements reusable, and combine them on the fly using both destructuring and Object.assign( ).
Accomplishments that I'm proud of
I really got confident with using CSS grids and flexboxes as complimentary forces in this project. I took some time away from the project to just do pure research on the core truths about these technologies, and it paid off.
What's next for Finally! An App for Extroverts
The backend has a lot of data stored that v1 of the project hasn't made use of. I plan on allowing users to customize their introverts' cooldowns, and log when their friends have engaged in their favorite activity -- which should decrease the cooldown time. There is also a lot of room for increasing the details of the hangouts that are logged, to add purposes, equipment, length, and location of a hangout. All of that will make for cool graphing data once the forms and frontend are more fleshed out.