0xpr03 / VocableTrainer-Android

Vocabulary Trainer for Android - not lang specific
Apache License 2.0
29 stars 10 forks source link

Online Account Sync #55

Open 0xpr03 opened 3 years ago

0xpr03 commented 3 years ago

I'm evaluating whether to implement an online account feature (self-hostable) where you can upload your lists and thus edit them on your PC in your browser. This eliminates the import/export busywork completely. Import and Export won't ever be removed, but editing or creating new vocable lists from your PC should be much faster and easier for non tech-savvy folks.

rizhenkov commented 2 years ago

Hi, I can help you with this feature if you interested (as volunteer, of course). I'm expirienced in JS and PHP. Just need to imagine and describe workflow.

0xpr03 commented 2 years ago

Thanks for the offer. I am in fact working on a backend currently, written in rust and have no specific plan yet for how the frontend will look like, so that's one way to get involved. I do have a plan what I want to do for password-optional login, multi-device support & offline capable synchronization.

rizhenkov commented 2 years ago

@0xpr03 What you think about something like this?

image

Figma: https://www.figma.com/file/Zcmv1m6jZtdT3GFFPulQsO/VocableTrainer-Web?node-id=0%3A1

0xpr03 commented 2 years ago

ping @mawoka-myblock you also did want to get involved with the frontend

0xpr03 commented 2 years ago

@0xpr03 What you think about something like this? Figma: https://www.figma.com/file/Zcmv1m6jZtdT3GFFPulQsO/VocableTrainer-Web?node-id=0%3A1

Looks good, you'll probably hit a problem with multiple meanings. Which is one reason I'll probably move away from a clear table layout in the app (see #71 ). Though there is more space on a desktop, so my vertical idea is not the best solution here.

rizhenkov commented 2 years ago

@0xpr03 understand you about multiple meanings. But this UX regarded strongly from the main app idea:

  1. training with new words
  2. storing dictionary

In the 1st case, the multiple meanings is not so important (i think). It may be realized with some delimiter symbol. While 2nd case requires two-level workflow for each row.

0xpr03 commented 2 years ago

training with new words

Ah so you intend to implement the trainer too ? Because the easiest thing for that would be to mirror the complete app as a web application, implementing everything based on webstorage and then using the official app sync protocol. So no live fetching of data.

storing dictionary

That was my first reason for a web view.

rizhenkov commented 2 years ago

No, I talking about the main android app purpose: vocabulary trainer or dictionary notebook.

If it is a trainer - there is not so important to use "Multi meanings". Because, when human learning foreign language, he define the main meaning of word for himself and trying to remember this. Other meanings are learned later as "second layer" of knowleges.

mawoka-myblock commented 2 years ago

@rizhenkov I wouldn't use php for the frontend, I'd just use a frontend-lib, like svelte.

0xpr03 commented 2 years ago

If it is a trainer - there is not so important to use "Multi meanings". Because, when human learning foreign language, he define the main meaning of word for himself and trying to remember this. Other meanings are learned later as "second layer" of knowleges.

That may be the case but we support adding multiple meanings explicitly, so that should be supported in the web view.

0xpr03 commented 2 years ago

Also don't forget that some people use this for other stuff than learning vocabulary. Like remembering definitions, so that's totally fine.

rizhenkov commented 2 years ago

@mawoka-myblock Of course, because the PHP - is the backend-only language.

@0xpr03 ok, I will update mockup soon and will propose the UX to workaround

0xpr03 commented 2 years ago

To give a little sign of life I made the planned backend public.

There is a public API intended for browsers/webpages inside src/lists/ and src/users. I intend to add API documentation sooner or later. For now this can be used to get an idea how things could work and how an SPA can be made around that.

The primary design goals for this backend are:

It's in https://github.com/0xpr03/vta_backend

* the required QR-Scanning login mechanism is still missing.