Giter Club home page Giter Club logo

barcodebuddy's Introduction

Barcode Buddy for Grocy

Documentation Status Docker Pulls Oversettelsesstatus

Available for:

About

Pass barcodes to Barcode Buddy. If already in the Grocys system, it will consume/add/open the product there.
If an unknown barcode is passed, the product name will be looked up and a corresponding product can be chosen in the Web UI.
Tags can be saved — if a new product contains the tag in the name, the product will be already preselected in the drop-down list.

Prerequisites

Webserver that supports PHP (e.g. NGINX, Apache) or Docker, a Grocy API key and ideally a barcode scanner or Android device.

Getting Started

Refer to the documentation, on how to install the program.
Installation can be done in a couple of minutes.

Usage

Barcodes can either be manually added to the programm or the process can be automated by grabbing the input from the scanner.

Refer to the documentation, on how to use the program.

Reverse Proxies

If you are using a reverse proxy, please make sure to disable caching, see documentation

Screenshots

Screenshot of the web ui Screenshot of the screen module

Translations

Oversettelsesstatus

Help translate the project on Hosted Weblate.

Contributors

Acknowledgments

License

This project is AGPL3+ licensed — browse the LICENSE.md file for details

Donations

As with all Free software, the power is less in the finances and more in the collective efforts.
I really appreciate every pull request and bugreport offered up by BarcodeBuddy's users, so please keep that stuff coming.
If however, you're not one for coding/design/documentation, and would like to contribute financially, you can do so with the link below.
All help is very much appreciated!

paypal LiberaPay

barcodebuddy's People

Contributors

agsimmons avatar andreheuer avatar bbreton09 avatar biont avatar chadohman avatar comradekingu avatar diplix avatar dominiczedler avatar dylian94 avatar forceu avatar ganneff avatar girlpunk avatar glaaze avatar hanerd avatar kuhlivisj avatar philippch avatar piair avatar pwarren avatar roel-de-vries avatar sdt16 avatar teagan42 avatar teddybeermaniac avatar vondit avatar weblate avatar wisdomwolf 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  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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

barcodebuddy's Issues

Ability to use a phone's camera

Would be great if I could use my phone to scan barcodes, so the API querying adds products I have in my pantry. This is really useful for your first time using Grocy, since you would need to manually type each product's name.

Push message to URL

I want to push vocal message to Alexa, do you think it possible to add URL in option who send result of scan.
Exemple if i scan the result is :
2020-03-29 17:17:40: Product found. Consuming 1 Unité of Gaufre de Liège Lotus Chocolat x5 - 259g. Barcode: 5410126812473

I want send à request like this : https://myip/Api.php?message="Consuming 1 Unité of Gaufre de Liège Lotus Chocolat x5 - 259g"

Responsive table layout

If a product is found with a very, very long name, it will essentially break the table layout entirely since the first column now takes up all space, making it very hard to access the controls.
table

The same applies for the select-field of a product that's already created

A bit of CSS would help limit the maximum width of the table columns, but while we're at it, it would be great if the tables would respond better to different display width and mobile views

BarcodeBuddy API does not stay in the set mode

I’m using the BarcodeBuddy API with Apple Shortcuts. My understanding is that when I want to mark an item as purchased I first need to set the mode to STATE_PURCHASED then add the barcode.

image

When trying to mark an item as purchased I first call the set mode API I receive a successful response.

image

For testing I read the mode back to check that it is set correctly. When I do this I see that I am again in mode 0 STATE_CONSUME.

image

Am I using the API incorrectly, or is there an issue here?

extensible feedback system

i’m using barcode buddy with a phone-barcode-scanner (calling barcodebuddy via a http request) and hacked/extended the api.inc.php and processing.inc.php files to add feedback for certain actions. in my case i want to let my personal assistant (snips) say „changed mode to add“, „cucumber added“, „water consumed“.

i wrote a function function snipsSay($text) {} that i call in processNewBarcode:

        saveLog("Set state to consume", true);
        sendWebsocketMessage("Set state to consume", $websocketEnabled);
        snipsSay('Bestand Verbrauch');

it’s not to hard to add my code after each release of barcodebuddy, but i was wondering if there could be a more general approach for that. you just extended processing.inc.php for websocket messages, someone else might like to send a http request to a buzzer or other text to speech systems.

