Section I: Inspiration
As aspiring developers ourselves, we've had to self-teach ourselves programming skills countless times. We found one of the hardest things about starting was knowing where to start. With so many opportunities, programs, lectures and videos we all want to make the most of our time and pick the specific resources that are best for us.
Section II: Purpose
Our purpose is to build specific programming courses tailored for each learner and their unique experiences. Whether they want to learn computer vision or the higher-level future of natural language processing, Learnify wants to be able to enable these students with enriching experiences.
Section III: Process
We started off with the basics of the UI on figma and a tornado web server. As we moved along, we realized that it was going to be a tough task to model the data using tornado and mongodb as there is no structure. This made us switch to the Django REST framework and the models allowed much more structured data. We then authenticated the client through an API call to see if it worked and then we started working on moving the figma prototype into flutter. We then debugged the backend for a very long time and connected parts of the backend to the client.
Section IV: Hardships and Workarounds
- With so many components, one of the most difficult parts of the project was the integration between 3 areas: design, front-end development, and back-end development.
- Oftentimes the design elements were too complex to implement.
- Miscommunication between front-end and back-end resulted in missing or excess components that may not have been developed by either end.
Section V: Accomplishments
- Developed topological sort to ensure the order of courses is suitable to user's pre-requisites
- We were able to authenticate the user with JSON tokens. We were also able to use models to model the various data structures.
- Establishing priorities for implementation to develop MVP
- Effective use of Figma to create animated, hi-fidelity prototypes to quickly test out ideas
Section VI: Important Lessons
- Focus on integrating back-end and front-end a lot earlier on.
- Communicate any changes being made to original plans at all times, and saving them in a shared document etc for future reference and team organization (make sure everyone's on the same page)
- Create schedules/short projected timelines in order to ensure project is on track and to identify key issues
- Have quick "team-meetings" to go over problems and re-evaluate priorities
- Programming in Flutter, using JSON tokens
- Employing smart-animations techniques in Figma
Epilogue: What's Next
More emphasis on the community. Karma, Reviews and other measurements to be drawn from user feedback and interactions. Also adding a more secure system where duplicates people aren't allowed, there is only one session per person at a time and email authentication is necessary.