Code Monkey home page Code Monkey logo

ztnet's Introduction

  • 👋 Hi, I’m @sinamics
  • 👀 I’m interested in programming
  • 🌱 I’m currently learning kubernetes
  • 💞️ I’m looking to collaborate on fun projects
  • 📫 How to reach me https://egeland.io

📈 GitHub Statistics 📉

👷 Check out what I'm currently working on

🌱 My latest projects

🔭 Latest releases I've contributed to

🔨 My recent Pull Requests

📓 Gists I wrote

⭐ Recent Stars

👯 Check out some of my recent followers

ztnet's People

Contributors

baptiste-leterrier avatar dependabot[bot] avatar luisbandalap avatar mhalkyo avatar sinamics avatar snyk-bot avatar tinola avatar wgos avatar wl00215041 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

ztnet's Issues

[Feature Request]: Read network config from zerotier-one itself, not from database

🚀 Feature Summary

Read network config from zerotier-one itself

📝 Detailed Description

It is not good to store copies in database. Read from zerotier-one will make it stronger.

🎯 Use Case

Migrate from other controller -> lost all ui config.
Reinstall the zerotier-one -> config can't be sync.

💡 Willing to Contribute

None

[Feature Request]: Migrate to Single-Container Setup with Integrated PostgreSQL

Hello there, great job with the project!

🚀 Feature Summary

Combine Postgres and ZTNET into a single container

📝 Detailed Description

Nothing to add except it is more user-friendly and self-contained. This is how Vaultwarden does it and in my opinion it's a great idea.

🎯 Use Case

No response

💡 Willing to Contribute

None

[Support]: More functionalities

Describe the problem you are having

Hello
You have created a beautiful UI for the controller, in my opinion, it is more pleasant and more convenient than the original one.
But it lacks a few important features:

  1. DNS setting for "Default router override" mode
  2. Client settings: "Allow Ethernet Bridging" and "Do not auto-assign IPs"
  3. And of course "Flow rules"
    Is there any hope for their appearance in your project?

Version

0.0.23

Relevant log output

No response

Operating system

Debian

Any other information that may be helpful

No response

[Feature Request]: User Groups to Limit Virtual Network Creation

🚀 Feature Summary

能否这样,用户最好也可以权限分级。

📝 Detailed Description

比如
用户组1:只能创建1个虚拟网络。
用户组2:可以创建5个虚拟网络。
.....
用户组5:不限制创建虚拟网络数量。

🎯 Use Case

No response

💡 Willing to Contribute

No, I can only suggest the feature but cannot help in development or testing

[Support]: It cannot be installed on Anolis

📝 Describe the Problem You Are Having

[root@iZwz9ibn1h5xmnqix4n4etZ ~]# sudo docker-compose up -d
[+] Running 3/3
 ✔ zerotier 2 layers [⣿⣿]      0B/0B      Pulled                                                                    22.4s
   ✔ a3d0c477c07b Pull complete                                                                                     17.7s
   ✔ 9c1442b92afa Pull complete                                                                                      8.2s
[+] Running 1/0
 ✘ Network root_app-network  Error                                                                                   0.0s
failed to create network root_app-network: Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-9af48c2a6e72 -j RETURN: iptables: No chain/target/match by that name.
 (exit status 1))
[root@iZwz9ibn1h5xmnqix4n4etZ ~]# curl -s http://install.ztnet.network | sudo bash
(23) Failed writing body

System check:

[root@iZwz9ibn1h5xmnqix4n4etZ ~]# cat /proc/version
Linux version 4.18.0-477.27.1.0.1.an8.x86_64 (mockbuild@iZ2ze8vdmdyl66lfybi1hzZ) (gcc version 8.5.0 20210514 (Anolis 8.5.0-18.0.4) (GCC)) #1 SMP Wed Sep 20 14:03:12 CST 2023

🔖 Version

none

📋 Docker Logs

No response

💻 Operating System

None