any idea for a general approach or extensibility without making to much of a fuzz?

Table adapts to resolution

image
Would it be possible to have all of the options in each row fit into the table?
In capture as you can see it is not possible to clic create or delete

Question: Can I scan codes on mobile?

I have barcode buddy running, as well as grocy. In the settings pane I can see

Successfully connected to Grocy, valid API key.

and

Websocket server is running.

So hopefully my install is all good.

I'd like to be able to scan the barcodes using my phone, is this possible?

BB Screen not receiving barcode from BT scanner

Hi there,

BB Screen is Connected however stays on "Waiting for barcode..." when I scan something with my bluetooth scanner in HID (keyboard input) mode on my Raspberry Pi running Rasbian and Chromium.
The scanner is working correctly as I can choose "Add barcode" on the main screen and it will input the barcodes into the resulting text box.

Am I doing something wrong? Thanks..
2019-11-10 00_34_57-10 0 20 2 (raspberrypi) - VNC Viewer
2019-11-10 00_34_37-10 0 20 2 (raspberrypi) - VNC Viewer

Respect qu_factor_purchase_to_stock when adding to stock

Hi and thank you for this cool addon!

When creating a product in grocy, you have the option to specify a purchase quantity unit as well as a stock quantity unit. You can also specify a factor that gets applied when you use Grocy's web UI.
This is useful for example to have a carton of eggs as a barcode and scanning it will add 6 eggs, but when consuming you want to consume one egg at a time.

The api exposes this factor as qu_factor_purchase_to_stock. It would be cool if Barcode Buddy could respect this factor when in "Add" mode. Currently, one item of stock is added, regardless of the value of this factor.

Barcode Buddy Android APP issues

Hi, first of all, thanks for developing this!

I have tried to use the Android App, but I was unable to make it work.

First issue was that sanning the QR Code shown an error stating: Invalid QR Code, no setup info found.
I was expecting this to auto-configure the app (setting API URL, protocol, port, and key) as it is can be guess from the documentation, however it seems it only provides the API Key.

After that, the "CONNECT" button was shown.
I would expect some help to understand what I was supposed to type there, but I've tried entering the API URL but two more errors occurred:

If an HTTP URL was entered, it failed stating that "cleartext communications not permitted by network security policy".

If an HTTPS URL was entered, it failed stating that "Trust anchor for certification path not found".
I'm using a self-signed certificate and CA is properly installed on Android device.

Hope this helps to improve the app and make it more usable.

Thanks in advance!

Feature-request: Add colruyt.be

Hello,

I was wondering if it is possible to add a major store-chain of my country.

I've done some digging with insomnia and got to this :

https://cogomw.colruyt.be/cogomw/rest/nl/8/articles/search.json?barcode=5400141398380&oAuth=<oAuth_token>

and it would return:
{ "params": [ { "string": "barcode", "string-array": [ "5400141398380" ] }, { "string": "service", "string-array": [ "search" ] }, { "string": "languageCode", "string-array": [ "nl" ] }, { "string": "oAuth", "string-array": [ "<oAuth-token>" ] }, { "string": "version", "string-array": [ "8" ] }, { "string": "type", "string-array": [ "json" ] } ], "status": { "code": 0, "meaning": "SUCCESS" }, "data": { "@class": "colruyt.cogomw.bo.ArticleInfo", "searchResults": [ { "colruyt.cogomw.bo.RestTreeBranch": { "id": "-1", "description": "Zoekresultaat" }, "list": [ { "id": "42681", "brand": "BONI S.", "description": "Al.pollakf. graatl. MSC", "content": "5st 800g", "overviewImage": "/step/JPG/JPG/200x200/std.lang.all/06/76/asset-1890676.jpg", "units": [ "S" ], "defaultUnit": "S", "price": "5,99", "priceUnit": "st", "unitPrice": "7,49", "unitPriceUnit": "kg", "discountPrice": "5,39", "discountPriceUnit": "st", "discountQuantity": "3", "discountSalableWeightCode": "S", "discountSalableQuantity": "3", "priceFunction": "function(q,w){return Math.round(q*[5.99,5.39][q<3.0?0:1]*100)/100}", "saleable": true, "defaultQuantity": "1", "ficEnabled": false, "isLactoseFree": false, "isGlutenFree": false, "branchId": "165" } ] } ] } }

