Many people have crazy ideas that they wanted to share with their community. Yet due to Covid-19, there isn't much gathering now. This is what inspired us to develop this app- an application that allows people to post keynote seminars schedules to other members of their community. The name is "house of curiosity", which means that this web application allows geeks, history buffs, musicians, and literally anyone to share their interesting and fascinating discoveries and ideas with the community.
What it does
Users can register to become a seminar host, and after that, they are free to post schedules of their upcoming seminars, speech, or anything interesting! After published, it will be send into other user's front page feed. This way users will be notified the next time they logon to the website. If the other user finds your posted seminar interesting, they could sign up and attend it at the scheduled seminar time! Each seminar has its own page which contains the date of the seminar, the means of accessing it(Zoom ID, Google meet id, etc), and the information about the teacher. Every teacher has their customizable profile page, which includes their name, their description, and their hobbies/specialties(displayed as tags).
How I built it
I built the backend with node.js and express in MVC pattern. I used mongoose to access the database. When user sign up, a new mongoose document will be added. And later on if they also submit the form for teacher profile, a mongoose document in the teacher collection will be added and it will have a reference to the User document in the User collection. Similarly, new seminars schedules being posted will also have a reference to the teacher document and given any seminar, you can find its teacher. For UI design, I first designed every UI in figma, and then coded them in HTML and CSS with Bootstrap.
Challenges I ran into
I had to constantly test my mongoose in case that something unexpected would happen. The data association part (connecting a seminar with a teacher document, and a teacher document with a user document) caused a lots of distress but I managed to solve them(eventually :P)
Accomplishments that I'm proud of
I implemented a salt hashing based password storage system with bCrypt and I implemented a JWT system as well. I also designed the UI, which, in my opinion, looks fine :p .
What I learned
A lots of crude mongoose operations. I also read a lots of articles on practical UI designs.
What's next for House of Curiosity
Having specialized feeds for different users. Current feeds system is the same for everyone. Also we will have a game like system where the user would get rewarded for attending seminar and answering questions.