Coder Social home page Coder Social logo

noeldemartin / umai Goto Github PK

View Code? Open in Web Editor NEW
28.0 6.0 5.0 9.6 MB

Offline-first Recipes Manager

Home Page: https://umai.noeldemartin.com

License: GNU General Public License v3.0

JavaScript 0.17% HTML 83.53% Vue 5.73% TypeScript 10.28% CSS 0.29%
offline-first pwa recipes-app solid solid-app solid-protocol vue

umai's Introduction

Umai CI

Umai logo

Umai is a simple Recipes Manager to collect all your precious recipes.

  • ๐Ÿ“— Create your own cookbook.
  • โœจ Import recipes from any website.
  • ๐Ÿง™ Adjust ingredient quantities automatically.
  • ๐Ÿ‘จโ€๐Ÿณ Share recipes with your friends.
  • ๐Ÿ“ฑ Use it completely offline (it's an offline first PWA!).
  • ๐Ÿ” Keep data safe in your Solid POD.

Under the hood

If you're curious to learn how this came to be, I've been keeping a development journal: Implementing a Recipes Manager using Solid.

There is currently no documentation for developers, but you can get started by learning its main technologies:

Attributions

umai's People

Contributors

noeldemartin avatar olgasan9 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

umai's Issues

Error with Chinese title

Basically, if you enter any Chinese title, it will refuse to save.
For example, put ๅœŸ่ฑ† (potato) there, and click save. Error will show up:

Something went wrong, but it's not your fault. Try again!

Opening details gives:

Failed getting parent directory from 'solid://recipes/'

... (lots of seemingly stack trace text)

But if the title starts with something else, it will not be a problem. Also, turning a title of an existing recipe can save successfully.
Chinese in other fields don't seem to be a problem, at least for now.

I assume this is due to some mechanism related to determining the ID of the recipe node in RDF?

ESS Support

Very nice work! In particular I wanted to highlight that you have great interfaces error handling in Solid.

I have tried this against ESS and CSS. Against CSS this runs very smoothly; but when I try and use this with an ESS instance (using PodSpaces https://login.inrupt.com/) then I get the "Something went wrong" page with the error.

Error: User profile went missing

refreshUserProfile@https://umai.noeldemartin.com/assets/main.952338c0.js:113:302948

I clicked the "Send Error Report" button so hopefully that means you also recieved something in sentry.

I also tried clicking "Report in GitHub" but that just seems to redirect back around to the "Something went wrong!" page after a few redirects.

Error: https://dietercasier.solidcommunity.net/profile/card#me is not a valid webId.

After login with another solid pod I was able to create a cookbook but I was not able to save a recipe, also I kept on being disconnected. Any idea why?

Error details:

Error: https://dietercasier.solidcommunity.net/profile/card#me is not a valid webId.
    at https://umai.noeldemartin.com/assets/main.8f09a7a2.js:113:43062
    at f (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.8b1f171f.js:1:43188)
    at Generator._invoke (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.8b1f171f.js:1:42976)
    at Generator.next (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.8b1f171f.js:1:43617)
    at Gw (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.8b1f171f.js:1:62078)
    at a (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.8b1f171f.js:1:62284)

Error: Can't create type index without a writable profile document

After login with my solid pod I was not able to create a cookbook, do you know what went wrong?

Error details:

Error: Can't create type index without a writable profile document
    at https://umai.noeldemartin.com/assets/main.8f09a7a2.js:113:46495
    at f (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.8b1f171f.js:1:43188)
    at Generator._invoke (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.8b1f171f.js:1:42976)
    at Generator.next (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.8b1f171f.js:1:43617)
    at Gw (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.8b1f171f.js:1:62078)
    at a (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.8b1f171f.js:1:62284)
    at https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.8b1f171f.js:1:62345
    at new Promise (<anonymous>)
    at https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.8b1f171f.js:1:62224
    at uh (https://umai.noeldemartin.com/assets/main.8f09a7a2.js:113:47209)

"Back to cookbook" navigates to authorization page

  1. I visit Umai and sign in
  2. Go to a recipe page
  3. Refresh the page (F5)
  4. -> I land on the authorization page of my CSS instance and authorize again
  5. I am back on the recipe page
  6. I click "Back to cookbook"
  7. Instead of going back to the cookbook I am back on the CSS authorization page

Beta Feedback

I just tagged the v0.1.0-beta.0 version, and the app is ready for production! You can start using it at umai.noeldemartin.com.

However, there are still some rough edges I'd like to polish before the initial release. I have started using it myself to manage my recipes, and it shouldn't be long before I release it for real. In part, it will depend on the feedback I get about this version. Do you think it's ready?

If you want, I encourage you to start using it and share your feedback in this issue. But I don't think it's ready for prime time, so I would refrain from sharing it with others.

Here's a list of things I'd like to do before the release:

  • UX/UI fine tunning.
  • Documentation.
  • Stable releases of related libraries (soukai, @noeldemartin/utils, etc.).
  • Publish CRDT vocab (this is ongoing at solid/vocab#69, but seeing how that's going it's very likely that I end up using my own domain).
  • Interoperability review.
  • A11y review.
  • Improve error handling (communicate that the app doesn't work in Firefox private mode, etc.).
  • Rethink proxy mechanism (you'll see what this is if you try to import some recipes from the web).

PS: If you want to try the bleeding edge version, you can get it at umai.netlify.app.

Configurability through uri

If app can be configured through uri, by providing storage root, user's webid, etc, then that can serve as an api for integrating, launching the app from many contexts with desired configuration.

Thanks for your work.

Image Upload Button is blocked by long title on mobile

This is especially annoying if you import a recipe from the web and then want to add an image. The titles are often quite long and already set from the import. The image upload button is right behind the text and clicking on it will just set the cursor in the text. The button itself is not reachable.

Screenshot

Updated images don't use recipe permissions

When someone creates a new recipe with an uploaded image and makes it public, it will work properly and change both the recipe and the image's permissions. But If the image is updated once the recipe is already public, it won't add the public permissions to new images.

Until this is fixed, a workaround is to make a recipe private and then public again. Or it's always possible to change document/file permissions using other apps.

Feature: Add multiple ingredients and instructions at once

Some websites do not provide JSON-LD data of their recipes and one has to copy the text by hand to Umai.

To simplify this it would be a huge improvement if umai supports adding multiple items (ingredients or instructions) at once.

E.g. if you copy a whole list of incredients they are separated by line break in the clipboard. When pasting them into umai, instead of pasting the whole text in one list item, umai should create a list item for each line in the clipboard.

A similar feature can e.g. be found in Trello checklists and I like it a lot there.

Print to PDF?

Congratulations @NoelDeMartin. Umai has reached 0.1.0. just recently and I'm already able to make good use of it. I'm racking my brains in a panic trying to figure out how to print this to PDF. I exported the json-ld and made use of python3-pygmatize to hightlight the json fields and then was able to output it to some htmo by following the directions here. But in my rush to get this to the chef of our restaurant I thought I'd reach out on this Saturday (no doubt a day off for most) and see if anyone has a quick fix. Also, I thought it would be a nice feature to have in general, so perhaps it's already in the pipeline.

Another enhancement I'm hoping for is functionality that allows pictures for the recipes. If I knew how to program this myself and if I weren't in a tizzy I'd offer this as my contribution. But for now I can only offer it as a suggestion.

Support ACP

At the moment, Umai only supports managing permissions using WAC.

The main reason for that is that I've written the communication with the POD myself, and I still haven't gotten around to read the ACP spec (and it looks a lot more complicated than WAC).

As far as I know, ACP is only used by ESS, and the spec is still a draft. So, for the time being, I don't think I'm going to implement it. But I'll leave this issue open in order to track its progress (if any).

This is not necessarily a problem, though. The point of Solid is that you can combine applications to get different capabilities. And I would think that most POD providers have an interface capable of editing permissions for the protocol they are using. If not, I think you should ask your provider for this feature, because in my opinion that's a core necessity for Solid users (regardless of which apps they are using).

If you're going to update permissions outside of Umai, everything you need to know is that publicly-readable recipes will be considered "Unlisted"; and they will be considered "Public" if they point to a schema:ItemList with a purl:isReferencedBy property.

SoukaiError: Error creating container at https://little-ducky.solidcommunity.net/cookbook/, returned 500 status code

[Please, explain here what you were trying to do when this error appeared]

Connected to a new account on solidcommunity.net. Accepted the /cookbook/ suggestion to create a cookbook and pressed continue, got this:

Stack trace:

SoukaiError: Error creating container at https://little-ducky.solidcommunity.net/cookbook/, returned 500 status code
    at Proxy.value (https://umai.noeldemartin.com/assets/main.1bcb845b.js:99:9402)
    at Proxy.<anonymous> (https://umai.noeldemartin.com/assets/main.1bcb845b.js:99:2495)
    at tryCatch (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.f4aaecaa.js:4:823)
    at Generator.invoke [as _invoke] (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.f4aaecaa.js:4:3070)
    at Generator.next (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.f4aaecaa.js:4:1445)
    at asyncGeneratorStep (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.f4aaecaa.js:5:13881)
    at _next (https://umai.noeldemartin.com/assets/noeldemartin-utils.esm.f4aaecaa.js:5:14106)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.