Comments (3)
Force Flutter to use a User setting which is then used to manually add lessons when the user wishes to do so via Quick Study
or Learn
mode.
Much easier to implement than a cloud function (which would not work offline), or a cron job/background service (alarm manager or something akin to this).
from kanjimaru.
Change the structure to force the user to have only one list that they are learning from at one time.
from kanjimaru.
After banging my head against the wall the past couple of days, I've come to a conclusion as to how to tackle the issue that came to light thanks in part to changing the Firestore structure in place, and trying to add this learn mode.
Previous 'thought' was to add all 1.3k~ vocab from the Book Genki 1 to Firestore as an initial test. This would incur a whooping 1.3k writes, and subsequent reads from a single user if it were to happen. On a larger scale, this would incur high costs. I am not happy with the thought that someone could abuse this.
Instead of the above, an addition of a 'premadeListsUsed' field inside the settings, and adding 'learned' vocab only to Firestore, would allow the system to store the premade list/s locally. This is because we can simply compare the list/s locally (the ones mentioned in 'premadeListsUsed') to the Firestore learned vocab to display the items with their respective status on the client.
The above (rather crude) explanation of the system would allow easy addition of new items simply based on items in the list which are not on Firestore, and local scheduling of items via a cron job (let's say one that is running every hour), while keeping reads and writes to a minimum. A more detailed breakdown should follow sometime soon.
In the case of user-made lists, all items would have to be stored on Firestore. To prevent a user from adding some arbitrary amount of items (let's say 1000), security rules need to be put in place.
Another thought would be the writing component. I'm thinking that it would be a good idea to let the user decide during the 'learning' part if they want to write the item or not (as that decision will be then persisted). Subsequent changes to learned items can then be made in the list on the client? Not sure yet as to how to tackle this particular problem.
from kanjimaru.
Related Issues (20)
- Adjust Firestore security policy to allow reads and writes
- Implement Quizzes
- Add functionality to Tab Bar and refactor Overview Code
- Amend Readme with Badges
- Implement Firestore Schema that will handle the Learn and Review System HOT 4
- Make font adaptable to screen resolution
- Add audio to learning and review system
- Change UI to affect new changes to distinction between vocab and kanji HOT 1
- Modify the 'Daily Study Goals' section to include the 'Daily Lessons Goal'.
- Local module descriptor class for providerinstaller not found. HOT 1
- Implement Authorization Functionality HOT 1
- Implement Material Motion animations on page transitions
- Refactor current Provider usage to Riverpod
- Implement Google Login
- Implement Facebook Login
- Implement Anonymous Login
- Refactor Firestore structure HOT 3
- Add tag/labels to words while adding words to a list
- Current auth onDelete function does not delete sub-collections HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kanjimaru.