Comments (10)
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.
Ok, that seems to was the bug. Works again in my dev-version.
from kptncook.
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.
bump, same issue here with mealie v1.1.0
from kptncook.
Released 0.0.18 - lets see if it is fixed now :).
from kptncook.
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.
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:
from kptncook.
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.
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.
Works flawlessly now! Thank you guys very much!
from kptncook.
Related Issues (20)
- Remove explicit dependency on click < 8.1
- Additional information on kptncook API HOT 5
- Get username / password from password manager
- Rename confusing http command
- Mealie Read Timeout
- TypeError on every CLI call HOT 2
- Mealie API version not clear HOT 1
- handling non-parsable recipes HOT 5
- PydanticImportError HOT 2
- Error retrieving kptncook access token HOT 7
- Fetch recipes based on different api endpoints
- Cannot sync with mealie when having recipes from other source HOT 8
- TemplateNotFound: paprika.jinja2.json HOT 3
- several errors HOT 7
- Validation error for recipes HOT 2
- No Step-Images after "sync-with-mealie" version 1.2.0 HOT 1
- Error on mealie sync HOT 5
- Docker Container
- Ingredients list enhancements
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 kptncook.