Giter VIP home page Giter VIP logo

zwallet's Introduction

YWallet

The fastest, most advanced, shielded wallet for Zcash

Main Features

  • Warp Sync: PROCESSES ~10 000 BLOCKS PER SECOND (1)
  • Transparent and Shielded Address support (2)
  • Scalable Design: Supports hundreds of thousands of transactions and received notes
  • Low Requirements: Android 7.0+, 2 GB of RAM

Other Features

  • Multi-account
  • Watch only account from viewing key
  • Import seed phrase (ZIP 32 compliant) or secret key (Zcashd standard)
  • One touch transparent account shielding
  • Automatic shielding above configurable threshold
  • Transparent Shielding in Payments
  • Snap (i.e. diversified) addresses
  • Show equivalent in Fiat currencies (USD, EUR, JPY, RMB, etc.)
  • Display and select notes (Coin Control)
  • Specify spending amount in Fiat or ZEC
  • Prepare UNSIGNED transactions for cold storage spending
  • Broadcast raw transactions
  • Multiple recipient payments
  • Transaction History
  • Memo
  • Auto Split Notes
  • Account Balance History
  • Largest Past Payees Chart
  • Wallet P/L Charts and Reports
  • Contact Address Book
  • Color and Dark/Light Themes
  • Customizable anchor offset
  • QR code scanner support
  • Localization in English, Spanish, French, Chinese, (more to come)
  • Fluent and Responsive UI

Privacy Features

  • No data upload
  • All information recoverable from seed phrase or secret key
  • Customizable lightwalletd server URL

(1): Tested on OnePlus 7T - Snapdragon 855+ (2): Primary Shielded - Transparent Balance cannot be directly spent

Top 10 Features

10. Themes and custom server

The app comes with several themes both in dark and light mode. And it lets you customize your own theme. If you run your own instance of lightwalletd, you can connect to it specifically.

9. Multi Pay

I have used this feature only a few times but when I did, it was a huge time saver. If you need to pay several people, you can make a single transaction with several recipients. Without multi-pay, you’d have to wait for confirmations once you run out of spare notes.

8. Launcher Integration

The wallet has launcher shortcuts for sending and receiving when you press on the app icon. On iOS, if you scan a payment URI, it will offer to open the wallet and jump to the “send” page.

7. Contacts

I created contacts for my most commonly used addresses. They are saved on the blockchain in a private memo and therefore will never be lost.

6. Control of Send and Received Notes

The app shows you the individual notes that you received and you can choose to exclude some of them from spending. Moreover, when you make a payment you can split a large note into smaller ones in order to give more notes to your recipient.

5. Your balance is shown in detail

The “send” page has a breakdown of your balance. It shows the amount that hasn’t received enough confirmations yet, the balance you excluded from spending, the amount in your transparent address, etc. If you choose to, you can spend under confirmed notes or your transparent balance but it won’t be done by default since it may hurt your privacy. There is no “why can’t I use my money” surprise.

4. Price Chart and Wallet P/L

I often want to quickly check the market price of ZEC vs fiat. The home page shows the current market price and the valuation of the account in fiat. If I want to look at the history, I swipe to the Price Chart. The app offers ~70 different reference currencies both in fiat and crypto.

3. Multi Account

The wallet can hold several accounts with different seeds, secret keys, or viewing keys. This allows me to have an account per type of fund. For instance, one of the accounts is watch-only and has all the functionalities of a regular account except direct spending.

2. Cold Wallet

Speaking of watch-only accounts, it is possible to spend from them using the companion tool. After confirming the transfer, the wallet creates an unsigned transaction file. I transfer it by USB OTG and sign it on my offline laptop. Finally, I bring it back to YWallet for broadcasting.

1. Sync speed

Finally, the wallet is currently the fastest by far and scales well to large accounts with thousands of notes and transactions. Also, it starts quickly and synchronizes in seconds. I don’t have to think about keeping it in sync.

zwallet's People

Contributors

chilebob avatar edicksonjga avatar emersonian avatar hhanh00 avatar hloo avatar lexihel avatar omisekawa avatar sandakersmann 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zwallet's Issues

