High-quality QR Code generator library in Java, TypeScript/JavaScript, Python, Rust, C++, C.

Overview

QR Code generator library

Introduction

This project aims to be the best, clearest QR Code generator library in multiple languages. The primary goals are flexible options and absolute correctness. Secondary goals are compact implementation size and good documentation comments.

Home page with live JavaScript demo, extensive descriptions, and competitor comparisons: https://www.nayuki.io/page/qr-code-generator-library

Features

Core features:

  • Available in 6 programming languages, all with nearly equal functionality: Java, TypeScript/JavaScript, Python, Rust, C++, C
  • Significantly shorter code but more documentation comments compared to competing libraries
  • Supports encoding all 40 versions (sizes) and all 4 error correction levels, as per the QR Code Model 2 standard
  • Output format: Raw modules/pixels of the QR symbol
  • Detects finder-like penalty patterns more accurately than other implementations
  • Encodes numeric and special-alphanumeric text in less space than general text
  • Open-source code under the permissive MIT License

Manual parameters:

  • User can specify minimum and maximum version numbers allowed, then library will automatically choose smallest version in the range that fits the data
  • User can specify mask pattern manually, otherwise library will automatically evaluate all 8 masks and select the optimal one
  • User can specify absolute error correction level, or allow the library to boost it if it doesn't increase the version number
  • User can create a list of data segments manually and add ECI segments

Optional advanced features (Java only):

  • Encodes Japanese Unicode text in kanji mode to save a lot of space compared to UTF-8 bytes
  • Computes optimal segment mode switching for text with mixed numeric/alphanumeric/general/kanji parts

More information about QR Code technology and this library's design can be found on the project home page.

Examples

The code below is in Java, but the other language ports are designed with essentially the same API naming and behavior.

import java.awt.image.BufferedImage;
import java.io.File;
import java.util.List;
import javax.imageio.ImageIO;
import io.nayuki.qrcodegen.*;

// Simple operation
QrCode qr0 = QrCode.encodeText("Hello, world!", QrCode.Ecc.MEDIUM);
BufferedImage img = toImage(qr0, 4, 10);  // See QrCodeGeneratorDemo
ImageIO.write(img, "png", new File("qr-code.png"));

// Manual operation
List<QrSegment> segs = QrSegment.makeSegments("3141592653589793238462643383");
QrCode qr1 = QrCode.encodeSegments(segs, QrCode.Ecc.HIGH, 5, 5, 2, false);
for (int y = 0; y < qr1.size; y++) {
    for (int x = 0; x < qr1.size; x++) {
        (... paint qr1.getModule(x, y) ...)
    }
}

License

Copyright © 2022 Project Nayuki. (MIT License)
https://www.nayuki.io/page/qr-code-generator-library

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

  • The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

  • The Software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the Software or the use or other dealings in the Software.