📚 Any Other Information That May Be Helpful

No response

[Support]: Web UI issues with Network page

📝 Describe the Problem You Are Having

image
image

Issue happened after I was trying to connect to my network and then disconnecting client (client wasnt able to connect)
After creating new network everything works just the old network stay on list though pressing it causes error message.
New network works without issues.

🔖 Version

v0.3.11

📋 Docker Logs

18 migrations found in prisma/migrations

Applying migration `20230402192938_`
Applying migration `20230714081023_flow`
Applying migration `20230717095341_tags`
Applying migration `20230717150852_nw_member`
Applying migration `20230723084736_mailoptions`
Applying migration `20230724093114_nw_description`
Applying migration `20230728082722_init`
Applying migration `20230806115334_zt_central`
Applying migration `20230808053939_db_rework`
Applying migration `20230809202431_cascade`
Applying migration `20230811063619_user_options`
Applying migration `20230813195808_user_group`
Applying migration `20230815175550_custom_root`
Applying migration `20230818113722_custom_root_extend`
Applying migration `20230823185550_update_cascade_delete`
Applying migration `20230825053528_user_invitation`
Applying migration `20230910161252_authorize_warning`
Applying migration `20231006203924_landing_page_body`

The following migrations have been applied:

migrations/
  └─ 20230402192938_/
    └─ migration.sql
  └─ 20230714081023_flow/
    └─ migration.sql
  └─ 20230717095341_tags/
    └─ migration.sql
  └─ 20230717150852_nw_member/
    └─ migration.sql
  └─ 20230723084736_mailoptions/
    └─ migration.sql
  └─ 20230724093114_nw_description/
    └─ migration.sql
  └─ 20230728082722_init/
    └─ migration.sql
  └─ 20230806115334_zt_central/
    └─ migration.sql
  └─ 20230808053939_db_rework/
    └─ migration.sql
  └─ 20230809202431_cascade/
    └─ migration.sql
  └─ 20230811063619_user_options/
    └─ migration.sql
  └─ 20230813195808_user_group/
    └─ migration.sql
  └─ 20230815175550_custom_root/
    └─ migration.sql
  └─ 20230818113722_custom_root_extend/
    └─ migration.sql
  └─ 20230823185550_update_cascade_delete/
    └─ migration.sql
  └─ 20230825053528_user_invitation/
    └─ migration.sql
  └─ 20230910161252_authorize_warning/
    └─ migration.sql
  └─ 20231006203924_landing_page_body/
    └─ migration.sql

All migrations have been successfully applied.
npm notice
npm notice New major version of npm available! 9.8.1 -> 10.2.0
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v10.2.0>
npm notice Run `npm install -g [email protected]` to update!
npm notice
Migrations applied successfully!
Seeding the database...
Environment variables loaded from .env
Running seed command `ts-node --compiler-options {"module":"CommonJS"} prisma/seed.ts` ...
Seeding User Options complete!
Seeding User Options complete!

🌱  The seed command has been executed.
Database seeded successfully!
Executing command
- info Loaded env from /app/.env
Listening on port 3000 url: http://cdfaad88bab1:3000
- info Loaded env from /app/.env
2023/10/18 16:25:49 startup flag parsed:  true
2023/10/18 16:25:49 config file read.
2023/10/18 16:25:49 config file unmarshalled.
2023/10/18 16:25:49 read world signing key failed:  open previous.c25519: no such file or directory  ,  open current.c25519: no such file or directory
2023/10/18 16:25:49 preflight check error occurred, but still can proceed.
2023/10/18 16:25:49 new world signing key generated.
2023/10/18 16:25:49 preflight check successfully complete.
2023/10/18 16:25:49 generating pre-sign message.
2023/10/18 16:25:49 pre-sign world generated and serialized successfully.
2023/10/18 16:25:49 world has been signed.
2023/10/18 16:25:49 new signed world are packed.
2023/10/18 16:25:49 packed new signed world has been written to file.
2023/10/18 16:25:49
2023/10/18 16:25:49
2023/10/18 16:25:49 now c language output:

