Git Product home page Git Product logo

dvpn-node's Introduction

Sentinel dVPN Node

CodeQL Docker Go GoReport Licence Tag TotalLines

For documentation click here

dvpn-node's People

Contributors

bitsndbyts avatar bsrinivas8687 avatar dependabot[bot] avatar faddat avatar ironman0x7b2 avatar trinityprivacy 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

dvpn-node's Issues

Docker LOG shows PEERs connected after disconnecting

Describe the bug
The NODE Docker log shows 2 peers connected for 30 min after I disconnected the peers.

To Reproduce
Step #1
sentinelcli query node --home "${HOME}/.sentinelcli" --node https://rpc.sentinel.co:443 sentnode1...l23z57
Query results show PEERS = 0.

Step #2
Used my phone to subscribe to the node and Connected to the node (Moniker: CherokeeRoseNode ) [in USA]

Step #3
sentinelcli query node --home "${HOME}/.sentinelcli" --node https://rpc.sentinel.co:443 sentnode1...l23z57
Query Results show PEERS = 2

Step #4
On the Android device Disconnect from VPN node.

Step #5
Execute docker logs command: docker logs 28...5e --follow
image

Expected behavior
I was expecting the peers to show zero in the NODE query, but the query showed 2 peers for 40 min and counting.
sentinelcli query node --home "${HOME}/.sentinelcli" --node https://rpc.sentinel.co:443 sentnode1...l23z57
image

Screenshots
tx_hash=CC3B80B82E4A3ACEBF1E858CE5F3CCFF82CBF5B01FBBF5314D67D9D5B804D840
image

Desktop (please complete the following information):

  • OS: Ubuntu
  • Version 20.04 LTS

Additional context

ABCI error

Describe the bug
Clean installation on stable Alpine Linux.

To Reproduce
Steps to reproduce the behavior:

vps:~/.sentinel$ sudo docker run -it --privileged --mount type=bind,source=$HOME/.sentinel,target=/root/.sentinel -p 3000:3000 -p 1194:1194/udp sentinelofficial/stt1-dvpn-
openvpn
[sudo] password for DELETED:
Unable to find image 'sentinelofficial/stt1-dvpn-openvpn:latest' locally
latest: Pulling from sentinelofficial/stt1-dvpn-openvpn
5d20c808ce19: Already exists
f612de514f34: Already exists
b70fd0c1cb84: Already exists
4cc8806b3258: Already exists
c50f2da987d6: Already exists
b3e884298038: Already exists
a3140d54a9ad: Already exists
14632061e796: Already exists
Digest: sha256:71dc5e3ce73ab69b430168dd719c768b6ff2906254a710c7b74424beea81fe99
Status: Downloaded newer image for sentinelofficial/stt1-dvpn-openvpn:latest
I[03-06|06:32:19.367] Starting RPC HTTP server on tcp://localhost:1317 module=rest-server
I[03-06|06:32:19.384] REST server started module=rest-server

Please enter account name: DELETED
Please enter account password: DELETED

I[03-06|06:32:35.539] Served RPC HTTP response module=rest-server method=GET url=/keys/seed status=200 duration=370 remoteAddr=127.0.0.1:49344
I[03-06|06:32:35.826] Served RPC HTTP response module=rest-server method=POST url=/keys status=200 duration=283 remoteAddr=127.0.0.1:49346
Updating location and Internet speed information...
No account found. Returning 0.
No account found, defaulting to sequence 0
I[03-06|06:34:58.366] Served RPC HTTP response module=rest-server method=POST url=/register/vpn status=500 duration=724 remoteAddr=127.0.0.1:49550
{'message': 'Response status code is not 200.', 'code': 2, 'error': 'checkTx failed: (65545) === ABCI Log ===\nCodespace: 1\nCode: 9\nABCICode: 65545\nError: --= Error =--\nData: common.FmtError{format:"cosmosaccaddrDELETED", args:[]interface {}(nil)}\nMsg Traces:\n--= /Error =--\n\n=== /ABCI Log ===\n'}