Could this be added as a plugin ?

I'm however not that great at coding.

Thanks for reading,

XtremeCoder007

api won't connect

api is not found.

localhost/api takes you to grocy api.
localhost/api/ errors out on grocy api

so when entering them into barcode buddy api neither works.

barcodebuddy error while connecting gives the following error
Unable to connect to API: Could not connect to server

note: running both in docker compose to make sure they both applications are in the same network.

Feature request: Cache expiration date when unkown barcode is passed

First of all, thank you for the amazing work on this project! It's been extremely useful for me.

I'm using the new API added in 0d7eea7 to pass expiration dates along with each barcode to BarcodeBuddy, via a script that collects input from both a barcode reader and a wireless numpad.

This works well for already associated barcodes. However, one issue I noticed is that the expiration date is dropped for unknown barcodes. In that case, my workflow ends up being: (1) scan item, (2) enter expiration date, (3) notice in BarcodeBuddy UI that barcode is unknown, (4) create new product in UI, (5) add item, (6) consume item, then (7) scan item again in order to set the expiration date correctly.

Would it be possible to store the expiration date to the db when calling the insertUnrecognizedBarcode function?

I realize this won't be perfect in the case where $amount > 1. But a reasonable solution may be to for example keep the first or last expiration date and assign to all the added items when the unrecognized barcode is resolved.

Duplicate barcode in a new grocy product database

when I scan a new product that I add from Buddy, the barcode increases twice in grocy database.
if i save in grocy the double disappears.
See capture

image

I checked, only one code is sent to the API

In this case i use Scanner Get/Poste android APP. I not have problem every scan.
Unsucess to reproduce from webbrowser request or official Android App.

Reverse Proxy Question

Hi,

I have grocy setup with nginx as a subdirectory and I am just starting to get Barcode Buddy setup.

Do you have any instructions available for configuring for a nginx reverse proxy alongside setting up barcode buddy in a subdirectory?

Ampersand character (&) breaks import into gorcy

Scanning barcode: 02185705
It was identified correctly as: Garlic & herb cream cheese spread

It seems that grocy isn't handling the input correctly (and I'll open a bug there as well) but I think an option to replace special chars with '-' or something would workaround this issue easily.

DB Error: DB_Not_Writable: - Can't get barcodebuddy to work

Error in browser

DB Error: DB_Not_Writable: Database file cannot be created, as folder or database file is not writable. Please check your permissions. Have a look at this link to find out how to do this: How do I make files and folders writable for the web server?

Permissions

drwxrwxr-x 10 red www-data 4096 Apr 15 06:13 barcodebuddy

red@yoga:/var/www/barcodebuddy$ ls -l
total 136
drwxrwxr-x 2 red www-data  4096 Apr 15 06:13 api
-rw-rw-r-- 1 red www-data  2904 Apr 15 06:13 config-dist.php
drwxrwxr-x 2 red www-data  4096 Apr 26 17:39 data
drwxrwxr-x 2 red www-data  4096 Apr 15 06:13 docker
-rw-rw-r-- 1 red www-data  1043 Apr 15 06:13 error.php
drwxrwxr-x 4 red www-data  4096 Apr 15 06:13 example
drwxrwxr-x 8 red www-data  4096 Apr 15 06:13 incl
-rwxr-xr-x 1 red www-data 16573 Apr 15 06:13 index.php
-rwxr-xr-x 1 red www-data 35129 Apr 15 06:13 LICENSE.md
-rw-rw-r-- 1 red www-data  4934 Apr 15 06:13 login.php
-rw-rw-r-- 1 red www-data   129 Apr 15 06:13 logout.php
drwxrwxr-x 2 red www-data  4096 Apr 15 06:13 menu
drwxrwxr-x 2 red www-data  4096 Apr 15 06:13 plugins
-rwxr-xr-x 1 red www-data  2731 Apr 15 06:13 README.md
-rw-rw-r-- 1 red www-data    26 Apr 15 06:13 robots.txt
-rwxr-xr-x 1 red www-data  9789 Apr 15 06:13 screen.php
-rwxr-xr-x 1 red www-data  4703 Apr 15 06:13 setup.php
-rwxr-xr-x 1 red www-data  3249 Apr 15 06:13 wsserver.php

