Git Product home page Git Product logo

Comments (10)

alexdetsch avatar alexdetsch commented on June 12, 2024 2

Ok, I investigated a little bit. The bug is, that while updating the recipe after uploading all the assets (step-images), we currently don't have the assets-node in our json that gets uploaded. Unfortunately, it seems, that mealie started to want a list of all assets with name and filename and icon. Otherwise it deletes all assets that are not included in that list.
So "just" adding a list of all our uploaded assets should fix it. I'll try to write a PR together later today or tomorrow.

Edit: It seems like the aforementioned assets-node is already included in the kptncook-importer, but never filled?

(I just came to this as I stopped the sync-with-mealie-process just in the middle of one recipe, where some of the step-images already where successfully uploaded, but the recipe-json wasn't updated yet. And of course some analysis of the traffic from the webfrontend)

from kptncook.

alexdetsch avatar alexdetsch commented on June 12, 2024 2

Ok, that seems to was the bug. Works again in my dev-version.

from kptncook.

slothful-vassal avatar slothful-vassal commented on June 12, 2024 1

Hello,

I wish you a happy new year :)

I had the same issue. Because I'm not familiar with python and need a Android app allowing me to push the recipes directly out of KpntCook, I have re-written it as flutter app: kptn_sync. Maybe it can help you.

Regards.

from kptncook.

barrio5 avatar barrio5 commented on June 12, 2024 1

bump, same issue here with mealie v1.1.0

from kptncook.

ephes avatar ephes commented on June 12, 2024 1

Released 0.0.18 - lets see if it is fixed now :).

from kptncook.

FXSZ avatar FXSZ commented on June 12, 2024

And here is the output from "kptncook sync-with-mealie":