💻 Operating System

Windows

📚 Any Other Information That May Be Helpful

ztnet is running on remote server accessing ui from Windows PC

[Feature Request] Connect controller to its own network

@sinamics Let me try again to explain what I mean. In the picture, this is just the implementation of the controller of the respected @dec0dOS, it can be seen that a regular client and the controller itself are connected to their own network. This allows you to limit access to the controller itself only from the ZeroTier network. img-2023-07-31-00-53-47

@sinamics We are looking forward to this feature, I will be grateful if you find time for this. 🙏🏻

Originally posted by @dsm150 in #50 (comment)

[Support]: 0.3.6 发现一个小 bug

📝 Describe the Problem You Are Having

docker-compose.yml 文件中,将 NEXTAUTH_URL: "http://localhost:3000" 修改为 NEXTAUTH_URL: "http://ip:3000" 后,退出登录后不能回到登录界面。
注册后也不能进入界面。

🔖 Version

0.3.6

📋 Relevant Log Output

No response

💻 Operating System

None

📚 Any Other Information That May Be Helpful

No response

[Support]: Physical IP sorting issue

📝 Describe the Problem You Are Having

Hello,

Try to sort by physical IP (members list table). Something is wrong here.

🔖 Version

main branch

📋 Docker Logs

No response

💻 Operating System

Other

📚 Any Other Information That May Be Helpful

No response

[Feature Request]: auth in web panel with SSO

🚀 Feature Summary

Add the ability to authorize in the web panel via SSO, like keycloak and etc.

📝 Detailed Description

No response

🎯 Use Case

No response

💡 Willing to Contribute

None

[Feature Request]: Enhance Page Titles, Members List Sorting, and Mobile Menu Interactions

🚀 Feature Summary

Visual enhancements ideas

📝 Detailed Description

Hello :)

Well, I'm not sure you'll kill me, but I have some ideas...

  1. Page title browsing members list - I think it's better name it as network name rather than network ID.
    Page title now:
    ZTNET - <NETWORK_ID>
    After change:
    ZTNET - <NETWORK_NAME>

  2. Members list page.
    2.1) Possibility to save last state of table sorting and number of displayed members.
    Now the defaults are:
    -> sort table by ID in descending order
    -> show 10 members
    I don't know how to achieve it in most easy way, maybe set some cookies? or save user choices in PostgreSQL database?
    2.2) Also in drop down form with values to show items (now from 10 to 50), there should be an option "All" to show all members on one page as well.
    2.3) "Auth" column - when member is authorized we can click checkbox to remove authorization.
    Idea: in case of member de-authorization, show confirmation popup "Are you sure? Yes/No".

  3. Possibility to show/hide left menu.
    Why? On mobile device (smartphone) in vertical position there is the "hamburger" icon to show left menu, tapping somewhere next to menu it hides, which is good.
    Rotating mobile to horizontal position I can't hide left menu, so it takes 1/3 of screen.
    I think some new icon to show/hide menu will do the trick :) Of course not only on mobile devices...

Regards

🎯 Use Case

No response

💡 Willing to Contribute

None

[Support]: A tiny display bug

📝 Describe the Problem You Are Having

QQ截图20230828103245

        "allowManagementFrom": [
            "127.0.0.1",
            "10.11.131.0/24"
        ]

The row [Allow Management From] display multiple ips together.

🔖 Version

0.3.6

📋 Docker Logs

No response

💻 Operating System

Debian

📚 Any Other Information That May Be Helpful

No response

[Support]: I feel that ztnet can be tested in my production environment to further identify bugs

📝 Describe the Problem You Are Having

So there are still some minor changes needed to address the following issues.

  1. The registration/login page has not been translated into other languages,