I'm using Caddy as a webserver. I'm not sure where the permissions issue is, as the output doesn't make this clear, and all of /var/www/barcodebuddy has the group www-user.

Consume same quantity as purchased

Copied from Forceu/barcodebuddy-docker#5

When setting a quantity (by scanning the quantity barcode) it works perfectly when purchasing. But it would be great if that was also (optionally) applied to consuming.

Example: Parent product Egg. Child products are Egg boxes of various sizes. Adding number of eggs is easy. But I also consume eggs by box/carton, not egg by egg.

The more "normal" usecase with for example sixpack of cola - the bottles have their own barcode and the pack has its own too.

The best option would be if default quantities could be entered in the UI and also chosen if to apply by purchase and/or consume.

Autocreation of Products

Hey there, I've ran into an a big showstopper using your tool - why does it not create new products even when the UPC is recognized? If I have to add all the Products manually, what's the point of Barcodebuddy recognizing the UPC but dosen't give the product any meta data like producer or something or you can't create a new product from a recognized UPC?

Is something wrong in my settings that barcodebuddy is not allowed to add new products into grocy?
Please tell me where to check if so.

websockets: Disconnected SSL

Hello,
I'm setting up grocy with barcodebuddy on Rancher. I have a L7 Ingress load balancer set up to pipe port 476321 to the Docker container from external port 30502, however I'm still getting a connection refused error.
Is it possible to set up TLS over WS with barcodebuddy to get around having to serve the page over HTTPS?
Thanks!

Websockets error (Synology NAS)

Sorry for having to bother you with another issue. When I try to run the wsserver.php via Terminal, I get the following error:

PHP Warning: Unsupported declare 'strict_types' in /volume1/web/bbuddy/incl/websocket/php-websocket/src/Connection.php on line 3

Warning: Unsupported declare 'strict_types' in /volume1/web/bbuddy/incl/websocket/php-websocket/src/Connection.php on line 3
PHP Parse error: syntax error, unexpected ':', expecting ';' or '{' in /volume1/web/bbuddy/incl/websocket/php-websocket/src/Connection.php on line 80

Parse error: syntax error, unexpected ':', expecting ';' or '{' in /volume1/web/bbuddy/incl/websocket/php-websocket/src/Connection.php on line 80

Error looking up product by barcode

When I try to look up a barcode, I get the error "Error looking up product by barcode" in the index.php. Is there anything I have to do to make it work?

Add to wiki how it looks up product information

I was wondering how this looked up product information. I know there is upcindex.com and nutritionix.com. I was wondering whether there was some kind of client server setup to aggregate everyone's entries, or whether it pulled from one of these or similar commercial services?

How to grab input on a different host

I have barcodebuddy running on my main server.

This works well when I use my android phone, however would it be possible to run grabInput.sh/py on a different host and send post messages to the main server?

I want to use for example a Rpi to connect to a bluetooth barcode scanner. What do I need to install on the raspberry pi? do I only need the script? I am confused with this variable "SCRIPT_LOCATION: Replace with the location where your index.php file is located"

API redirecting to login.php when using examples in API doc

curl -v -X GET -H "BBUDDY-API-KEY: **KEY**" "https://**DOMAIN**/api/state/getmode"

