What did we do well?
The switch to the new template makes our site look 10 times better and also reduces a huge workload on our end. Our site has gotten faster since we reduced some of the strain of the images and enabled gzip compression on the server. The look and feel of our site is what we're going for and the images that come with the API look fantastic. We came up with some problems just by using the feel of our site and solved them such as providing some quick details on the overview page on hover. As is right now our site is a cleaner version of several other sites that provide the same information, and we avoid the problem of how to show database information in a reasonably attractive way. Our codebase makes intuitive sense to us and elegantly solves most of our problems. We've been able to give other teams advice on how to set up their projects and showed how to get over some common obstacles. We feel like we're well on track to finishing the other phases without having to really play much catch-up.
What did we learn?
We learned the importance of the adage "don't reinvent the wheel." Although we learned a lot doing things our own way in Phase 1, it made us crunch for time in the last few days leading up to the deadline. In Phase 2, we simplified a lot of our processes by adding tools, libraries, and themes to our websites. By talking with other groups we found creative ways of solving problems where there is a near infinite supply of data. For example, we wanted to keep information about supermarkets in our database but there are hundreds of thousands of them throughout the US. To narrow things down, we restrain our knowledge about supermarkets to certain zip codes and cities. This allows us to have a meaningful amount of data without getting overwhelmed. In the future we want to make it so that areas outside of our selected area will still work using Google's Places API, but we cannot guarantee the accuracy or quality of these areas.
None of us had any experience with React before this project so we all learned a good deal about the front end. To make matters more interesting, React and Flask like to compete somewhat so we learned how to integrate disparate technologies that both could stand on their own. Brushing up on our database skills allowed us to see how to make a truly scalable site and introduced us to some common problems such as how to do testing with a CI site like Travis when some of the info, like a database, you can't send over. We learned about environment variables and how to keep private info like API keys from reaching the public eye.
What can we do better?
Probably our biggest problem of this phase was scheduling. Getting everyone working together at the same time is difficult and even more so during tests and spring break. If we had planned out everything before hand and had consistent deadlines that we reached in time, we would not have worked at all after spring break. In the next phase we should have a schedule that we can follow to see if we are behind or ahead. Our database works right now, but we could definitely clean it up. Additionally, some little things like accessibility and security we could work on. Some small UI changes could be in order too. Some of the default selections for the template make words hard to read with the background images we have pulled from the databases. We're going to want to plan in advance for the next phases now that we know the basics: we don't really have a plan for the future phases and adding new stuff will inevitably change the layout of our site when if we planned in the first place we wouldn't have to redo our work. Sometimes the sources that we pull our images from take a long time to load but we don't have the disk space on Amazon to store every image we need. We'll have to look into that but I'm not sure we can solve a lot of our speed problems without paying money. We want to do more testing on various screen formats and sizes in order to make sure everything works, along with different browsers etc. but the more time we spend QAing our site the less time we have actually fixing the bugs or implementing features. And seeing as how there are two more phases of the project we are reluctant to do huge testing sweeps when the site will be different in a couple of weeks.
What puzzles us?
We're curious how other teams keep themselves organized and how they approach their problems. If we all knew what the others were doing, we'd be able to solve problems we didn't even know we had and we'd be able to take the best of every group and make it our own. Additionally, none of us have truly become experts on React in the short time that we've worked with it and we are still trying to get our heads around it. Some of the best practices of web development are hard to find and hotly debated and as students, we're not sure what best practices we're missing or why some of the technologies we're using are the best choice. It'd be nice to have a deeper understanding of all of the different cogs in the machine.