Giter Site home page Giter Site logo

multicontainer-getting-started's Introduction

Getting started with multicontainer on balena

This example will get you up and running quickly with a multicontainer setup on balena. The application creates a plot of your device's CPU load average and memory usage at the device's public URL, which is piped over using websockets. The system is composed of a simple static site server, a websocket server, and a proxy. These 3 components are defined in the docker-compose.yml as services and are only given as much privilege as is needed.

To get this project up and running, you'll need to sign up for a balena account, create a microservices or starter application, and provision a device (device specific instructions can be found in our getting started guide.

Note: Multicontainer functionality requires balenaOS v2.12.0 or higher. If you do not see an option to choose a microservices or starter application type, a supported OS version has not yet been released for the selected device type.

Once you are set up, clone this repo locally:

$ git clone [email protected]:balena-io-projects/multicontainer-getting-started.git

Copy the command in the upper-right corner of your application dashboard to add your remote repository:

$ git remote add balena [email protected]:username/myapp.git

Finally, push the code to the newly added remote:

$ git push balena master

It should take a few minutes for your project to build. While you wait, you can enable device URLs, so you can see the server outside of our local network. This option can be found in the Actions drop down in your device dashboard.

multicontainer-getting-started's People

Contributors

acostach avatar balena-ci avatar camerondiver avatar chrisys avatar hedss avatar imrehg avatar pdcastro avatar rcooke-warwick avatar shaunmulligan avatar thgreasi avatar zvin 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

Watchers

 avatar  avatar  avatar

multicontainer-getting-started's Issues

Can't connect to frontend via LAN

I've noticed that the while the project installs and runs perfectly via the public URL, I can't access it from my local network.

If this is intended behavior, it's pretty surprising to a newcomer like myself-- I'd add a note in the documentation.

socket communication issue

I'm basing a project on this repo's use of multicontainers. I thought it would be nice to try socket communications between my docker containers. I can make the connection successfully, and even send data from the client to the server on port 80. When I try to send data from the server back to the client (port 8181), the data never gets there. I've played with the ports in my docker-compose.yml file. Maybe I'm overlooking something obvious?

`
version: '2'
services:
frontend:
build: frontend
network_mode: host
privileged: true
ports:
- "80:80"
packet_radio:
build: packet_radio
network_mode: host
privileged: true
labels:
io.balena.features.kernel-modules: 1
io.balena.features.firmware: 1
ports:
- "8181:8181"
browser:
image: balenablocks/browser
privileged: true
network_mode: host
ports:
- '5011' # management API (optional)
- '35173' # Chromium debugging port (optional)

`

Wrong github user in README tutorial

In README.md, git clone [email protected]:resin-projects/multicontainer-getting-started.git is pointing to the wrong github user and fails to clone the repo.

I'm guessing it should be resin-io-projects

Great work on multicontainer! It's working great so far.

/usr/bin/telegraf: line 1: syntax error: unexpected word

I setup the multicontainer repo and it worked fine, added the /metrics folder along with the Dockerfile and telegraf.conf as well as the INFLUX_URL, INFLUX_USER, and INFLUX_PASS, and I'm seeing this in the log when it tries to start the Metrics container:

 metrics  /usr/bin/telegraf: line 1: syntax error: unexpected word (expecting ")")
02.04.18 15:33:26 (-0700) Service exited 'metrics sha256:1409f8eb942f6d0e2fab95c75985f093de5344e89584d1daae84f726c0b3c203'

Clone not possible

Hi,

I'm trying to clone this repo but without success. Any suggestions/feedback on why it is so?

Cheers,
Jagdish

Highcharts not defined

For some reason highcharts is not defined in main.js.

image

including <script src="https://code.highcharts.com/highcharts.js"></script> above <script data-main="js/app" src="js/require.js"></script> seems to solve the issue.

I'm not a frontend expert but including the script outside requireJs seems a bit hacky to me.

The certificate of ‘code.jquery.com’ has expired