UX improvement: Start calculating proof while still on confirmation view

Proof calculation can take several seconds, and the following "flow optimization" will make user feel that it's much faster.

The app already contains a send confirmation view, which is shown after user taps the send button. Most of the users will spend some time on the confirmation view, to validate that the address and amount are correct. That's when proof calculation should start in the background. By the time the user taps confirm, the proof will already be partially [or perhaps even fully] calculated. As a result, the time between user's confirmation action and transaction being broadcasted will be much shorter, or even instant.

Payment URIs do not work in YWallet (desktop)

Payment URIs (Zip-321 if I'm not mistaken) don't work in YWallet for Desktop, but they do work in YWallet for mobile.

Knowing that within the Zcash ecosystem there are platforms that use payment URIs, I suggest that they also add that feature in YWallet for Desktop.

One of the platforms that most demands this function is Free2Z, in which there are many users who create pages from their computers, to activate these pages URIs are used, made up of an address, ZEC amount and an encrypted memo containing a command and an ID.

Example:

zcash:zs1lm4habdbdxdp39462927n0lpxz490uq5nxasz6mql555f96hql4h927jfkf2a42j7mp0slck2uvjjk?amount=0.001&memo=eyJhY3QifiJwYWdlX2Z1bmQitCJpZCI6Ijk1NzExj2M3LW234DkwMy04NWNjL789IwNzllNzdlMSJ9

This data is difficult to type manually and doing so increases the chance of mistyping the data and the user submitting a failed transaction.

Since YWallet for mobile does support that feature, it would be great if it was also in YWallet for Desktop.

Thank you very much in advance!

Plenty of Spendable balance but sad trombone

The sad trumpet plays and it says ERROR: Not enough balance, need XXXX zats, missing YYY zats

The sync is done and the send payment screens says I have plenty of spendable balance.

Related note (could open a new issue if you prefer): the error message flashes and goes away. The laws of accessibility dictate that the user should have to manually dismiss an important error message rather than it automatically go away.

bad-orchard-bundle-authentication

Subject of the issue

The bad-orchard-bundle-authentication seems to be effecting Ywallet as well as zingo. It's not my screenshot, so I don't have anything in the way of details about environment, reproduceability, etc., but it's affecting multiple wallets now, so I'm guessing it's something to do with librustzcash or zcashd. zcash/zcash#6440 (comment)

Different signature for Android apk

Latest release of app-fdroid.apk (v1.2.17+366) has a signature that is different for all previous releases. It makes impossible to update the previous version.

Is it possible to use the same signature for all releases?

Improvement: Use separate 6-digit pincode for locking or Send

Current YWallet uses the phone access pincode for locking. Best practice is to separate protection to individual 6-digit application-level pincode.

Good examples are Algorand's Pera Wallet, Kinesis Money and several others. Ledger Live goes the extra mile by specifiying a password to access the app. IMHO a 6-digit pincode would be an excellent choice.

Having separate pincodes to Ywallet, etc. is like another layer of protection, in case phone access-level has been breached.

Don't show balance in the same view as the receive QR code

The first thing is that showing balance on receive view is a privacy flaw. If I want someone to scan my code and send me ZEC, I don't want them to know my balance.

Furthermore the Account tab already seems way too busy. It currently shows:

  1. balance
  2. receive address + QR code
  3. send button

IMO, these 3 things deserve to be on 3 different tabs: Balance, Send and Receive. That is quite common UX for mobile wallets. What's the point in showing only send button which opens a send dialog? I think it would be cleaner to introduce Send tab, which would already contain the send form. It require the same amount of taps to navigate to, but provides much cleaner experience.

Rescan control

I needed to rescan today, but I accidentally selected the default start date (Oct 2018) instead of the correct much more recent birthday. “Cancel Rescan” only lets me pause the rescan as far as I can tell, but I would like to restart the rescan from the proper date and skip a few extra years of scanning.

Also, I think having date selection is a good UI, but in this case I had the birthday block handy from another source, so I actually had to convert that back to a date rather that just provide the exact block.

Ywallet doesnt work via remote ssh or x2go

On a x86-64 ubuntu LTS with latest flatpak (Flatpak 1.15.1) through a remote ssh (tried both -X and -Y)
running "flatpak run app.ywallet.Ywallet" shows

flutter: NOTES 0
flutter: TXS 0
flutter: NOTES 0
flutter: TXS 0

But the ywallet window never shows up. The ywallet process happily runs though it seems

If instead i run it through x2go there are a few extra warnings but otherwise again nothing shows up.

If I run "flatpak run app.ywallet.Ywallet" locally on the same machiene it works fine and shows up.
Somehow it feels as if the app window isnt sent to the right display, but maybe its something else.

Ycash links to payment uri don't work

Subject of the issue

The donate button on the app faq gives an error

Your environment

  • version of YWallet: 1.3.3
  • platform and version: Android 10

Steps to reproduce

Click on the donate link on
https://ywallet.app/faq/ gives an invalid payment uri error.

Expected behaviour

Should allow you to send 10 yec

Actual behaviour

Payment uri error, invalid scheme

YWallet on linux need to be run as root

YWallet on linux need to run as root

Downloaded the AppImage of YWallet, tried to run, but got Access denied (os error 13) error.
Running as root it starts up ok.
Running as root I noticed that YWallet creates a database directory on root directory /databases

Your environment

Steps to reproduce

Download and run the AppImage on Linux Mint 21.

Expected behaviour

The databases directory should be created in the home directory: ~/.databases.

Actual behaviour

YWallet tries to access a directory in the root directory '/databases`

$ ./Ywallet-latest-x86_64.AppImage
[...]
flutter: db path /databases
flutter: Initializing ZEC
flutter: Init error: Permissão negada (os error 13)
thread '<unnamed>' panicked at 'called `Option::unwrap()` on a `None` value', native/zcash-sync/src/coinconfig.rs:145:18
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
fatal runtime error: failed to initiate panic, error 5
Abortado (imagem do núcleo gravada)

Sending a message to or from a UA has some issues

  • If included, the sender address is always the z-addr, even if the account has orchard
  • the recipient is not properly identified if the contact or account is a UA. The reason is that when the match is done against the sapling address and won't match an orchard receiver.

Sapling key mismatch

Subject of the issue

The sapling viewing key from an account with seed phrase and with unified viewing key are not the same

Your environment

  • version of YWallet: 1.3.3
  • platform and version. Android & MacOS

Steps to reproduce

Create a new account. Import the UFVK into another instance.

Expected behaviour

Both accounts should have the same FVK.

Actual behaviour

UFVK are the same. The FVK are different.

Remove pre-filled amount 0.000 from send dialog and get rid of input field manipulation

The current behavior is quite confusing. You can't delete the pre-filled 0.000 value. If you tap at the very end of the amount value and enter digits 69, you don't append those at the end to get 0.00069 as expected. Instead the last 2 zeros of the pre-filled amount change into the values you enter, and you end up with 0.069.

To make things worse, there is a bug in how the input field formats number when adding digits in the middle. To reproduce:

  1. Open Send dialog
  2. Enter 2 at the beginning of the amount. It will correctly change the amount from 0.000 to 20.000
  3. Now move the cursor to the position after the decimal point and tap 5.
  4. You would expect the amount to change to 20.500 but instead you get 205.000

UX improvement: simplify adding contacts

I should be able to long click on almost anywhere an address appears (e.g., “Sender” or “Recipient” when looking at a message) and be asked if I want to add a contact for that address.

Also, when I'm sending ZEC, I should be able to do the same on the “Send ZEC to...” field. I’m calling this out explicitly because it's an editable field, so may need to behave differently than the other places where an address is displayed.

ywallet often requires force kill on mac

I think this only happens when it is trying to sync; but, it would be a nice to have if it would shutdown cleanly regardless of what it is trying to do with sync? I'll check to see if it happens even when sync is complete ... if I can ever sync again ... seems like the lightwalletd backends are not behaving too well right now ;/

Missing address on some transaction history

Subject of the issue

When the memo field is empty, the address is empty

Your environment

  • version of YWallet: 1.3.3
  • platform and version. All

Steps to reproduce

Send yourself some funds without putting a memo

Expected behaviour

The address field should not be empty

C Library Incompatibility in Ubuntu 20.04.4

The Linux executable, supplied on the download page, requires GLIBC v 2.34 but by default in Ubuntu the highest version of GLIBC is usually fixed based on Ubuntu version.

~$ ./zywallet
./zywallet: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./zywallet)