*   Trying **SERVER IP...**
* TCP_NODELAY set
* Connected to **DOMAIN** (**SERVER IP**) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Unknown (8):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Client hello (1):
* TLSv1.3 (OUT), TLS Unknown, Certificate Status (22):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=**DOMAIN**
*  start date: Apr 26 15:11:49 2020 GMT
*  expire date: Jul 25 15:11:49 2020 GMT
*  subjectAltName: host "**DOMAIN**" matched cert's "**DOMAIN**"
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* TLSv1.3 (OUT), TLS Unknown, Unknown (23):
* TLSv1.3 (OUT), TLS Unknown, Unknown (23):
* TLSv1.3 (OUT), TLS Unknown, Unknown (23):
* Using Stream ID: 1 (easy handle 0x556bafa9c710)
* TLSv1.3 (OUT), TLS Unknown, Unknown (23):
> POST /api/action/scan HTTP/2
> Host: **DOMAIN**
> User-Agent: curl/7.58.0
> Accept: */*
> BBUDDY-API-KEY: **KEY**
>
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS Unknown, Unknown (23):
* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
* TLSv1.3 (OUT), TLS Unknown, Unknown (23):
* TLSv1.3 (IN), TLS Unknown, Unknown (23):
* TLSv1.3 (IN), TLS Unknown, Unknown (23):
* TLSv1.3 (IN), TLS Unknown, Unknown (23):
< HTTP/2 302
< cache-control: no-store, no-cache, must-revalidate
< content-type: text/html; charset=UTF-8
< expires: Thu, 19 Nov 1981 08:52:00 GMT
< location: login.php
< pragma: no-cache
< server: Caddy
< set-cookie: PHPSESSID=**COOKIE**; path=/; SameSite=Lax
< status: 302 Found
< content-length: 0
< date: Sun, 26 Apr 2020 22:38:10 GMT
<
* Connection #0 to host **DOMAIN** left intact

Feature Request: Home Assistant Addon

It would be great if adding this for use with the Grocy Addon with Home Assistant was as easy as adding this as an addon and linking the two together.

Enhancement: Create new Grocy product after scanning barcode

I’ve installed barcode buddy on my synology nas. I’m not using a scanner at the moment just trying to use the examples you provided in the readme. I tried a Cheerios barcode using showui&add and it found the barcode. I can’t seem to get it to add to grocy though. I clicked add but nothing happened. I’m not sure if I put the api credentials in correctly. When I go to the rest api documentation I see the server listed there. Do I list that whole thing? I have grocy installed via the hassio package.

URL Call does not respect BarcodeBuddy State

I'm trying to add stock, I've edited the example python script slightly to make URL calls instead of trying to run PHP directly, since my instance of nginx is in a docker container and isn't directly available. I can't just run the python script in the docker image, as my barcode scanner is plugged into a rPi and I'd need to pass through USB.

I've added the line, requests.get('http://URLHERE/index.php?add='+data), and commented out the os.system call.

Unfortunately, when I put Barcode Buddy into Purchase Mode, when I scan a barcode following this it still consumes stock. I've tested using a os.system call to docker, which then runs a call to the php binary to process the barcode, which works correctly.

Not working with URL Call using requests:
2019-10-17 15:59:18: Product found. Consuming 1 Piece of San Pellegrino Aranciata Sweet Red Orange. Barcode: 8002270706523
2019-10-17 15:59:14: Set state to Purchase

Working with os.system
2019-10-17 16:03:19: Product found. Adding 1 Piece of San Pellegrino Aranciata Sweet Red Orange. Barcode: 8002270706523 [WARNING]: No default best before date set!
2019-10-17 16:02:30: Set state to Purchase

It'd be really handy if Barcode Buddy recognised what state it was in, when adding a barcode via the URL.

504 Gateway timeout

I am running this on ubuntu 18.04 using nginx, php 7.3, sqlite3, and php7.3-curl. When I try to do the setup for grocy, i receive a 504 Gateway Time-out error.

Here is my nginx config on the barcode buddy server:

server {
        listen 80;
        access_log /var/log/nginx/bar_access.log;
        #Uncomment the next 4 lines if you are using SSL
        #listen 443 ssl;
        #listen [::]:443 ssl;
        #ssl_certificate /etc/letsencrypt/REPLACEME/fullchain.pem;
        #ssl_certificate_key /etc/letsencrypt/live/REPLACEME/privkey.pem;

        #Replace with correct root
        root /var/www/html/barcodebuddy/;
        index index.php index.html index.htm;

        client_max_body_size 20M;
        client_body_buffer_size 128k;

        server_name domain.com;

        location / {
                try_files $uri $uri/ =404;
        }


        #Uncomment if you are using reverse-proxying websockets (to add SSL)
        location /screen {

            proxy_pass http://localhost:47631;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #
        #    # WebSocket support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_connect_timeout 1d;
            proxy_send_timeout 1d;
            proxy_read_timeout 1d;
        }
        location ~ /barcodebuddy.db {
                deny all;
        }


        #You might need to replace the version with your version
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}

This is behind another reverse proxy server, here is my nginx reverse proxy config.

server {
    listen 80;
    server_name domain.com;
    return 301 https://$server_name$request_uri;
}

server {
   listen 443 ssl;
   server_name domain.com;
   client_max_body_size 0;
   location / {
      proxy_pass http://192.168.86.37/;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;
     }
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

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.