Alternatively, the welcome message can be edited by the administrator. If the default language could be recognized through the user's browser, it would be even more perfect.

  1. The dashboard display content can be edited by the administrator.

  2. The current version does not seem to have a login timeout and exit. You can access the previous login at any time, which is not secure enough.

  3. 'DELETE NETWORK' must be translated, as it may cause unpredictable consequences. Perhaps even better, only contacting the administrator can exercise this function.

There is another unclear point that members have an ipv6 address, but only ipv4 is displayed in the member list. On my.zerotier.com, ipv6 can be displayed

🔖 Version

0.3.8

📋 Docker Logs

No response

💻 Operating System

None

📚 Any Other Information That May Be Helpful

No response

[Support]: Install on debian as standalone

📝 Describe the Problem You Are Having

Hi,

Well done on a fantastic project and the GUI is brilliant. I'm trying to install on debian as standalone, if i use the command -
curl -s http://install.ztnet.network | sudo bash

I get the following error -
bash: line 1: html: No such file or directory
bash: line 2: syntax error near unexpected token <' 'ash: line 2: <title>502 Bad Gateway</title>

Any idea on what i'm doing wrong?
Thanks.

🔖 Version

curl -s http://install.ztnet.network | sudo bash

📋 Docker Logs

No response

💻 Operating System

Debian

📚 Any Other Information That May Be Helpful

No response

set environment variable with local timezone

Hi,

When member has gone offline, there is wrong hour in tooltip.

date

There is 06:23, when in fact at local time it was 08:23.
Is it possible to set some environment variable to set local timezone instead of UTC?

Originally posted by @tinola in #126

[Support]: Successfully deployed the software and found the following issues during use,Thank you for your help

Describe the problem you are having

1.can i delete the members in deleted members group forever?but , i find no way to do it .

2.the address of members is randomly assigned, can i custom setting the member's address ?

3.windows(win10) client join the network first successfully,but it joined next time, the status of zerotier-cli listnetworks is REQUESTING_CONFIGURATION, what is wrong?

Version

docker image tag

Relevant log output

No response

Operating system

Windows

Any other information that may be helpful

No response

[Support]:

📝 Describe the Problem You Are Having

When going to the login page initially or if you logout with a light theme then you can't see the custom branding messages because the font is in white. Also on the sign in button, you can't see the words "sign in" because they are in white font.

🔖 Version

3.11

📋 Docker Logs

No response

💻 Operating System

Ubuntu

📚 Any Other Information That May Be Helpful

No response

[Support]: Compatibility with ZeroTier 1.12.x

📝 Describe the Problem You Are Having

Looks like ZTNET has some compatibility issues with the new ZeroTier 1.12.0 release:

  • Network modifications result in HTTP/500 network_update failure
  • Network create works
  • Network delete works

🔖 Version

latest

📋 Relevant Log Output

No response

💻 Operating System

None

📚 Any Other Information That May Be Helpful

No response

[Support]: If using zerotier on the host, how should Docker Compose.yml be configured?

📝 Describe the Problem You Are Having

I tried to delete the paragraph 'zerotier:'. And, change the 'ztnet:' paragraph

Volumes:
-/var/lib/zerotier one:/var/lib/zerotier one
Network_ Mode: host

'Docker compose up - d' will prompt me that the directory is read-only

🔖 Version

0.3.9

📋 Docker Logs

No response

💻 Operating System

None

📚 Any Other Information That May Be Helpful

No response

[Support]: PlanetID and BirthID created not correctly

📝 Describe the Problem You Are Having

The planetID and birthID created are not the value entered in ztnet, because the mkworld.config.json plRecommend was set to true.

When it set to true, the mk-world will generate random ID instead of using the value we set.

{
    "rootNodes": [
        {
            "comments": "hidden",
            "identity": "hidden",
            "endpoints": [
                "hidden",
                "hidden"
            ]
        }
    ],
    "signing": [
        "previous.c25519",
        "current.c25519"
    ],
    "output": "planet.custom",
    "plID": 149604618,
    "plBirth": 1567191349589,
    "plRecommend": true
}

