VocableTrainer-Android icon indicating copy to clipboard operation
VocableTrainer-Android copied to clipboard

Online Account Sync

Open 0xpr03 opened this issue 4 years ago • 13 comments

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.

0xpr03 avatar May 02 '21 19:05 0xpr03

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.

rizhenkov avatar Dec 27 '21 22:12 rizhenkov

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.

0xpr03 avatar Dec 27 '21 22:12 0xpr03

@0xpr03 What you think about something like this?

image

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

rizhenkov avatar Dec 28 '21 08:12 rizhenkov

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

0xpr03 avatar Dec 28 '21 11:12 0xpr03

@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.

0xpr03 avatar Dec 28 '21 11:12 0xpr03

@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.

rizhenkov avatar Dec 28 '21 12:12 rizhenkov

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.

0xpr03 avatar Dec 28 '21 14:12 0xpr03

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.

rizhenkov avatar Dec 28 '21 15:12 rizhenkov

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

mawoka-myblock avatar Dec 28 '21 15:12 mawoka-myblock

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 avatar Dec 28 '21 15:12 0xpr03

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

0xpr03 avatar Dec 28 '21 16:12 0xpr03

@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

rizhenkov avatar Dec 28 '21 16:12 rizhenkov

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:

  • do not require user input for merging changes
  • do not require any email or password for login*
  • do not require clients to be online when editing their data
  • allow multiple users to share a list with each other
  • allow easy self hosting

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

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

0xpr03 avatar Mar 06 '22 18:03 0xpr03