kwargs:  {'name': 'Grünkohl-Salat mit knusprigem Halloumi', 'notes': [RecipeNote(title='author comment', text='Salat mit Halloumi on top ist nie ein Flop!')], 'nutrition': Nutrition(calories=762, fat_content=None, protein_content=None, carbohydrate_content=None, fiber_content=None, sodium_content=None, sugar_content=None), 'prep_time': 30, 'cook_time': 0, 'recipe_yield': '1 Portionen', 'recipe_instructions': [RecipeStep(title=None, text='Alles parat?', ingredientReferences=[], image=Image(name='REZ_3502_01.jpg', type='step', url='https://kptncookmobile2.herokuapp.com/image/656863685b0000497be72e56?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Zitrone halbieren und Saft auspressen.', ingredientReferences=[], image=Image(name='REZ_3502_02.jpeg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/609144e0410000a8031f4000?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Kapern fein würfeln.', ingredientReferences=[], image=Image(name='REZ_3502_03.jpg', type='step', url='https://kptncookmobile2.herokuapp.com/image/656863685b0000497be72e57?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Knoblauch schälen und reiben.', ingredientReferences=[], image=Image(name='REZ_3502_04.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/642bdf8b4d0000a903d3d0ef?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Für das Dressing Tahin, Zitronensaft (1/2 TL p.P.), Knoblauch, Kapern, Kapernlake (1/2 TL p.P.), Dijon Senf, Salz, Pfeffer und einen Spritzer warmes Wasser (1 TL p.P.) in einer kleinen Schüssel mischen. Zutaten mit einem Schneebesen glatt rühren. Wenn das Dressing zu dickflüssig ist, kann nach und nach ein Spritzer Wasser hinzugegeben werden. Mit Salz und Pfeffer würzen, dann beiseite stellen.', ingredientReferences=[], image=Image(name='REZ_3502_05.jpg', type='step', url='https://kptncookmobile2.herokuapp.com/image/656863685b0000497be72e59?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Grünkohl waschen und trocken schütteln. Den Strunk entfernen und fein hacken.', ingredientReferences=[], image=Image(name='REZ_3502_06.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/6183a9a54b00003e076859ce?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Karotte schälen und grob raspeln.', ingredientReferences=[], image=Image(name='REZ_3502_07.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/60c0ff0f3f000031006eabfa?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Radieschen waschen, putzen und grob raspeln.', ingredientReferences=[], image=Image(name='REZ_3502_08.jpg', type=None, url='https://kptncookmobile2.herokuapp.com/image/6564bc145b000089c5882590?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Rote Bete reiben.', ingredientReferences=[], image=Image(name='REZ_3502_09.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/60c0c53d410000d420f9af7b?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Halloumi quer in Scheiben schneiden.', ingredientReferences=[], image=Image(name='REZ_3502_10.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/61b0c8ae4700002703a253cc?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Kürbiskerne in einer Pfanne ohne Öl goldbraun rösten.', ingredientReferences=[], image=Image(name='REZ_3502_11.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/60c12b074100003700317215?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Kürbiskerne entfernen und die Pfanne auswischen. Hitze auf mittlere bis hohe Stufe stellen und Olivenöl hinzugeben. Sobald das Öl heiß ist, die Halloumi-Scheiben hinzufügen. Auf jeder Seite 1-2 min. braten, bis sie goldbraun sind. Dann aus der Pfanne nehmen.', ingredientReferences=[], image=Image(name='REZ_3502_12.jpeg', type='step', url='https://kptncookmobile2.herokuapp.com/image/65648837590000afbc278152?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='In einer großen Schüssel Grünkohl, Karotten, Radieschen, rote Bete, getrocknete Cranberrys, Dressing, Salz und Pfeffer gut mischen.', ingredientReferences=[], image=Image(name='REZ_3502_13.jpg', type='step', url='https://kptncookmobile2.herokuapp.com/image/656863685b0000497be72e58?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Grünkohl-Salat mit knusprigem Halloumi servieren, mit Kürbiskernen garnieren und genießen!', ingredientReferences=[], image=Image(name='REZ_3502_14.jpg', type='step', url='https://kptncookmobile2.herokuapp.com/image/656863685b0000497be72e5a?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6'))], 'recipe_ingredient': [RecipeIngredient(title='Grünkohl', note=None, unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Grünkohl', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=30.0), RecipeIngredient(title='Karotte', note=None, unit=None, food=RecipeUnit(name='Karotte', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=1.0), RecipeIngredient(title='Rote Bete', note='gekocht', unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Rote Bete', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=50.0), RecipeIngredient(title='Radieschen', note=None, unit=RecipeUnit(name='Bund', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Radieschen', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=0.16), RecipeIngredient(title='Cranberry', note='getrocknet', unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Cranberry', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=15.0), RecipeIngredient(title='Halloumi', note=None, unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Halloumi', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=70.0), RecipeIngredient(title='Zitrone', note=None, unit=None, food=RecipeUnit(name='Zitrone', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=0.25), RecipeIngredient(title='Knoblauch', note=None, unit=RecipeUnit(name='Zehe(n)', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Knoblauch', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=0.5), RecipeIngredient(title='Kaper', note=None, unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Kaper', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=4.0), RecipeIngredient(title='Olivenöl', note=None, unit=RecipeUnit(name='EL', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Olivenöl', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=1.0), RecipeIngredient(title='Salz', note=None, unit=None, food=RecipeUnit(name='Salz', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=None), RecipeIngredient(title='Pfeffer', note=None, unit=None, food=RecipeUnit(name='Pfeffer', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=None), RecipeIngredient(title='Dijon Senf', note=None, unit=RecipeUnit(name='TL', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Dijon Senf', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=0.25), RecipeIngredient(title='Kürbiskern', note=None, unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Kürbiskern', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=12.0), RecipeIngredient(title='Tahin (Sesampaste)', note=None, unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Tahin (Sesampaste)', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=40.0)], 'image_url': 'https://kptncookmobile2.herokuapp.com/image/656863685b0000497be72e5c?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6', 'tags': [RecipeTag(name='kptncook', slug=None, group_id=None, id=None)], 'extras': {'kptncook_id': '656483d05b000089c5882337', 'source': 'kptncook'}}
kwargs:  {'name': 'Rote Thai-Curry-Suppe mit Reisnudeln, Räuchertofu & Pak Choi', 'notes': [RecipeNote(title='author comment', text='Schmeckt einfach fan-thai-stisch!')], 'nutrition': Nutrition(calories=737, fat_content=None, protein_content=None, carbohydrate_content=None, fiber_content=None, sodium_content=None, sugar_content=None), 'prep_time': 30, 'cook_time': 10, 'recipe_yield': '1 Portionen', 'recipe_instructions': [RecipeStep(title=None, text='Alles parat?', ingredientReferences=[], image=Image(name='REZ_3159_01.jpg', type='step', url='https://d2am1qai33sroc.cloudfront.net/image/63c67df6500000b90566609d?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Reisnudeln nach Packungsanleitung zubereiten.', ingredientReferences=[], image=Image(name='REZ_3159_02.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/63b5593e4f0000c507dfcfb6?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Zwiebel schälen, halbieren und in dünne Scheiben schneiden.', ingredientReferences=[], image=Image(name='REZ_3159_03.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/63b55953570000a30723739b?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Knoblauch schälen und durch eine Knoblauchpresse drücken.', ingredientReferences=[], image=Image(name='REZ_3159_04.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/607710606900009100e790fd?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Ingwer schälen und reiben.', ingredientReferences=[], image=Image(name='REZ_3159_05.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/607711f96900009200e7933b?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Öl in einem mittelgroßen Topf erhitzen und Zwiebeln anbraten, bis sie glasig werden. Dann Knoblauch und Ingwer hinzugeben und ca. 1 min. braten.', ingredientReferences=[], image=Image(name='REZ_3159_06.jpg', type='step', url='https://d2am1qai33sroc.cloudfront.net/image/63c67df6500000b90566609e?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Rote Thai-Curry-Paste in den Topf geben und ca. 2 min. kochen, bis die Paste sich dunkelrot färbt.', ingredientReferences=[], image=Image(name='REZ_3159_07.jpg', type='step', url='https://d2am1qai33sroc.cloudfront.net/image/63c67df6500000b90566609f?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Gemüsebrühe und Kokosmilch hinzugeben und gut mit der Currypaste verrühren.', ingredientReferences=[], image=Image(name='REZ_3159_08.jpg', type='step', url='https://d2am1qai33sroc.cloudfront.net/image/63c67df6500000b9056660a0?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Zum Kochen bringen, dann die Hitze auf mittlere bis niedrige Stufe reduzieren und 20 min. köcheln lassen. Dabei gelegentlich umrühren.', ingredientReferences=[], image=Image(name='REZ_3159_09.jpg', type='step', url='https://d2am1qai33sroc.cloudfront.net/image/63c67df6500000b9056660a1?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Pak Choi waschen und abtropfen lassen. Den Strunk abschneiden und die großen Blätter längs halbieren.', ingredientReferences=[], image=Image(name='REZ_3159_07.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/63b55f7f5100004b072ee8f2?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Währenddessen Koriander waschen, trocken schütteln und Blätter abzupfen.', ingredientReferences=[], image=Image(name='REZ_3159_08.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/62e7ed084e0000d805c44fc8?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Räuchertofu würfeln.', ingredientReferences=[], image=Image(name='REZ_3159_17.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/60c13229400000ea0dfca683?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Chilischote in feine Ringe schneiden.', ingredientReferences=[], image=Image(name='REZ_3159_12.jpg', type='step', url='https://d2am1qai33sroc.cloudfront.net/image/63c67df6500000b9056660a2?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Erdnüsse hacken.', ingredientReferences=[], image=Image(name='REZ_3159_10.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/619e1b533b00001d032f5223?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Limette gründlich mit heißem Wasser waschen, halbieren und in Stücke schneiden.', ingredientReferences=[], image=Image(name='REZ_3159_11.jpg', type=None, url='https://d2am1qai33sroc.cloudfront.net/image/619bae253900003403d52cd5?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Nach 20 min. mit Brühe abschmecken und bei Bedarf mit Salz würzen. Tofuwürfel hinzugeben und 2-3 min. köcheln lassen, bis sie gar sind. Dann Pak Choi unterrühren, bis die Blätter zusammenfallen.', ingredientReferences=[], image=Image(name='REZ_3159_15.jpg', type='step', url='https://d2am1qai33sroc.cloudfront.net/image/63c67df6500000b9056660a3?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6')), RecipeStep(title=None, text='Suppe über die vorbereiteten Reisnudeln geben, heiß servieren und nach Belieben mit Korianderblättern, gehackten Erdnüssen und frischem Chili garnieren. Dazu eine Limettenspalte reichen und genießen.', ingredientReferences=[], image=Image(name='REZ_3159_16.jpg', type='step', url='https://d2am1qai33sroc.cloudfront.net/image/63cfb34d520000fc04ff7f93?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6'))], 'recipe_ingredient': [RecipeIngredient(title='Salz', note=None, unit=None, food=RecipeUnit(name='Salz', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=None), RecipeIngredient(title='Reisnudel', note=None, unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Reisnudel', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=60.0), RecipeIngredient(title='Gemüsebrühe', note=None, unit=RecipeUnit(name='ml', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Gemüsebrühe', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=400.0), RecipeIngredient(title='Räuchertofu', note=None, unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Räuchertofu', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=80.0), RecipeIngredient(title='Kokosmilch', note=None, unit=RecipeUnit(name='ml', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Kokosmilch', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=150.0), RecipeIngredient(title='rote Currypaste', note=None, unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='rote Currypaste', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=22.5), RecipeIngredient(title='Pflanzenöl', note=None, unit=RecipeUnit(name='EL', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Pflanzenöl', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=0.5), RecipeIngredient(title='Gemüsezwiebel', note=None, unit=None, food=RecipeUnit(name='Gemüsezwiebel', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=0.5), RecipeIngredient(title='Knoblauch', note=None, unit=RecipeUnit(name='Zehe(n)', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Knoblauch', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=1.0), RecipeIngredient(title='Koriander', note='frisch', unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Koriander', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=2.5), RecipeIngredient(title='Erdnuss', note='geröstet & ungesalzen', unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Erdnuss', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=5.0), RecipeIngredient(title='grüne Chilischote', note=None, unit=None, food=RecipeUnit(name='grüne Chilischote', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=0.5), RecipeIngredient(title='Limette', note=None, unit=None, food=RecipeUnit(name='Limette', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=0.5), RecipeIngredient(title='Ingwer', note=None, unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Ingwer', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=5.0), RecipeIngredient(title='Pak Choi', note=None, unit=RecipeUnit(name='g', id=None, description='', fraction=True, abbreviation=''), food=RecipeUnit(name='Pak Choi', id=None, description='', fraction=True, abbreviation=''), disable_amount=True, quantity=100.0)], 'image_url': 'https://d2am1qai33sroc.cloudfront.net/image/63cfb34d520000fc04ff7f95?kptnkey=6q7QNKy-oIgk-IMuWisJ-jfN7s6', 'tags': [RecipeTag(name='kptncook', slug=None, group_id=None, id=None)], 'extras': {'kptncook_id': '63b550d04e00006307850f25', 'source': 'kptncook'}}
grunkohl-salat-mit-knusprigem-halloumi
rote-thai-curry-suppe-mit-reisnudeln-rauchertofu-pak-choi
Created 2 recipes

from kptncook.

FXSZ avatar FXSZ commented on June 12, 2024

The /recipes/<recipeid>/assets Folder is empty so is assume there is a Problem with saving the generated image.

in V1.0.0-RC1.1 it looks like this:
Bildschirm­foto 2023-12-22 um 10 53 28

from kptncook.

barrio5 avatar barrio5 commented on June 12, 2024

This is awesome! Would the already imported recipes with the missing step images also be fixed or do I need to delete them in order for kptncook to sync them properly again? Thanks a lot!

from kptncook.

alexdetsch avatar alexdetsch commented on June 12, 2024

Would the already imported recipes with the missing step images also be fixed or do I need to delete them in order for kptncook to sync them properly again?

You have to delete them and let kptncook reimport them cause the images are being deleted in mealie with the current version and kptncook won't update/overwrite it.

from kptncook.

barrio5 avatar barrio5 commented on June 12, 2024

Works flawlessly now! Thank you guys very much!

from kptncook.

Related Issues (20)

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.