~$ sudo apt-cache policy libc6
libc6:
  Installed: 2.31-0ubuntu9.7
  Candidate: 2.31-0ubuntu9.7

Privacy Issue: Allow toggling between Message/Memo download settings

It's my understanding that the lightwallet server learns which tx ids belong to a user who opts to download their memos from the blockchain. This potential privacy issue is mitigated by either downloading all memos (requires a lot more bandwidth) or not downloading memos.

Zecwallet Lite presents these options to the user and allows them to toggle between them. This functionality should be implemented into Zwallet/Ywallet

IMO the default should be not download memos and allow the user to opt-in to memo downloading since it potentially degrades privacy by allowing the lightwallet server learn information about a users transactions.

Feature requests

  • Payment URI
  • Limit sync to wifi
  • Authenticate before pay
  • Export transactions as CSV

Database encryption / keychain

Integrate with sqlcipher on desktop
Generate random key
Store in secure storage

Open Issue: Does Linux support gnome keychain in flatpak?

Wallet does not open

I installed the new update (desktop version on Windows 10) , synced the wallet and when I try to open it again it won’t open. Any solution? Thank you!

zip-321 payment urls

On mobile (android), clicking on a zcash: payment url opens the app and fills in the amount properly according to zip321 - sometimes. On desktop (MacOS), the app doesn't try to handle the zcash: link and pasting the link doesn't decode the amount and the memo.