Comments
  • Format information generation and placement

    Format information generation and placement

    I'm using qrduino by @tz1 to generate QR codes. In Qrduino, the format information is generated and inserted only after choosing a mask: https://github.com/tz1/qrduino/blob/master/qrencode.c#L523

    In your project (C version) you have:

    	if (mask == qrcodegen_Mask_AUTO) {  // Automatically choose best mask
    		long minPenalty = LONG_MAX;
    		for (int i = 0; i < 8; i++) {
    			enum qrcodegen_Mask msk = (enum qrcodegen_Mask)i;
    			drawFormatBits(ecl, msk, qrcode);
    			applyMask(tempBuffer, qrcode, msk);
    

    which seems to be inserting the format information with drawFormatBits before masking. Your web page here: https://www.nayuki.io/page/creating-a-qr-code-step-by-step

    also suggests inserting the format string before masking: "Draw the actual format bits (adjacent to the finders):"

    To try to find out which approach is correct, I had a look at the spec. According to page 18 of the spec (Information technology — Automatic identification and data capture techniques — QR Code 2005 bar code symbology specification), it says:

    Step 6 Data masking

    Apply the data masking patterns in turn to the encoding region of the symbol. Evaluate the results and select the pattern which optimizes the dark/light module balance and minimizes the occurrence of undesirable patterns.

    Step 7 Format and version information

    Generate the format information and (where applicable) the version information and complete the symbol.

    Can you justify why you are calculating the format information and inserting it before the mask operation from the spec?

    Originally I was going to report this as a bug to Qrduino, but although I don't understand why the format information would be omitted when calculating the penalties, it does look like Qrduino is correct to me from reading the spec. The illustration in figure 23 of the spec also seems to not show the format information when calculating the mask: formatinfo It just has blank white there. This is different from the thing you're showing on the web site, where you show penalties being calculated with the format information in place.

    opened by benkasminbullock 12
  • correction in penalty calculation

    correction in penalty calculation

    hi, I think, that according to the QR standard (at least in the version of 2006), the calculation of then penalties is done a little bit different (it doesn't make much sense, the way they do it, but... still... maybe you want to have a look at it)

    opened by meirumeiru 10
  • Javascript qrcodegen module is browser global only

    Javascript qrcodegen module is browser global only

    It would be nice to also be able to load this module as

    • commonjs module (usage through webpack & browserify bundlers)
    • AMD module and also ensure distribution through npm.

    This project provide some hints on how to provide "universal module definition"

    • https://github.com/umdjs/umd

    To allow usage through commonjs, I just added a line to your code. But it would be better not to have to modify library code.

    Bests, Marc

    opened by amvtek 10
  • Make Java generator as a library

    Make Java generator as a library

    Thanks for this lightweight QR code generator!

    Are you interested in making Java generator as a library? I can add gradle/maven config and make platform specific features (like Android specific feature) if you wish.

    opened by mariotaku 10
  • zbar can't detect and decode the generated QR codes

    zbar can't detect and decode the generated QR codes

    I used your library to create a QR code that encodes "00000". Zbar library can't detect or decode it. Next, I used https://www.the-qrcode-generator.com/ to generate the same text. Now, Zbar can detect and decode it I compared the generated QR codes and they are not same! The first image is the one generated by your library and the second image is the one generated by https://www.the-qrcode-generator.com/.

    library

    http

    opened by zanazakaryaie 8
  • Support for no_std

    Support for no_std

    Hello @nayuki!

    Thank you for qrencode crate!

    I have added some cfgs that allow this crate to be compiled for no_std (no OS) environment. It would be nice if you merge this PR.

    Let me know if you need some changes before merge.

    Thanks in advance!

    opened by lexxvir 8
  • Pixel-perfect rendering

    Pixel-perfect rendering

    There is a competing QR code generator lib (kjua) that can render QR codes on a canvas in a pixel perfect way.

    See https://github.com/lrsjng/kjua/blob/a88369f748926aee8e996e3f720f0f9534c8d86b/src/lib/defaults.js#L5-L6

    And as I use your lib for SVG, I can really see the difference.

    comparison.zip

    AFAIK the lib increases the white space for some time, so it really renders in a better way.

    Maybe you could implement this, too?

    opened by rugk 8
  • Is it possible to set ECI header (encoding hint) when using BYTE mode

    Is it possible to set ECI header (encoding hint) when using BYTE mode

    Hello,

    we are using the javascript version of your library to generate QR code that contains binary data. We read such barcode in an Android application that uses Google Machine vision library (com.google.android.gms.vision.barcode package...).

    The library does not correctly decode the binary payload. Googling around it appears that the machine vision library assumes that binary payload contains UTF8 bytes unless code contains an ECI header providing alternative encoding (in our case ISO-8859-1 will solve the issue). Is there any way we can set such ECI header using your javascript library.

    We thank you for this project, as we found it well documented and easy to use.

    opened by amvtek 8
  • Feature Request: Please consider expanding project scope to include decoding

    Feature Request: Please consider expanding project scope to include decoding

    First off, I really like what you've done with your QR-code-generator project.

    I came across your work while searching (web + GH + BB) for pure python-based programs to handle QR code decoding / encoding. Much as you describe in your writeup [1], I found a lot of projects with sub-optimal dev choices---too many external dependencies, insufficient documentation (internal comments and external manuals / examples), incomplete or unfaithful compliance with Denso-Wave and ISO/IEC 18004 standards (models 1&2)---some don't even implement Reed-Solomon. Anyway, kudos to you for a really clean and concise project:

    • for clearly defined API;
    • for simultaneous / equal coverage across four in-demand languages;
    • for complete coverage of all 40 versions and 4 EC levels;
    • for avoidance of magic constants;
    • for flexible (MIT) license selection; and
    • for sensible choices about what portions of encoding are included in your library (ie, 3-11 of your "generation procedure" [1]) and what are left up to implementation by library user.

    In short, thanks for what you've shared with the O/S community here.

    All that being said, I hope to motivate you to please consider expanding your project to include decoding of QR-Codes. If anything, there's an even more limited ecosystem of open-source QR-code decoders, compared to that of QR-Code encoders. In the python world, at least, there's pretty much only ZBar (or a multitude of projects which depend upon it); and ZBar's last stable release was in 2009, with no code checkins since 2012 (and it doesn't support modern Python). Of course, there's also a Python port of ZXing (from native Java), but ZXing is a large (~70k LOC!), all-encompassing framework. While there are obviously additional decoders in your other target languages (JS, Java, C++), I believe there are similarly fewer choices there, compared to the situation with encoders.

    Given what I can sense of your philosophy with this project, I assume you'd consider any type of QR-code image manipulation (necessary for "full-stack" decoding from the analog world) to be well outside of scope, and I'm not suggesting otherwise as part of this feature request: scope would still exclude image capture, deskewing / perspective-correction / contrast-tuning, and (finally) conversion of pixels into a vector QR-code (ie, SVG). For example, just as you provide the 'to_svg_str()' function in your QRCode class as the final output stage (after which user-code takes over to otherwise manipulate QR codes), perhaps the appropriate scope to accept input for decoding would be a similar 'from_svg_str()' function, or just a logical 2D numeric array (representing input to be decoded). This would leave all bitmap->vector image manipulation external to your library, and instead in user-supplied code (through custom libraries, PIL/imagemagick, opencv3, etc).

    I look forward to your consideration of this feature request, though it significantly expands the scope of your library. If it's beyond the itch you're proverbially scratching here, I'll continue to enjoy using your library for encoding only.

    Thanks, and best wishes for continued success with this (and other) projects!

    [1] https://www.nayuki.io/page/qr-code-generator-library

    opened by bidafiwoc 8
  • UTF-8 encoding without ECI segment indicating deviation from standard encoding

    UTF-8 encoding without ECI segment indicating deviation from standard encoding

    From what I could find online, it seems like the official QR code standard still specifies ISO-8859-1 (Latin-1) as the default text encoding for byte segments.
    However, if I understand the code correctly, this library chose to encode text (that is not alphanumeric or numeric) in a byte segment using UTF-8 encoding without preceding it with a corresponding ECI segment that indicates that an encoding other than ISO-8859-1 was used.

    From QrSegment.java:135:
    result.add(makeBytes(text.toString().getBytes(StandardCharsets.UTF_8)));

    What's the reasoning behind this?
    I understand that a lot of readers nowadays use heuristics (which can fail) to guess the used encoding in the byte segment anyway but doesn't this behaviour make the produced QR codes technically non-compliant?

    Thanks in advance.

    opened by YourMJK 6
  • Allow different dot/square designs

    Allow different dot/square designs

    I have seem some QR codes that for each black square, the squares edges are rounded. This makes for a different and more aesthetic look. Attaching a picture to show what I mean.

    To allow different designs of the squares would be really nice

    2020-02-11 17_19_53-Photos

    opened by jbnjohnathan 6
  • feat(javascript): enable use with NPM

    feat(javascript): enable use with NPM

    1 PR to rule them all 😉 cc @nayuki @AronRubin @abenevaut @zamicol @maltsev https://github.com/nayuki/QR-Code-generator/pull/25 https://github.com/nayuki/QR-Code-generator/pull/102 https://github.com/nayuki/QR-Code-generator/pull/159

    opened by gfortaine 1
  • VBA port

    VBA port

    https://github.com/wqweto/VbQRCodegen

    I suppose these ports are pouring here already :-))

    Can you put links in README to all other language ports being mentioned in the repo's issues so that people don't waste time duplicating effort?

    opened by wqweto 3
  • ignore doc-tests that don't seem to be intended to be compiled and run

    ignore doc-tests that don't seem to be intended to be compiled and run

    Without this patch we get these compilation errors when running cargo test

    $ cargo test
       Compiling qrcodegen v1.8.0 (/home/capitol/project/QR-Code-generator/rust)
    warning: unnecessary parentheses around block return value
       --> src/lib.rs:842:3
        |
    842 |         ( i32::from(core && rh[0] >= n * 4 && rh[6] >= n)
        |         ^^
    843 |         + i32::from(core && rh[6] >= n * 4 && rh[0] >= n))
        |                                                          ^
        |
        = note: `#[warn(unused_parens)]` on by default
    help: remove these parentheses
        |
    842 ~         i32::from(core && rh[0] >= n * 4 && rh[6] >= n)
    843 ~         + i32::from(core && rh[6] >= n * 4 && rh[0] >= n)
        |
    
    warning: `qrcodegen` (lib) generated 1 warning
    warning: `qrcodegen` (lib test) generated 1 warning (1 duplicate)
        Finished test [unoptimized + debuginfo] target(s) in 0.26s
         Running unittests src/lib.rs (target/debug/deps/qrcodegen-c7dbb02aad6a773c)
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
       Doc-tests qrcodegen
    warning: unnecessary parentheses around block return value
       --> /home/capitol/project/QR-Code-generator/rust/src/lib.rs:842:3
        |
    842 |         ( i32::from(core && rh[0] >= n * 4 && rh[6] >= n)
        |         ^^
    843 |         + i32::from(core && rh[6] >= n * 4 && rh[0] >= n))
        |                                                          ^
        |
        = note: `#[warn(unused_parens)]` on by default
    help: remove these parentheses
        |
    842 ~         i32::from(core && rh[0] >= n * 4 && rh[6] >= n)
    843 ~         + i32::from(core && rh[6] >= n * 4 && rh[0] >= n)
        |
    
    warning: 1 warning emitted
    
    
    running 3 tests
    test src/lib.rs - (line 67) ... FAILED
    test src/lib.rs - (line 75) ... FAILED
    test src/lib.rs - (line 56) ... ok
    
    failures:
    
    ---- src/lib.rs - (line 67) stdout ----
    error[E0433]: failed to resolve: use of undeclared type `QrCodeEcc`
     --> src/lib.rs:69:5
      |
    5 |     QrCodeEcc::Medium).unwrap();
      |     ^^^^^^^^^ use of undeclared type `QrCodeEcc`
    
    error[E0433]: failed to resolve: use of undeclared type `QrCode`
     --> src/lib.rs:68:10
      |
    4 | let qr = QrCode::encode_text("Hello, world!",
      |          ^^^^^^ not found in this scope
      |
    help: consider importing this struct
      |
    2 | use qrcodegen::QrCode;
      |
    
    error[E0425]: cannot find function `to_svg_string` in this scope
     --> src/lib.rs:70:11
      |
    6 | let svg = to_svg_string(&qr, 4);  // See qrcodegen-demo
      |           ^^^^^^^^^^^^^ not found in this scope
    
    error: aborting due to 3 previous errors
    
    Some errors have detailed explanations: E0425, E0433.
    For more information about an error, try `rustc --explain E0425`.
    Couldn't compile the test.
    ---- src/lib.rs - (line 75) stdout ----
    error: unexpected token: `...`
     --> src/lib.rs:82:10
      |
    9 |         (... paint qr.get_module(x, y) ...)
      |          ^^^
      |
    help: use `..` for an exclusive range
      |
    9 |         (.. paint qr.get_module(x, y) ...)
      |          ~~
    help: or `..=` for an inclusive range
      |
    9 |         (..= paint qr.get_module(x, y) ...)
      |          ~~~
    
    error: unexpected token: `...`
     --> src/lib.rs:82:40
      |
    9 |         (... paint qr.get_module(x, y) ...)
      |                                        ^^^
      |
    help: use `..` for an exclusive range
      |
    9 |         (... paint qr.get_module(x, y) ..)
      |                                        ~~
    help: or `..=` for an inclusive range
      |
    9 |         (... paint qr.get_module(x, y) ..=)
      |                                        ~~~
    
    error[E0586]: inclusive range with no end
     --> src/lib.rs:82:40
      |
    9 |         (... paint qr.get_module(x, y) ...)
      |                                        ^^^ help: use `..` instead
      |
      = note: inclusive ranges must be bounded at the end (`..=b` or `a..=b`)
    
    error: expected one of `!`, `)`, `,`, `.`, `::`, `?`, `{`, or an operator, found `qr`
     --> src/lib.rs:82:20
      |
    9 |         (... paint qr.get_module(x, y) ...)
      |                   -^^ expected one of 8 possible tokens
      |                   |
      |                   help: missing `,`
    
    error[E0433]: failed to resolve: use of undeclared type `QrSegment`
     --> src/lib.rs:77:12
      |
    4 | let segs = QrSegment::make_segments(text);
      |            ^^^^^^^^^ use of undeclared type `QrSegment`
    
    error[E0433]: failed to resolve: use of undeclared type `QrCode`
     --> src/lib.rs:78:10
      |
    5 | let qr = QrCode::encode_segments_advanced(&segs, QrCodeEcc::High,
      |          ^^^^^^ use of undeclared type `QrCode`
    
    error[E0433]: failed to resolve: use of undeclared type `QrCodeEcc`
     --> src/lib.rs:78:50
      |
    5 | let qr = QrCode::encode_segments_advanced(&segs, QrCodeEcc::High,
      |                                                  ^^^^^^^^^ use of undeclared type `QrCodeEcc`
    
    error[E0433]: failed to resolve: use of undeclared type `Version`
     --> src/lib.rs:79:5
      |
    6 |     Version::new(5), Version::new(5), Some(Mask::new(2)), false).unwrap();
      |     ^^^^^^^ use of undeclared type `Version`
    
    error[E0433]: failed to resolve: use of undeclared type `Version`
     --> src/lib.rs:79:22
      |
    6 |     Version::new(5), Version::new(5), Some(Mask::new(2)), false).unwrap();
      |                      ^^^^^^^ use of undeclared type `Version`
    
    error[E0433]: failed to resolve: use of undeclared type `Mask`
     --> src/lib.rs:79:44
      |
    6 |     Version::new(5), Version::new(5), Some(Mask::new(2)), false).unwrap();
      |                                            ^^^^ not found in this scope
      |
    help: consider importing this struct
      |
    2 | use std::simd::Mask;
      |
    
    error[E0425]: cannot find value `paint` in this scope
     --> src/lib.rs:82:14
      |
    9 |         (... paint qr.get_module(x, y) ...)
      |              ^^^^^ not found in this scope
    
    error: aborting due to 11 previous errors
    
    Some errors have detailed explanations: E0425, E0433, E0586.
    For more information about an error, try `rustc --explain E0425`.
    Couldn't compile the test.
    
    failures:
        src/lib.rs - (line 67)
        src/lib.rs - (line 75)
    
    test result: FAILED. 1 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
    
    error: test failed, to rerun pass '--doc'
    
    opened by alexanderkjall 0
  • Proposal for a new function (C version)

    Proposal for a new function (C version)

    Hello, first of all thanks for this wonderful library!

    At line 210 of https://github.com/nayuki/QR-Code-generator/blob/master/c/qrcodegen.c there is a small script that in my opinion should be turned into a public function that would take the text, minVersion, and maxVersion then return the minimum possible qr code version that could be used for that text. This would be useful when setting the size of uint8_t qrcode[]; and uint8_t tempBuffer[];.

    Thanks in advance, Developer-39

    opened by ghost 1
  • Added full CMake build support and enabled CI

    Added full CMake build support and enabled CI

    Changes:

    • Implemented full CMake support, based on our work:
      • builds, runs unit tests and installs project;
      • generates and exports CMake targets for external projects;
      • generates and exports pkg-config files for external projects;
    • Enabled GitHub actions and enabled CI for testing builds and running unit tests.
    • Removed no longer needed makefiles. CMake will automatically generate them for all supported platforms.

    Build instructions:

    cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS:BOOL=ON -DBUILD_EXAMPLES:BOOL=ON -DBUILD_TESTS:BOOL=ON
    cmake --build build
    

    Installation instructions:

    sudo cmake --install build
    

    Closes #61.

    opened by xvitaly 0