Following the quick start for RPI4 (https://www.balena.io/os/docs/raspberrypi4-64/getting-started/) fails.

Log:

$ balena-cli/balena push rpi4-balena.local   

[Info]    Starting build on device 192.168.0.67
[Warn]     
[Warn]    -------------------------------------------------------------------------------
[Warn]    Using file ignore patterns from:
[Warn]    /home/USER/projects/PROJECT/multicontainer-getting-started/data/.gitignore
[Warn]    balena CLI currently uses gitgnore and dockerignore files, but an upcoming major
[Warn]    version release will disregard gitignore files and use a dockerignore file only.
[Warn]    Use the --nogitignore (-G) option to enable the new behavior already now and
[Warn]    suppress this warning. For more information, see 'balena help push'.
[Warn]    -------------------------------------------------------------------------------
[Build]   [data] Step 1/8 : FROM balenalib/raspberrypi4-64-debian-node:10-stretch-run
[Build]   [frontend] Step 1/13 : FROM balenalib/raspberrypi4-64-debian-node:10-stretch-run
[Build]   [proxy] Step 1/4 : FROM arm64v8/haproxy:1-alpine
[Build]   [data]  ---> 3268787c444d
[Build]   [data] Step 2/8 : WORKDIR /usr/src/app
[Build]   [frontend]  ---> 3268787c444d
[Build]   [frontend] Step 2/13 : WORKDIR /usr/src/app
[Build]   [proxy]  ---> f47b758309fd
[Build]   [proxy] Step 2/4 : COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
[Build]   [data]  ---> Using cache
[Build]   [data]  ---> dcc476e8a3ae
[Build]   [data] Step 3/8 : COPY package.json package.json
[Build]   [frontend]  ---> Using cache
[Build]   [frontend]  ---> dcc476e8a3ae
[Build]   [frontend] Step 3/13 : RUN install_packages wget
[Build]   [data]  ---> Using cache
[Build]   [data]  ---> d8c8e7e32216
[Build]   [data] Step 4/8 : RUN JOBS=MAX npm install --production
[Build]   [data]  ---> Using cache
[Build]   [data]  ---> 8416bfd52a87
[Build]   [data] Step 5/8 : COPY . ./
[Build]   [data]  ---> Using cache
[Build]   [data]  ---> ae75b089da81
[Build]   [data] Step 6/8 : CMD ["npm", "start"]
[Build]   [data]  ---> Using cache
[Build]   [data]  ---> 4ccd7a66a900
[Build]   [data] Step 7/8 : LABEL io.resin.local.image=1
[Build]   [data]  ---> Using cache
[Build]   [data]  ---> a1c2aca9187b
[Build]   [data] Step 8/8 : LABEL io.resin.local.service=data
[Build]   [proxy]  ---> Using cache
[Build]   [proxy]  ---> eb5eba97b3d9
[Build]   [proxy] Step 3/4 : LABEL io.resin.local.image=1
[Build]   [proxy]  ---> Using cache
[Build]   [proxy]  ---> c7373481db47
[Build]   [proxy] Step 4/4 : LABEL io.resin.local.service=proxy
[Build]   [data]  ---> Using cache
[Build]   [data]  ---> 8d25794274b2
[Build]   [data] Successfully built 8d25794274b2
[Build]   [data] Successfully tagged local_image_data:latest
[Build]   [proxy]  ---> Using cache
[Build]   [proxy]  ---> e1471245b247
[Build]   [proxy] Successfully built e1471245b247
[Build]   [frontend]  ---> Running in 3e63320940ae
[Build]   [proxy] Successfully tagged local_image_proxy:latest
[Build]   [frontend] Here are a few details about this Docker image (For more information please visit https://www.balena.io/docs/reference/base-images/base-images/): 
[Build]   Architecture: ARM v8 
[Build]   OS: Debian Stretch 
[Build]   Variant: run variant 
[Build]   Default variable(s): UDEV=off 
[Build]   The following software stack is preinstalled: 
[Build]   Node.js v10.20.0, Yarn v1.22.4 
[Build]   Extra features: 
[Build]   - Easy way to install packages with `install_packages <package-name>` command 
[Build]   - Run anywhere with cross-build feature  (for ARM only) 
[Build]   - Keep the container idling with `balena-idle` command 
[Build]   - Show base image details with `balena-info` command
[Build]   [frontend] Reading package lists...
[Build]   [frontend] Building dependency tree...
[Build]   [frontend] 
[Build]   Reading state information...
[Build]   [frontend] The following NEW packages will be installed:
[Build]     wget
[Build]   [frontend] 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
[Build]   Need to get 774 kB of archives.
[Build]   After this operation, 2772 kB of additional disk space will be used.
[Build]   Get:1 http://deb.debian.org/debian stretch/main arm64 wget arm64 1.18-5+deb9u3 [774 kB]
[Build]   [frontend] debconf: delaying package configuration, since apt-utils is not installed
[Build]   
[Build]   [frontend] Fetched 774 kB in 0s (2624 kB/s)
[Build]   [frontend] Selecting previously unselected package wget.
[Build]   (Reading database ...
(Reading database ... 15%ding database ... 5%
(Reading database ... 75%ding database ... 20%
[Build]   [frontend] (Reading database ... 80%
[Build]   [frontend] (Reading database ... 85%
[Build]   [frontend] (Reading database ... 90%
[Build]   [frontend] (Reading database ... 95%
(Reading database ... 9640 files and directories currently installed.)
[Build]   [frontend] Preparing to unpack .../wget_1.18-5+deb9u3_arm64.deb ...
[Build]   [frontend] Unpacking wget (1.18-5+deb9u3) ...
[Build]   [frontend] Setting up wget (1.18-5+deb9u3) ...
[Build]   [frontend] Removing intermediate container 3e63320940ae
[Build]   [frontend]  ---> b07b371b9b90
[Build]   [frontend] Step 4/13 : ENV JQUERY_VERSION=3.3.1
[Build]   [frontend]  ---> Running in 454c95fd4163
[Build]   [frontend] Removing intermediate container 454c95fd4163
[Build]   [frontend]  ---> 0391e41b11d7
[Build]   [frontend] Step 5/13 : ENV REQUIREJS_VERSION=2.3.5
[Build]   [frontend]  ---> Running in 35d8207d2a32
[Build]   [frontend] Removing intermediate container 35d8207d2a32
[Build]   [frontend]  ---> a379b106ac5c
[Build]   [frontend] Step 6/13 : ENV HIGHCHARTS_VERSION=7.0.3
[Build]   [frontend]  ---> Running in 298dfe7ca81e
[Build]   [frontend] Removing intermediate container 298dfe7ca81e
[Build]   [frontend]  ---> e1bf9e98f958
[Build]   [frontend] Step 7/13 : RUN mkdir -p static/js &&     wget "https://code.jquery.com/jquery-${JQUERY_VERSION}.min.js" -O static/js/jquery.min.js &&     wget "https://code.highcharts.com/${HIGHCHARTS_VERSION}/highcharts.js" -O static/js/highcharts.js &&     wget "http://requirejs.org/docs/release/${REQUIREJS_VERSION}/minified/require.js" -O static/js/require.js
[Build]   [frontend]  ---> Running in ea1a20ed7d10
[Build]   [frontend] --2020-05-31 19:49:03--  https://code.jquery.com/jquery-3.3.1.min.js
[Build]   
[Build]   [frontend] Resolving code.jquery.com (code.jquery.com)... 
[Build]   [frontend] 209.197.3.24, 2001:4de0:ac19::1:b:3a, 2001:4de0:ac19::1:b:2a, ...
[Build]   Connecting to code.jquery.com (code.jquery.com)|209.197.3.24|:443... 
[Build]   [frontend] connected.
[Build]   
[Build]   [frontend] ERROR: The certificate of ‘code.jquery.com’ is not trusted.
[Build]   
[Build]   [frontend] ERROR: The certificate of ‘code.jquery.com’ has expired.
[Build]   
[Build]   [frontend] Removing intermediate container ea1a20ed7d10
Some services failed to build:
	frontend: The command '/bin/sh -c mkdir -p static/js &&     wget "https://code.jquery.com/jquery-${JQUERY_VERSION}.min.js" -O static/js/jquery.min.js &&     wget "https://code.highcharts.com/${HIGHCHARTS_VERSION}/highcharts.js" -O static/js/highcharts.js &&     wget "http://requirejs.org/docs/release/${REQUIREJS_VERSION}/minified/require.js" -O static/js/require.js' returned a non-zero code: 5


Additional information may be available with the `--debug` flag.
For help, visit our support forums: https://forums.balena.io
For bug reports or feature requests, see: https://github.com/balena-io/balena-cli/issues/

Failed to build on Artik 710

Tried to build for an artik 710 and got errors:

[Info]      Dashboard link: https://dashboard.resin.io/apps/1142952/devices
[Info]      Building on arm03
[Info]      Pulling previous images for caching purposes...
[Success]   Successfully pulled cache images
[proxy]     Step 1/2 : FROM arm64v8/haproxy:1.8.0-alpine
[frontend]  Step 1/10 : FROM resin/artik710-node:7-slim
[data]      Step 1/6 : FROM resin/artik710-node:7-slim
[proxy]      ---> 1e8513617fd1
[proxy]     Step 2/2 : COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
[proxy]      ---> 75e0a15fe51d
[proxy]     Removing intermediate container a88dbda49857
[proxy]     Successfully built 75e0a15fe51d
[frontend]   ---> 2da0662d7d50
[frontend]  Step 2/10 : WORKDIR /usr/src/app
[data]       ---> 2da0662d7d50
[data]      Step 2/6 : WORKDIR /usr/src/app
[data]       ---> b451c09622b7
[data]      Removing intermediate container c9132c46af25
[data]      Step 3/6 : COPY package.json package.json
[frontend]   ---> dffb1399168a
[frontend]  Removing intermediate container 1785546a6e66
[frontend]  Step 3/10 : RUN apt-get update &&     apt-get install -yq wget &&     apt-get clean && rm -rf /var/lib/apt/lists/*
[frontend]   ---> Running in 6543c5305794
[data]       ---> e948789465cc
[data]      Removing intermediate container 6dc6b9c5adc1
[data]      Step 4/6 : RUN JOBS=MAX npm install --production
[data]       ---> Running in c27b618eb56d
[frontend]  Get:1 http://security.debian.org jessie/updates InRelease [44.9 kB]
[frontend]  Ign http://deb.debian.org jessie InRelease
[frontend]  Get:2 http://deb.debian.org jessie-updates InRelease [145 kB]
[frontend]  Get:3 http://deb.debian.org jessie Release.gpg [2420 B]
[frontend]  Get:4 http://deb.debian.org jessie Release [148 kB]
[frontend]  Get:5 http://deb.debian.org jessie-updates/main arm64 Packages [22.8 kB]
[data]      [email protected] /usr/src/app
[data]      ├─┬ [email protected]
[data]      │ ├─┬ [email protected]
[data]      │ │ ├─┬ [email protected]
[data]      │ │ │ └── [email protected]
[data]      │ │ └── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├─┬ [email protected]
[data]      │ │ ├── [email protected]
[data]      │ │ ├─┬ [email protected]
[data]      │ │ │ └── [email protected]
[data]      │ │ ├── [email protected]
[data]      │ │ └─┬ [email protected]
[data]      │ │   └─┬ [email protected]
[data]      │ │     ├── [email protected]
[data]      │ │     └── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├─┬ [email protected]
[data]      │ │ └── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├─┬ [email protected]
[data]      │ │ └── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├─┬ [email protected]
[data]      │ │ └── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├─┬ [email protected]
[data]      │ │ ├── [email protected]
[data]      │ │ └── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├─┬ [email protected]
[data]      │ │ ├── [email protected]
[data]      │ │ └── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├── [email protected]
[data]      │ ├─┬ [email protected]
[data]      │ │ └── [email protected]
[data]      │ ├── [email protected]
[data]      │ └── [email protected]
[data]      └─┬ [email protected]
[data]        ├── [email protected]
[data]        ├─┬ [email protected]
[data]        │ ├── [email protected]
[data]        │ ├── [email protected]
[data]        │ ├─┬ [email protected]
[data]        │ │ ├── [email protected]
[data]        │ │ ├── [email protected]
[data]        │ │ └── [email protected]
[data]        │ └─┬ [email protected]
[data]        │   ├── [email protected]
[data]        │   └── [email protected]
[data]        ├─┬ [email protected]
[data]        │ └── [email protected]
[data]        ├── [email protected]
[data]        ├─┬ [email protected]
[data]        │ ├── [email protected]
[data]        │ ├── [email protected]
[data]        │ ├── [email protected]
[data]        │ ├── [email protected]
[data]        │ ├── [email protected]
[data]        │ ├─┬ [email protected]
[data]        │ │ ├── [email protected]
[data]        │ │ ├── [email protected]
[data]        │ │ ├── [email protected]
[data]        │ │ └── [email protected]
[data]        │ ├── [email protected]
[data]        │ ├── [email protected]
[data]        │ ├── [email protected]
[data]        │ ├─┬ [email protected]
[data]        │ │ └─┬ [email protected]
[data]        │ │   └── [email protected]
[data]        │ ├── [email protected]
[data]        │ └── [email protected]
[data]        └─┬ [email protected]
[data]          └── [email protected]
[frontend]  Get:6 http://deb.debian.org jessie/main arm64 Packages [8593 kB]
[data]       ---> 4f6919587a7d
[data]      Removing intermediate container c27b618eb56d
[data]      Step 5/6 : COPY . ./
[frontend]  Fetched 8957 kB in 6s (1420 kB/s)
[frontend]  W: Failed to fetch http://security.debian.org/debian-security/dists/jessie/updates/InRelease  Unable to find expected entry 'main/binary-arm64/Packages' in Release file (Wrong sources.list entry or malformed file)
[frontend]  E: Some index files failed to download. They have been ignored, or old ones used instead.
[frontend]  
[data]       ---> a6983da6e6e5
[data]      Removing intermediate container deced0e266e1
[data]      Step 6/6 : CMD npm start
[data]       ---> Running in 43be0770f7d0
[data]       ---> 04479680b266
[data]      Removing intermediate container 43be0770f7d0
[data]      Successfully built 04479680b266
[frontend]  Removing intermediate container 6543c5305794
[frontend]  The command '/bin/sh -c apt-get update &&     apt-get install -yq wget &&     apt-get clean && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 100
[Info]      Uploading images
[Success]   Successfully uploaded images
[Error]     Some services failed to build:
[Error]       Service: frontend
[Error]         Error: The command '/bin/sh -c apt-get update &&     apt-get install -yq wget &&     apt-get clean && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 100
[Error]     Not deploying release.

remote: error: hook declined to update refs/heads/master
To git.resin.io:gh_aj_ptw/thing.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to '[email protected]:gh_aj_ptw/thing.git'

docker-compose v3 support

Hello,

I'm trying to deploy Raveberry on a Raspberry Pi 2 model B using Balena Cloud with :

deploy button

Unfortunately version 3 of your docker-compose.yml file doesn't seems to be currently supported as it raises

Error: Unsupported composition version

I had a look at

https://www.balena.io/docs/reference/supervisor/docker-compose/

but couldn't find much information about docker-compose supported versions

I tried changing 3 to 2 at

https://github.com/raveberry/raveberry/blob/1c5be126783b28264c2d9165d409348fb5fb3277/docker-compose.yml#L1

but it raises

Error: Bind mounts are not allowed

Some help will be great as I'm not a Docker specialist!

Any chance to have this running using Balena Cloud?

See also raveberry/raveberry#94

Kind regards

include links to haproxy base container

It would be helpful to include links to the haproxy base containers.
balenaOS puts the root haproxy configuration files in different locations than some may expect.

Stuck at: [Info] Still Working...

I tried to use this project recently with balena push <fleet name>, I've managed to use it previously locally, but currently seem to get it stuck outputting [Info] Still Working... continuously, just wondering if you have any suggestions. Many thanks!

[frontend]   ---> 2696938c8c95
[frontend]  Step 6/11 : ENV HIGHCHARTS_VERSION=7.0.3
[frontend]  Using cache
[frontend]   ---> a696e7c9cc93
[frontend]  Step 7/11 : RUN mkdir -p static/js &&     wget "https://code.jquery.com/jquery-${JQUERY_VERSION}.min.js" -O static/js/jquery.min.js &&     wget "https://code.highcharts.com/${HIGHCHARTS_VERSION}/highcharts.js" -O static/js/highcharts.js &&     wget "https://unpkg.com/requirejs@${REQUIREJS_VERSION}/require.js" -O static/js/require.js
[frontend]  Using cache
[frontend]   ---> 61169c9bbe82
[frontend]  Step 8/11 : COPY package.json package.json
[frontend]  Using cache
[frontend]   ---> c7872a4712ae
[frontend]  Step 9/11 : RUN JOBS=MAX npm install --production
[frontend]  Using cache
[frontend]   ---> 048c12c352f3
[frontend]  Step 10/11 : COPY . ./
[frontend]  Using cache
[frontend]   ---> b58febca8c47
[frontend]  Step 11/11 : CMD ["npm", "start"]
[frontend]  Using cache
[frontend]   ---> 72fd33516f5e
[frontend]  Successfully built 72fd33516f5e
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...
[Info]      Still Working...

frontend service build fails

Build log:

[Info]      Building on arm06
[Info]      Pulling previous images for caching purposes...
[Success]   Successfully pulled cache images
[Info]      Starting to build proxy
[Info]      Starting to build frontend
[Info]      Starting to build data
[Success]   Successfully built service proxy
[Success]   Successfully built service data
[Info]      Uploading images
[Success]   Successfully uploaded images
[Error]     Some services failed to build:
[Error]       Service: frontend
[Error]         Error: The command '/bin/sh -c mkdir -p static/js &&     wget "https://code.jquery.com/jquery-${JQUERY_VERSION}.min.js" -O static/js/jquery.min.js &&     wget "https://code.highcharts.com/${HIGHCHARTS_VERSION}/highcharts.js" -O static/js/highcharts.js &&     wget "http://requirejs.org/docs/release/${REQUIREJS_VERSION}/minified/require.js" -O static/js/require.js' returned a non-zero code: 5
[Info]      Built on arm06
[Error]     Not deploying release.

Steps to reproduce:
Open browser and navigate to: https://dashboard.balena-<cloud/staging>.com/deploy?repoUrl=https://github.com/balena-io-examples/multicontainer-getting-started

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.