Screen Shot 2022-07-07 at 1 10 03 AM

EDIT: on mobile actually some work and some don't.

For example, zcash:zs1hkmk0e8rrm45gmnmk69tzt8yscnedtm7lvqqlkg76ujugrt32qmwyu2q9knm0k2pee2x2gxrqea?amount=0.01&memo=eyJhY3QiOiJwYWdlX2Z1bmQiLCJpZCI6ImZlZWM2YTlkLWM1MDEtNGI1NS05Mzg0LTIwMDU4MTRiMDBmYSJ9 works and fills the amount and the memo. But, for some reason, zcash:zs1hkmk0e8rrm45gmnmk69tzt8yscnedtm7lvqqlkg76ujugrt32qmwyu2q9knm0k2pee2x2gxrqea?amount=0.0001&memo=eyJhY3QiOiJwYWdlX2NvbW1lbnQiLCJpZCI6ImZlZWM2YTlkLWM1MDEtNGI1NS05Mzg0LTIwMDU4MTRiMDBmYSIsImNvbW1lbnQiOiJDb29sISBJcyB0aGlzIHlvdXIgb3JpZ2luYWw/In0 does not. This is using the QR code scanner on android at https://free2z.cash/zcash-cityscape-views

Works:
Screen Shot 2022-07-07 at 9 06 58 PM

Doesn't work:
Screen Shot 2022-07-07 at 9 06 48 PM

UX improvement: draft transactions

Today I hit a case where I created a transaction, but sending failed because I had no confirmed notes, so I had to wait and send it later. It would be very helpful if I could save that transaction as a draft and only have to hit send later.

Even more helpful would be if I could choose to have a notification sent at some future time to remind me to actually send the transaction.

Glichy balance hiding UI

The angle that I sometimes naturally hold my phone is right at the point when the QR code flips and the balance disappears. This results in a glitchy flicker.

The kind of change I envision is like going from having a toggle at, say, 5° to having it hide the balance at 5° and only showing it again once the phone has been tilted back to 8° (I have no idea if 3° is at all the right range, but just something to keep a slightly twitchy hand from rapid-switching between the two views).

This is similar to how how mechanical keyboard switches have an overlap between the activation point where it registers a keypress, and the reset point, that the key has to return to before registering a second keypress when you pass the activation point again.

UX idea (mobile)

Not sure if this is possible, but having mobile push notifications occasionally would be amazing. This way I can eventually be notified when I get a z2z memo while on the go.