Owner
Nayuki
I implement data structures, algorithms, and file formats, emphasizing on correct logic and readable code. My website has a list of articles describing my work.
Nayuki
An obsidian plugin that allows code blocks executed interactively in sandbox like jupyter notebooks. Supported language rust、kotlin、python、Javascript、TypeScript etc.

Obsidian Code Emitter This plugin allows code blocks executed interactively like jupyter notebooks. Currently, support languages: Rust Kotlin JavaScri

YiiSh 38 Dec 28, 2022
This is a project that is used to execute python codes in the web page. You can install and use it in django projects, You can do any operations that can be performed in python shell with this package.

Django execute code This is a project that is used to execute python codes in the web page. You can install and use it in django projects, You can do

Shinu 5 Nov 12, 2022
A library of high-quality primitives that help you build accessible user interfaces with SolidJS.

Solid Aria A library of high-quality primitives that help you build accessible user interfaces with SolidJS. Primitives @solid-aria/primitives - Expor

SolidJS Community 205 Jan 7, 2023
High-quality, customizable web components for common user interface patterns

Elix is a community-driven collection of high-quality web components for common user interface patterns. Most applications make use of common, general

Elix 699 Dec 19, 2022
Awesome critique of crypto / web3. Curated list of high quality critique plus background. Seek to be as constructive as possible.