Expected behavior
dVPN node start

Screenshots
console output provided

Desktop (please complete the following information):

  • OS: Linux vps 4.19.98-0-virt #1-Alpine SMP Thu Jan 23 11:06:31 UTC 2020 x86_64 Linux
  • Version: latest

Sia autosync on Handyhost degrades performance of Pi4 node without option to stop it

Using the Handyhost installer (0.5.1) to set up a dVPN (on a pi4 running ubuntu 20.04) I wandered into the Sia page of the node interface out of curiosity and it started syncing automatically (ideally it would ask, or give an option to stop etc). As my pi is running off an SD card, I needed to find a way to roll that back.

I tried uninstalling and reinstalling but that didn't work, it simply resumed the sync. Then I used 'ps - aux | grep sia' to find and kill the process afterwhich I deleted the Sia data folder using 'sudo rm -rf /root/.Handyhost/siaData' and that did the trick. Now Handyhost shows a greyed out status indicator for Sia as desired.

ERR Handshake process exited unexpectedly error="signal: aborted (core dumped)"

Describe the bug
I can't start the node due to this problem.

To Reproduce
I've followed all the steps in the documentation.

Expected behavior
I expect to have the node up and running.

Screenshots
Attached you have the logs:
^Cpi@raspberrypi:~/.sentinelnode docker run --rm --interactive --tty --volume ${HOME}/.sentinelnode:/root/.sentinelnode --volume /lib/modules:/lib/modules --cap-drop ALL --cap-add NET_ADMIN --cap-add NET_BIND_SERVICE --cap-add NET_RAW --cap-add SYS_MODULE --sysctl net.ipv4.ip_forward=1 --sysctl net.ipv6.conf.all.disable_ipv6=0 --sysctl net.ipv6.conf.all.forwarding=1 --sysctl net.ipv6.conf.default.forwarding=1 --publish 7816:7816/tcp --publish 17824:17824/udp sentinel-dvpn-node process start
2022-02-17T17:30:23Z INF Reading the configuration file path=/root/.sentinelnode/config.toml
2022-02-17T17:30:23Z INF Validating the configuration data={"chain":{"gas":200000,"gas_adjustment":1.05,"gas_prices":"0.1udvpn","id":"sentinelhub-2","rpc_address":"https://rpc.sentinel.co:443","simulate_and_execute":true},"handshake":{"enable":true,"peers":8},"keyring":{"backend":"file","from":"tls.key"},"node":{"interval_set_sessions":120000000000,"interval_update_sessions":6900000000000,"interval_update_status":3300000000000,"listen_on":"0.0.0.0:7816","moniker":"********","price":"30000udvpn","provider":"","remote_url":"https://***************:7816"},"qos":{"max_peers":250}}
2022-02-17T17:30:23Z INF Creating IPv4 pool CIDR=10.8.0.2/24
2022-02-17T17:30:23Z INF Creating IPv6 pool CIDR=fd86:ea04:1115::2/120
2022-02-17T17:30:23Z INF Initializing RPC HTTP client address=https://rpc.sentinel.co:443 endpoint=/websocket
2022-02-17T17:30:23Z INF Initializing keyring backend=file name=sentinel
Enter keyring passphrase:
2022-02-17T17:30:33Z INF Querying account address=sent1r7k56ewrelrrvpr6*******************
2022-02-17T17:30:34Z INF Fetching GeoIP location info...
2022-02-17T17:30:34Z INF GeoIP location info ****************************
2022-02-17T17:30:34Z INF Performing internet speed test...
2022-02-17T17:30:39Z INF Internet speed test result data={"download":"29289696","upload":"35239125"}
2022-02-17T17:30:39Z INF Initializing VPN service type=1
2022-02-17T17:30:39Z INF Starting the Handshake process...
2022-02-17T17:30:39Z INF Starting VPN service type=1
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.1/24 dev wg0
[#] ip -6 address add fd86:ea04:1115::1/120 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;
2022-02-17T17:30:39Z INF Opening the database path=/root/.sentinelnode/data.db
2022-02-17T17:30:39Z INF Migrating database models...
2022-02-17T17:30:39Z INF Initializing...
2022-02-17T17:30:39Z INF Querying node address=sentnode1r7k56ewrelrrvp****************************
2022-02-17T17:30:40Z INF Updating node info...
2022-02-17T17:30:40Z INF Preparing the transaction messages=1
2022-02-17T17:30:40Z INF Querying account address=sent1r7k56ewrelrrvpr6****************************
2022-02-17T17:30:40Z INF Transaction info gas=60694 sequence=9
2022-02-17T17:30:40Z INF Broadcasting the transaction size=309
2022-02-17T17:30:42Z INF Transaction result code=0 codespace= height=4581776 tx_hash=C9BA20D201CE1B569BC42034089E1AB243CD8D5BC4CED32AB682FFDBE89DE2D8
2022-02-17T17:30:42Z INF Starting...
2022-02-17T17:30:42Z INF Starting a job interval=120000 name=set_sessions
2022-02-17T17:30:42Z INF Starting a job interval=6900000 name=update_sessions
2022-02-17T17:30:42Z INF Starting a job interval=3300000 name=update_status
2022-02-17T17:30:42Z INF Updating node status...
2022-02-17T17:30:42Z INF Preparing the transaction messages=1
2022-02-17T17:30:42Z INF Querying account address=sent1r7k56ewrelrrvpr6r0lfyau9dqqrnuzw34672c
2022-02-17T17:30:43Z ERR Handshake process exited unexpectedly error="signal: aborted (core dumped)"
2022-02-17T17:30:43Z INF Starting the Handshake process...
2022-02-17T17:30:43Z INF Transaction info gas=64629 sequence=10
2022-02-17T17:30:43Z INF Broadcasting the transaction size=267
2022-02-17T17:30:46Z ERR Handshake process exited unexpectedly error="signal: aborted (core dumped)"
2022-02-17T17:30:46Z INF Starting the Handshake process...
2022-02-17T17:30:48Z INF Transaction result code=0 codespace= height=4581777 tx_hash=FED878FEE69A3C4B7A115964645A244BAF152DADE383AD3B7F04E84D2C58CE78
2022-02-17T17:30:50Z ERR Handshake process exited unexpectedly error="signal: aborted (core dumped)"
2022-02-17T17:30:50Z INF Starting the Handshake process...
2022-02-17T17:30:53Z ERR Handshake process exited unexpectedly error="signal: aborted (core dumped)"
2022-02-17T17:30:53Z INF Starting the Handshake process...
2022-02-17T17:30:59Z ERR Handshake process exited unexpectedly error="signal: aborted (core dumped)"
2022-02-17T17:30:59Z INF Starting the Handshake process...
2022-02-17T17:31:05Z ERR Handshake process exited unexpectedly error="signal: aborted (core dumped)"
2022-02-17T17:31:05Z INF Starting the Handshake process...
2022-02-17T17:31:09Z ERR Handshake process exited unexpectedly error="signal: aborted (core dumped)"
2022-02-17T17:31:09Z INF Starting the Handshake process...

Desktop (please complete the following information):
The system is a raspberry pi 4.

Additional context
Add any other context about the problem here.

Change openvpn port when using Docker

Is your feature request related to a problem? Please describe.
I'd like to put the OpenVPN on a specific port other than the default 1194. I'm using docker container. Is there a simple way to do this?

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Node panicking when RPC timeout

Describe the bug
When connection with the tendermint rpc timeout the node is panicking

`I[2020-12-21|03:44:50.419] Updated node status tx_hash=1276CA033D8BCB33B8BFF13E99368B14109E8A51278D83518A97B038CF3F4ABA
panic: ABCIQuery: Post "https://rpc.turing.sentinel.co:443": dial tcp: lookup rpc.turing.sentinel.co on 213.186.33.99:53: read udp 172.17.0.4:42557->213.186.33.99:53: i/o timeout

goroutine 209 [running]:
github.com/sentinel-official/dvpn-node/node.(*Node).Start.func1(0xc0011be048)
/go/src/github.com/sentinel-official/dvpn-node/node/node.go:39 +0x58
created by github.com/sentinel-official/dvpn-node/node.(*Node).Start
/go/src/github.com/sentinel-official/dvpn-node/node/node.go:37 +0x54
`

Expected behavior
Maybe retry or restart?

OS:
Ubuntu 20.04
dVPN Node running under docker

Sentinel Nodes stop working

Describe the bug
Nodes stop working for some reason randomly.
With no explanation at all. I'm not the only one with this issue nodes stop working because of the error in the picture below

To Reproduce
Just run the node.

Expected behavior
A running node with 100% uptime

Screenshots
error
333

Desktop (please complete the following information):

  • OS: Ubuntu 20.04 LTS

Additional context
It seems to have started a bit before the beginning of the New Year.

Invalid session status

  • Do not panic incase transaction error
  • Prepare the messages again incase transaction error

In the README.md is missing "How to update the node"

No everyone is familiar with Docker or Github.
It would be a good idea to add "How to update the node" into the configuration page or create a new one.
It would help adoption and all the newbies (like myself)

I dont even know how to do it myself, if someone explain me (reply to this comment), happy to create a pull request to have everything well documented.

Connection time outs

Describe the bug
When connected to a dvpn node I can not connect to all sites that I want to visit and get a time out on most of them. Same when making a sentinelcli query. I also can't disconnect.


Expected behavior
I should be able to visit every site without any problems


Screenshots
I made a video of me connecting to a node and randomly surfing and running into the error
https://streamable.com/9xxr3w

0:00-0:30
connecting to the node

0:30-3:50
visiting sites

3:50-4:40
error requesting node list with CLI client.
"error: post failed: Post "https://rpc.sentinel.co:443": read tcp 10.8.0.3:45694->144.126.240.160:443: read: connection reset by peer"

4:40-5:40
trying to disconnect
When using sudo command: "sudo: sentinelcli: command not found"
Without sudo it does not disconnect


Desktop (please complete the following information):
OS: Ubuntu 20.04.2 LTS x86_64
Host: VMware Virtual Platform None
Kernel: 5.8.0-59-generic
Uptime: 1 min
Packages: 2145 (dpkg), 8 (snap)
Shell: bash 5.0.17


Additional Info
Sites that worked while testing:
https://whatsmyip.com/
https://www.google.com/search?q=
https://en.wikipedia.org
https://www.apple.com/maps/
https://www.mintscan.io/ (only kinda)
https://www.youtube.com/ (only kinda)

Sites that didn't work while testing:
https://ipleak.net/
https://maps.google.com/
https://maps.me/
https://maps.org/
https://www.davidrumsey.com/
https://www.mapsofworld.com/
https://www.mapbox.com/maps
https://www.cnet.com/
https://www.businessinsider.com/
https://wccftech.com/

Speed test mirror change

The speedtest mirror for Malaysia is failing and because of this, I am unable to start my node. In this case, the provider seems to have not renewed their SSL. This would mean none of the Malaysian providers can start a node now.

These are hosted mirrors and bound to go down. It will be good if we can choose a mirror manually or let the system decide automatically.

2022-01-14T05:54:54Z INF Fetching GeoIP location info...
2022-01-14T05:54:54Z INF GeoIP location info city="Petaling Jaya" country=Malaysia
2022-01-14T05:54:54Z INF Performing internet speed test...
Error: Get "https://speedtest.maxis.com.my:8080/latency.txt": x509: certificate has expired or is not yet valid: current time 2022-01-14T05:54:54Z is after 2021-12-17T08:14:17Z
vatsan@vatsan-FUJITSU:~$ curl https://speedtest.maxis.com.my:8080/latency.txt
curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

MEDIUM Article: Multi-Currency Payment for ATOM, UST, OSMO and other IBC (Available only in CLI)

Is your feature request related to a problem? Please describe.
I am not able to find the CLI command or instructions to activate Multi-Currency payment for IBC compatible chains.

Describe the solution you'd like
Please, where may I find the CLI commands / instructions.

Describe alternatives you've considered
not applicable.

Additional context
Medium Article
https://sentinel.medium.com/the-launch-of-sentinels-first-incentivized-bandwidth-mining-program-on-its-cosmos-based-hub-33e8bcb7bffa

Section of the Article that mentions the CLI commands:
image

Discord Mention:
image

CLI Command to Retire a NODE

Is your feature request related to a problem? Please describe.
Imagine a node operator needs to shutdown their server, but there is no way to gracefully un-register or de-list the node.
This will cause dead-nodes to be listed in the Android / iOS client, and cause frustration to the customer.

Describe the solution you'd like
Please provide a CLI command method to de-list or de-register a node.

Describe alternatives you've considered
Maybe have a clean up routine running that checks for the client IP.
Maybe you already have a process that does this.
I can tell from the log that the nodes are checked every 2 min.
So, if a node goes off-line and is dead for x-period of time, then it could be de-listed.

image

"RemovePeer" handler is missing

Is your feature request related to a problem? Please describe.
For corporations to be able to "rent" the DVPN network (Use DVPN as layer), they need to be able to quickly establish and remove authentications for their users in the various DVPN nodes, currently only adding a session is possible, but it's not possible to remove and/or modify an existing session.

Describe the solution you'd like
Add a "RemovePeer" handler where a peer can be removed by their WG PublickKey (of course signed by the Subscription owner).

Describe alternatives you've considered

  • Tried waiting for the session to expire (Not economically feasible, not user-friendly when users want to switch nodes)

Block Chain shows Greater Bandwidth than the CLI Query

Describe the bug
The CLI Quotas query shows 834.03 MB for Subscription 1185
sentinelcli query quotas --home "${HOME}/.sentinelcli" --node https://rpc.sentinel.co:443 --page 1 1185
image

However, when I add up all the transactions on the blockchain (mintscan.io) the total bandwidth is 2.4 GB

To Reproduce
#1. Run the Quotas query.
sentinelcli query quotas --home "${HOME}/.sentinelcli" --node https://rpc.sentinel.co:443 --page 1 1185

#2. Manually add up all of the mintscan transactions
https://www.mintscan.io/sentinel/txs/8B4D3475177442AEA5E8DF461B28ED170948B13ABD2604D6212F910882C36758
https://www.mintscan.io/sentinel/txs/2A115B63779F3C1E086A92C3768FBA5D312238302A4C5BA889D0AE4172116CA1
https://www.mintscan.io/sentinel/txs/E2F0EA32B21C77C648F26DCD6754DB9DA4675C55B3962ECA7D0CF111A49D6A58
https://www.mintscan.io/sentinel/txs/5C3743E130D09F9BF4647E3D75B5DB52CC08DE185906C94E9E3EA2852B3C67AD
https://www.mintscan.io/sentinel/txs/ADBDB9FD8913D4B97DAF1E8F7449A1472A26A278A89FDE5138E4BC9517498EF7
https://www.mintscan.io/sentinel/txs/4459E13A8E24F17C2B6ED9E87F4D2CC516414300AFFE5977CFE7936C86089D98
https://www.mintscan.io/sentinel/txs/716F48A79D1D74A9EFE30219F1A496971FA1B020873BC0B87117AEB031D538BC
https://www.mintscan.io/sentinel/txs/CC3B80B82E4A3ACEBF1E858CE5F3CCFF82CBF5B01FBBF5314D67D9D5B804D840

<style> </style>
DURATION UPLOAD DOWNLOAD
4674.66 11,943,512.00 451,006,680.00
5081.66 10,841,404.00 220,033,476.00
726.91 176,728.00 468,476.00
9521.66 19,443,932.00 404,496,608.00
3790.24 7,084,284.00 223,369,492.00
3371.90 5,516,852.00 134,464,284.00
1005.60 5,797,380.00 49,664,716.00
5565.60 19,389,576.00 273,500,584.00
2259.53 2,975,216.00 147,192,608.00
9099.53 4,863,632.00 210,399,760.00
3277.31 3,656,652.00 150,334,740.00
3117.06 3,101,000.00 178,358,488.00
51491.68 94,790,168.00 2,443,289,912.00
14.30324539 94 MB 2.4 GB

Expected behavior
I expected that the sum of the blockchain transactions would match the CLI Quota query results.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Ubuntu
  • Version 20.04 LTS

Additional context
As of this post the NODE is 22 hours old.
LOG Attached
20211123_NODE_l23x57_LOG.txt

Perform "Speed checks" manually or on daily basics

Currently the node is performing this check only when starting the container.
It would be great for users to be able to have more accurate data, as the speed (available bandwith) could be affected over the time.

If running a daily check is not possible, It would be useful to be able to check the speed on demand manually, by the node host or by the clients.

Message Sender LCD Endpoint doesn't display sequencee.

Describe the bug
If I look at the messages sent by a wallet on through the LCD, the sequence is always set to 0. If I make transactions on Keplr, I can see my sequence isn't 0 and it's incrementing as I make transactions similar to other Cosmos SDK based Blockchains.

To Reproduce
https://lcd-sentinel.keplr.app/cosmos/tx/v1beta1/txs?events=message.sender=%27sent1qx6kgrla69wmz90tn379p4kaux5prdku3lpren%27

See the sequence of transactions.

Expected behavior
The sequence number accurately reflects my current sequence like in this BTSG LCD endpoint:

https://lcd.explorebitsong.com/cosmos/tx/v1beta1/txs?events=message.sender=%27bitsong1t26ag4sn8075dk27d8zp6dh30prnqzymeh9syq%27&pagination.limit=0

Desktop (please complete the following information):
Windows OS & Chrome Browser. Same issue when trying on my iPhone w/ Safari and Chrome.

Additional context
If there's alternative method for calculating my current sequence for broadcasting transactions, that'd be good to know.

Modify the GB price (udvpn)

Current method to edit the price that the node is asking, it is related to open a file and edit it.
That file is only checked on the start, so to change the price when the node is running is not possible.

It would be nice to implement another method to update the price, more agile without disconnecting the node (stoping the container)

Non Docker dVPN and HNSD Error

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

I have configured dDVPN Node on Ubuntu 20.0.4. I also build hnsd from their git repo. Then node is running well except hnsd crashes with the following:

2021-11-03T04:51:49Z INF Starting the Handshake process...
2021-11-03T04:51:50Z ERR Handshake process exited unexpectedly error="exit status 3"

Otherwise the node appears to be running well:

https://www.mintscan.io/sentinel/account/sent1kw05e0jexask3nlhrng7kcerarskss28eevd04

Describe the solution you'd like
A clear and concise description of what you want to happen.

I want dVPN to either run hnsd correctly or a way to connect dVPN on hnsd running daemon on the same server.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

I configured hnsd to running on the same server and it appears to be running well but dVPN does not see it running and starts its own instance which is crashing as noted above.

Additional context
Add any other context or screenshots about the feature request here.

My goal is to create a deployable image to Akash

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.