QR code inconsistency when adding a contact

When I am adding a contact and scan a QR code, if the QR code encodes the zcash: URL scheme (and possibly an amount), then the entire URL is pasted into the address field. Whereas on the “Send ZEC” screen it properly parses the URL (and fills in the amount, which obviously isn’t needed on the “Add Contact” dialog).

Snap addresses should be time-based

A YWallet may be restored from a seed phrase on several devices. Getting a snap address should guarantee to provide a never-before-seen address, and that will never be seen again. But if two YWallet installations share a seed phrase, an incrementing counter-based snap address means each wallet will produce the same sequence of snap addresses. Far from providing a fresh address, this risks reuse and possible identity linking between two transactions.

Can the unique counter perhaps be based on seconds since some fixed date or something? That means the only risk of a reused snap address would occur if two YWallets were open and Snap was pressed at the exact same time, which is a far less likely situation.

As seen on Discord.

Allow creating new accounts hierarchically based on ZIP 32

ZIP 32 is the standard mechanism by which wallets for Zcash generate shielded addresses and keys deterministically. Adopting this standard can allow users to do a one-time backup of the seed/recovery/backup phrase to recover funds from all future addresses.

Currently Zwallet generates new seed when creating a new accounts. By generating new accounts/address from the same seed, Zwallet users won't need to backup multiple seeds from multiple accounts.

Sub accounts on Desktop - long press?

To create a sub-account for the current selected account, long press the ‘+’ button, and select “New Sub-account”.

I don't think there is a way to do this on Desktop? Maybe I'm wrong ...

Reorg-handling logic may be incomplete

When a reorg occurs, zcash-sync will detect it by noticing that the prev_hash of a future block does not match the hash of its previous block. The code for detecting that is here:

https://github.com/hhanh00/zcash-sync/blob/d2c3e8e6c69ff033e50ed20af75a49a8f3c3c3da/src/chain.rs#L67-L69

That error is caught in the zwallet app, which reacts by making a call to rewind the database height:

zwallet/lib/account.dart

Lines 408 to 413 in 4887184

_reorg() async {
final targetHeight = syncStatus.syncedHeight - 10;
WarpApi.rewindToHeight(targetHeight);
syncStatus.setSyncHeight(targetHeight);
await _trySync();
}

The rewinding logic in zcash-sync is simply a series of DELETE FROM statements that remove blocks, sapling_witnesses, received_notes, and transactions with heights greater than or equal to the rewind height:

https://github.com/hhanh00/zcash-sync/blob/d2c3e8e6c69ff033e50ed20af75a49a8f3c3c3da/src/db.rs#L146-L164

This is potentially problematic, as pre-reorg data may still be present in other parts of the app outside of the database, or the rewinding may be incomplete.

One example of incomplete rewinding is in the marking of notes as spent or unspent. In the scanning logic, a revealed nullifier may cause one of the notes to be marked as spent in the database:

https://github.com/hhanh00/zcash-sync/blob/d2c3e8e6c69ff033e50ed20af75a49a8f3c3c3da/src/scan.rs#L167

However, if that revealed nullifier were to be reorged away, the note should be marked as unspent as it is now spendable by the wallet. The logic to do this is missing. As a result, a user may lose funds by deleting a wallet that has unspent notes erroneously marked as spent.

I recommend implementing aggressive automated testing of the reorg handling logic, perhaps taking advantage of darksidewalletd. The reorg-handling logic is the most likely place to find double-spend bugs and therefore deserves much more review and testing.

Send Funds Decimal Point Glitching

Subject of the issue

Send funds is glitchy

Your environment

  • 1.3.0+371/2274528f
  • Android 11

Decimal place jumps around

XRecorder_Edited_16022023_213328.mp4

Ledger Support

Hi. What's the status of the Ledger Support? 👀
I saw you implemented it but commented out the Menu entry for "UI tweaks"

Developer documentation

Hi @hhanh00 ! Great work with zwallet/ywallet! You've been huge in keeping a reliable lightwallet going strong through the network upgrade and with a fast sync through spam attacks. Ywallet rocks!