Awesome critique of crypto/web3 Awesome critique of crypto/web3, etc. Contributions are welcome. Critique General Stephen Diehl series - https://www.s

Rufus Pollock 1.5k Jan 1, 2023
A tiny JVM (Java Virtual Machine) program written in TypeScript.

jvm-on-typescript A tiny JVM (Java Virtual Machine) program written in TypeScript. This virtual machine specification compliants Java Virtual Machine

Itsu 27 Nov 24, 2022
Gutenberg + Rust + TypeScript

Gutenberg + Rust + TypeScript This is a minimum block plugin template to rapidly get started building WP blocks using Rust + TypeScript. Follow me on

Kevin Batdorf 29 Dec 23, 2022
Rust's Option and Result, implemented for TypeScript.

oxide.ts Rust's Option<T> and Result<T, E>, implemented for TypeScript. Features Zero dependencies, full test coverage and examples for every function

null 331 Jan 3, 2023
Write python code in Solid.js using Pyscript.

PyScript Solid Use PyScript together with Solid.js. Getting Started Installation Install pyscript-solid using npm: npm install pyscript-solid # or yar

Eugene Matsumura 12 Oct 25, 2022
Run Python code directly in the browser.

Run Python code directly in the browser. Try it out! Quickstart Install react-py with: npm i react-py Then, wrap your app in a PythonProvider componen