🔖 Version

v0.3.8

📋 Docker Logs

No response

💻 Operating System

Debian

📚 Any Other Information That May Be Helpful

No response

[Feature Request]: Chinese language support

🚀 Feature Summary

Chinese language support

📝 Detailed Description

Hello, can you provide Chinese language support? thanks

🎯 Use Case

No response

💡 Willing to Contribute

None

[Feature Request]: Disabling login

🚀 Feature Summary

Having an environmental variable that disables authentication

📝 Detailed Description

Since there is a lack of Oauth support #168 it can be implemented externally by reverse proxies in cases where multi users functionality is not necessary.
I am looking for a docker environmental variable that turns off login page and logs in as designated user LOGIN_BYPASS_USER=admin or just default admin LOGIN_BYPASS=true

🎯 Use Case

I am using local controllers where in situation where it is going to be only one ZeroTier network and one user managing said network, so I do not really need for there to be multiple users.
I also have revers proxy (traefik) with authentication forwarding handed off (Keycloak) handling other apps that do not have authentication already set up, so I can have external permission management keeping logins the same over all aplications.

💡 Willing to Contribute

None

[Support]: PostgreSQL - do not store clear password for SMTP auth

📝 Describe the Problem You Are Having

Hi,

I found possible security risk!
In GlobalOptions table there is smtpPassword column, where the password for SMTP auth is stored as clear text!
This value should be encrypted...

🔖 Version

main

📋 Docker Logs

No response

💻 Operating System

Other

📚 Any Other Information That May Be Helpful

No response

[Support]: ZTNET - page titles missing

📝 Describe the Problem You Are Having

Hi :)

I found that HTML page title is available only on "Dashboard" start page and "Local Controller" (/network) page, on any other pages the page title is missing.
I know, cosmetics... ;)

🔖 Version

v.0.3.8

📋 Docker Logs

No response

💻 Operating System

Other

📚 Any Other Information That May Be Helpful

No response

How to configure Custom Planet in the client

📝 Describe the Problem You Are Having

How to configure Custom Planet in the client

🔖 Version

v0.31

📋 Docker Logs

No response

💻 Operating System

None

📚 Any Other Information That May Be Helpful

No response

[Feature Request]: Allow administrators to manage default styles

🚀 Feature Summary

default styles

📝 Detailed Description

The text font displayed on the custom login and registration pages is white, which is the same as the system default background color and cannot be seen. It is recommended that administrators be able to define system default styles for all users.
image

Additionally, it may be better to customize the background image of the registration and login pages.

🎯 Use Case

No response

💡 Willing to Contribute

None

[Support]: When authorizing new members, an error message will appear on a white screen

📝 Describe the Problem You Are Having

Error message >

Application error: a client-side exception has occurred (see the browser console for more information).

Refreshing will restore, but it does not affect usage

🔖 Version

0.3.9

📋 Docker Logs

No response

💻 Operating System

None

📚 Any Other Information That May Be Helpful

No response

An error in Chinese translation

📝 Describe the Problem You Are Having

1692339153653 In the Network Members table
😊

🔖 Version

0.3.3

📋 Relevant Log Output

No response

💻 Operating System

None

📚 Any Other Information That May Be Helpful

No response

[Support]: Mismatched PostgreSQL database names in docker-compose.yml sample

📝 Describe the Problem You Are Having

Provided docker-compose.yml sample file contains mismatched PostgreSQL database names.

PostgreSQL service container initializes user database ztnet while ZTNET service connects and initializes in postgres database. This only works because POSTGRES_USER is set as postgres superuser.

Both should be ztnet.

For the postgres service:

POSTGRES_DB: ztnet

    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: ztnet                    <----- correct

For the ztnet service:

POSTGRES_DB: postgres

 environment:
      POSTGRES_HOST: postgres
      POSTGRES_PORT: 5432
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: postgres            <---- should be ztnet

🔖 Version

