A prettier version is at this website link
This website was made exclusively for the KuriusHacks Christmas Edition Hackathon. Any and all resources were produced between 28/12/2020 and 30/12/2020 during the specified time periods.
Challenge 1 ✓: Secureaty is a platform dedicated to connecting the less fortunate to food sponsors using methods described above!
What Inspired Me and How It's Built
I'm really into improving and optimizing via mobile devices and tablets as it's really impressive that you can fit such a big function into a small device. When I heard about this challenge, my brain started focusing on a simple way to allow people who may not be technologically advanced to be able to connect to an advanced system. That's why I went for a simplistic design (kindof). It's not entirely difficult to navigate around and it isn't littered with icons and all that junk that may seem confusing.
I used Node.JS and Express.JS to build this project, along with API help from MongoDB and MapQuest. All of the backend is housed in server.js, passwords.js, and mongo.js (the names describe the function of the names). I do not like changing my way on things, so I did make the mistake of housing EVERY request in the server.js file instead of using routers (and an added 6 hours of workarounds to a authentication library that way too yay)
The main idea of the application may not be clear at first, so please let me describe it in detail: In many major cities, there are several public places that can be utilized by people who may not be able to get technology devices (the target food insecure). There, a kiosk would be placed with an internet connection that can connect to the Secureaty website. The login page is purposefully designed NOT to have an email, as absolutely anyone is able to create an account and request specific dishes. In the find a meal page, there is a list of options that a person could select which cooresponds to certain food item descriptions. If a certain amount of items match (and the dietary restrictions portion is the same as the food item), the user is able to see the food items in a list, along with the sponsor. On that page, they are now allowed to select the food items they want and submit a request at the bottom. The browser detects the current user's location (with permission of course) and calculates an optimal path to all of the sponsor locations using MapQuest to show on the page.
Below are several features that ARE in this demonstration. Most of the descriptions above are part of the idea that could be taken further than 48 hour development time. Please feel free to test out any one of these features.
- Custom made secure account system (no email)
- CRUD functions on different volunteer, user, sponsor, request, and dish objects
- Somewhat mobile friendly interface
- Ability to track the directions of the current user to the sponsor location
- Dish searching system based on preferences
- Ability for anyone to volunteer or sponsor
- No framework UI design
I have included 2 sample accounts below, but feel free to register for some more if you would like. All of the passwords are hashed in the database, but if you are going to register, please DO NOT use a serious password (there are absolutely no checks on what your password may be). A couple good things to test out on the account system is the way that certain things are authenticated when creating sponsors between different users. The first account on the list is the one with superuser permissions (can override the permission checks on if a user owns a sponsor)
Username: NewYear Password: 2021 Username: SpongebobSquare Password: Pants
Like most other quick hacks, this app did NOT have proper security practices in mind while creating it. The only thing that was specially prepared to be secure was the account system database storage. Please do not insert personal information on this demo website anywhere as all of it is accessible in the long winding console.log's and the database. Personally, if you are going to utilize the CRUD functionality, please use memes or inside jokes as the values.
In testing, I found that Google Chrome works a LOT better than Safari does, so please keep that in mind if a browser is restricting a feature due to security issues.
Lastly in security, you may find several keys left out of the .ENV file. This is due to mostly time, but I have tied down all loose billing ends so I am using all free resources!
Challenges I Faced and What I Learned
One huge challenge I faced while working on this website was actually linking it all together. I mistakenly put the website together in a weird order, and should've brainstormed out the format of it more before actually starting to develop the framework. Luckily, I recovered most of my idea to be implemented in the full 48 hour time period, but now I know in the future to framework more efficiently.
Another big challenge I faced was connecting together models in mongoDB (which shouldn't even happen in the first place, but hey, frame working). I solved this by connecting each model to an id in another one, but this could be done much more efficiently. I know that next time I may just want to stick to SQL object connecting as I definitely recognize the difference between my last hackathon project with SQL vs this one.
Overall, I learned more how to manage my time and what's good about teamwork. This time I tried doing the hackathon alone, and I found out some pros and cons do doing that. Learning so may help me improve time management and getting more sleep on future hacks.