Skip to content

Latest commit

 

History

History
79 lines (47 loc) · 4.65 KB

README.md

File metadata and controls

79 lines (47 loc) · 4.65 KB

Learner's Digital App

An Edtech solution for PU students where they can visualize and learn basic topics like matrices and score better.

Try it

Tech Stack

New things I Learnt

  • Type Save http calls in flutter using something called chopper for flutter which is dubbed retrofit for flutter

    • here's my blog on the same blog
  • MVP (Model-View-Presentor) architecture for flutter

    • here's my blog on the same blog
  • Caching in flutter using [HiveDb]

Major Setbacks and solutions

Latex Support

All flutter packages for latex support use webviews, which completely makes sense as flutter is not an html renderer and hence to render such content we can open a webview to render using js libraries. Now the first problem we faced was these packages only being able to use raw strings the initial version of the app had a random problem generator and hence I was generating latex syntax on the go. Unlike js, dart doesn't support/have string.raw() and hence I couldn't figure out any way to convert a generated string into a raw string. But luckily requirements changed and now we were keeping a fixed set of questions on our db and using them, so the solution was sending raw strings from our Mode (Express) based server. Initially for 1 or 2 Matrices -> Latex -> Web view per page were ok, but then as the app matured we had pages where we had more than 3 or 4 webviews per page which ended up slowing down the app considerably. This was a mojor setback but overcame this, initial solution was a python based microservice which could render latex and return an image (png) over https -- Perfect ? No Life isn't that easy this service used a system dependency called WKHTMLtoPDF along with an image processing py dependency called Pillow the problem was we had to use heroku for our hosting and we couldn't how setup such an environment on heroku (I am aware that heroku supports containers but given the time crunch that looked like too much work) but finally we found an open Node.js based docker which does the same so that's how we solved this

ScreenShots

SplashScreen

Auth and Intro

Auth Intro

Home and Profile

Home Profile

Menus

1 2

Question Screens

1

Team

Contributions to main app