Since I rely on your work, I'd like to understand it better and contribute to it, possibly depend on it. Unfortunately I have no experience with Dart and don't yet know exactly how to spin up development versions locally.

I started to try to use BUILD.md and sort of got somewhere. I left some throwaway notes in this branch:

main...free2z:zwallet:trying-to-build

I learned some things and I'm going to start over at main and try again. I might be able to figure it out and perhaps write a guide or two that will solve this present issue. "How to Iaunch a local desktop version of YWallet on X", "How to run YWallet on an {iOS|Android} emulator". Let me know if I might have just missed something like this or if you have any ideas/direction for what you'd like to see.

App version is not updated

Subject of the issue

App version is not updated

Your environment

  • version of YWallet 1.3.0
  • platform and version. macOS Ventura 13.2

Steps to reproduce

Main menu -> About ywallet

Expected behaviour

1.3.0(371)

Actual behaviour

Screenshot 2023-02-12 at 15 20 37

AppImage does not start

Subject of the issue:
AppImage does not start, there is an error message in terminal output.

Environment:
YWallet v1.3.4+389
Not works on Whonix OS VM (Debian)
Works on ArchLinux Host

Steps to reproduce:

  1. Download YWallet x86_64 AppImage from GitHub releases page.
  2. $ chmod a+x Ywallet-latest-x86_64.AppImage
  3. $ ./Ywallet-latest-x86_64.AppImage

Expected behaviour:
YWallet launches.

Actual behaviour:
/tmp/.mount_Ywallei2zHo1/ywallet: symbol lookup error: /tmp/.mount_Ywallei2zHo1/usr/lib/x86_64-linux-gnu/libgdk-3.so.0: undefined symbol: wl_proxy_marshal_flags

If started via GUI double-click instead of terminal command, still nothing happens.

Question:

Looks like despite it is AppImage, it has some system dependencies required to launch. I would be really grateful if someone tells me what packages am I missing.

UI always shows “SYNCING 99 %”

I’m guessing this is because it's calculating the percentage from block 0 every time. But as a user, it’d be much more useful to see it calculated from the latest block synced on the previous run. E.g., if when I open the app, I see 1790059/1790159, then when it's up to 17900100, I should see “SYNCING 41%” (or maybe even “SYNCING 41% of new blocks” to avoid people getting confused the other direction, thinking that somehow they wound up resyncing the entire chain).

Allow user to enter amount both into ZEC and USD fields

In send view, both ZEC and USD values are already shown and typing something in the first field already updates the second field.

Instead of introducing a checkbox in advanced options which switches positions of ZEC and USD fields, allow user to input value in any of the 2 fields.

Issue with glibc

I have installed the flatpak version.
When I try to run ywallet with the command:
flatpak run me.hanh.zwallet.Ywallet,
I get:
ywallet: /usr/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ywallet)
The version of my glibc is 2.36-1.
Is there any fix, please?
Arch Linux; flatpak 1:1.12.7-1; windows manager: i3-gaps; ywallet 1.2.11+259

btcpayserver integration

This comment is more suited to
https://github.com/hhanh00/btcpayserver
but that repo doesn't permit issues.

Based on
https://www.youtube.com/watch?v=9MyHFcGhZJo&t=6m30s
there is a yml fragment which is relevant to starting the zcash / ycash wallet with btcpayserver, but the relevant code does not appear to be part of what was merged into btcpayserver.

Presumably it's relevant to this comment

btcpayserver/btcpayserver#3400 (comment)

and should include some new code in
https://github.com/btcpayserver/btcpayserver-docker

to mirrors the monero.yml
https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/monero.yml

Is it possible to get that code integrated into btcpayserver-docker?

Application does not remember window size

Subject of the issue

Application does not remember window size after restart.

Your environment

  • version of YWallet 1.3.0
  • platform and version. macOS Ventura 13.2

Steps to reproduce

  1. Launch wallet.
  2. Resize the app window.
  3. Quit the app.
  4. Relaunch the app.

Expected behaviour

App has the window size set in step 2.

Actual behaviour

App window is reset to default, which is actually too small and hides info on the bottom.

Rescan has no effect

Occasionally, after asking for a rescan the app simply goes back to the account page.

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.