Eli Lamb 29 Dec 31, 2022
Typescript package compatible with python's pickle loads/dumps

picklefriend Typescript package compatible with python's pickle loads/dumps Installation npm i picklefriend Usage import { pickle } from 'picklefriend

null 4 Oct 27, 2022
Shield is a development framework for circom developers. The core reason is to provide libraries, plugins, and testing tools to ensure code quality and security.

SHIELD Shield is a development framework for circom developers but we plan it to other languages such as CAIRO, SNARKYJS etc. The core reason is to pr

Xord 41 Dec 22, 2022
Very simple full-stack application using React, Java Spring Boot, and PostgreSQL

Very simple full-stack application using React, Java Spring Boot, and PostgreSQL. The API was built following the N-Tier architecture. The goal was to explore and learn more in-depth the development of APIs, the use of Docker and deploying with AWS.

Diego Quintela 0 Apr 23, 2022
Blockchain, Smart Contract, Ganache, Remix, Web3, Solidity, Java Script, MQTT, ESP32, RFID, DHT11,

Blockchain, Smart Contract, Ganache, Remix, Web3, Solidity, Java Script, MQTT, ESP32, RFID, DHT11,

Hajar OUAAROUCH 5 May 24, 2022
Projeto desenvolvido em Angular e Material, para conclusão do curso de extensão em Java

EmpresaFront This project was generated with Angular CLI version 13.0.4. Development server Run ng serve for a dev server. Navigate to http://localhos

Carolina Rodrigues 5 Mar 18, 2022
Nodejs,Expreess,Mongodb,Reactjs,Redux,Java app,Google,Docker,Heroku,...

Tiến độ công việc Team: https://docs.google.com/spreadsheets/d/1BBv4CXNniNjqdIE7tjrG9UM4nprd3NSVy2FX9oaWq0Q/edit#gid=0 Web Online: https://movienetfli

Nguyễn Tiến Tài 10 Sep 17, 2022
Pim 4 Jun 21, 2022
Small TS library to type and safely handle `serde` JSON serializations of Rust enums.

rustie-ts TypeScript library with helper types and functions to type-safely handle Rust's serde JSON serialization of Enums. It can also be used stand

Kelvin Steiner Santos 4 Jul 17, 2022
Convert some JavaScript/TypeScript code string into a .d.ts TypeScript Declaration code string

convert-to-dts Converts the source code for any .js or .ts file into the equivalent .d.ts code TypeScript would generate. Usage import { convertToDecl

Lily Scott 11 Mar 3, 2022