0.3.7

📋 Docker Logs

No response

💻 Operating System

None

📚 Any Other Information That May Be Helpful

No response

[Support]: IP addresses sorting issue

📝 Describe the Problem You Are Having

Hi :)

IP addresses are not correctly sorted on members list page.

ip_sort

Click table header "Managed IP / Latency" to sort column with IP addresses in ascending/descending order.
I found some idea how to fix it using JS here, but I'm sure you'll find better solution :)

🔖 Version

v.0.3.8

📋 Docker Logs

No response

💻 Operating System

Other

📚 Any Other Information That May Be Helpful

No response

[Support]: Building planet Unable to update the content of the input box

📝 Describe the Problem You Are Having

How can these three input boxes be updated after inputting characters? I tried clicking on other places with the mouse and it couldn't be updated. If I press Enter, it will be submitted directly.

ff20230821000048

🔖 Version

0.33

📋 Relevant Log Output

No response

💻 Operating System

None

📚 Any Other Information That May Be Helpful

No response

[Feature Request]: Invitation code and User deletion

🚀 Feature Summary

Invitation code and User deletion

📝 Detailed Description

I hope that administrators can invite users to register by issuing invitation codes. And administrators can delete users and their established networks.

This can avoid a large number of curious and useless registrations on this platform.

🎯 Use Case

No response

💡 Willing to Contribute

None

[Support]: Custom network and getting an IP address

📝 Describe the Problem You Are Having

I'm trying to get an IP address for my hosts from custom network 10.60.0.0/24. I'm manually assigning them from the GUI per host but the hosts never get the addresses handed down to them.

I also noticed that when I manually add my network there is no route for that network to "LAN" which normally there should be on the usual controller.

Any ideas whats wrong or whether I've got the order of operation wrong?

Thanks!

Jon.

🔖 Version

latest

📋 Relevant Log Output

wan-network 06:a5:17:e6:ed:44 OK PRIVATE zt4xm2ehgg


### 💻 Operating System

None

### 📚 Any Other Information That May Be Helpful

<img width="638" alt="image" src="https://github.com/sinamics/ztnet/assets/619239/0bfbec74-1039-4599-ac0c-e4404baccc61">

[Support]: Create root/planet error message and themes

📝 Describe the Problem You Are Having

Hello,

I found 2 issues ;)

  1. Since ztnet can be used as standalone application, an error message creating planet should be clarified, I mean remove the docker volume mount.

error

Additionally, I think I mentioned... ztnet should recognize base operating system. Default ZT configuration paths are:

  • /var/lib/zerotier-one for Linux based OS
  • /var/db/zerotier-one for FreeBSD (I don't know if other BSDs have this path too)

One more question because I'm not sure - does CREATE PLANET (submit button) mean the same as CREATE ROOT (a.k.a. MOON)?...

  1. Choosing themes "DARK" and "SYSTEM" on top right of webUI seems to not change colours. They act as the same theme.

🔖 Version

main branch

📋 Docker Logs

No response

💻 Operating System

Other

📚 Any Other Information That May Be Helpful

No response

[Support]: cannot create network

📝 Describe the Problem You Are Having

Install in ubuntu-23.10
when create network appear message Could not create network! Please try again

1

🔖 Version

Standalone Ubuntu

📋 Docker Logs

No response

💻 Operating System

Ubuntu

📚 Any Other Information That May Be Helpful

No response

[Support]: Planet config adjustment

📝 Describe the Problem You Are Having

The official planetID(149604618) and birthID(1567191349589) can function normally, so don't restrict setting them. Some third-party clients must use official ID to load the planet file. eg: kaaass/ZerotierFix#60

When the planet have two external ips and have different port, the primaryPort will set the last ip port. It should set secondaryPort too, or let users handle the local.conf by themselves.

🔖 Version

v0.3.6

📋 Docker Logs

No response

💻 Operating System

None

📚 Any Other Information That May Be Helpful

No response

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.