Giter Site home page Giter Site logo

waartaa's Introduction

waartaa

A web IRC client written on top of React and Pyramid. It is aimed towards being an intuitive, collaborative IRC client across multiple devices of the user along with centralized logging.

System dependencies

# Dependency for crossbar
sudo dnf install -y libsodium libsodium-devel

Development

  • Install the system-level dependencies
    sudo dnf install python-virtualenvwrapper libsodium libsodium-devel

  • Create a virtualenv
    mkvirtualenv waartaa

  • Install the required packages
    pip install -r dev_requirements.txt

  • Waartaa runs on top of ircb. So follow the instructions to setup ircb.

  • Run the ircb stores
    IRCB_SETTING=ircb.settings.py ircb run server -m allinone --port 9999

  • Run the development server
    python waartaa/app.py

  • Move to a different terminal and start
    cd waartaa/client/

  • Build JS assests
    npm start

Contribute

  1. Setup and run waartaa locally.
  2. Report bugs or submit feature requests at https://github.com/waartaa/waartaa/issues/new.
  3. Feel free to pick up open issues from https://github.com/waartaa/waartaa/issues?state=open. Don't hesitate to ask for help.

Comunicate

  1. Mailing list: https://groups.google.com/forum/#!forum/waartaa
  2. IRC: #waartaa on Freenode

waartaa's People

Contributors

arjitc avatar bitdeli-chef avatar bnprk avatar bogdanciobanu avatar codenamesubho avatar d-ne0 avatar dandandan avatar darkowlzz avatar desouradeep avatar gggodhwani avatar hardfire avatar k4rtik avatar kaushikgandhi avatar mavjs avatar mjnovice avatar rtnpro avatar rupojs avatar ryansb avatar sanbornsen avatar sayanchowdhury avatar sheeshmohsin avatar shilpita-nag avatar sourcedexter 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

waartaa's Issues

Don't post '/' command to channel.

When typing commands in a channel/pm room, we should not post the message to the room. It should be logged if required only for the particular user.

Porting waartaa as an android application

Hey Guys ~!
I took a look at waartaa and i must tell you its a great application. I have an idea of making a mobile extension of waartaa. This is what will globalise waataa to a greater extent. My idea of making waartaa it very user-friendly, easy to use through mobile phones.

I would like to propose an idea of writing a native android application for it.

Thanks & Regards
Sunny Sharma

npm install meteorite Failed

npm http GET https://registry.npmjs.org/meteorite

npm ERR! Error: failed to fetch from registry: meteorite
npm ERR! at /usr/share/npm/lib/utils/npm-registry-client/get.js:139:12
npm ERR! at cb (/usr/share/npm/lib/utils/npm-registry-client/request.js:31:9)
npm ERR! at Request._callback (/usr/share/npm/lib/utils/npm-registry-client/request.js:136:18)
npm ERR! at Request.callback (/usr/lib/nodejs/request/main.js:119:22)
npm ERR! at Request. (/usr/lib/nodejs/request/main.js:212:58)
npm ERR! at Request.emit (events.js:88:20)
npm ERR! at ClientRequest. (/usr/lib/nodejs/request/main.js:412:12)
npm ERR! at ClientRequest.g (events.js:156:14)
npm ERR! at ClientRequest.emit (events.js:67:17)

Scaling waartaa

Issues:

  1. Duplicate logs per user per channel
  2. As MongoDB size grows, read and write is becoming costlier.

Proposed solutions:

  1. Use capped collection for log collections and replicate old data to another db.
  2. Store only single log per channel for all user.

nginx could not be found in Centos Vagrant box

TASK: [nginx | Install nginx] *************************************************
failed: [default] => {"changed": false, "failed": true, "item": "", "rc": 0, "results": []}
msg: No Package matching 'nginx' found available, installed or updated

FATAL: all hosts have already failed -- aborting

Optimize rendering channel nicks list

Currently, switching to a server channel with a lot of nicks (e.g., 150) is slow. It takes time to compute and render the nick list for the channel.

I see two solutions for this:

  1. Always keep channel's nick list rendered and just display and hide it as needed.
  2. Non blocking rendering of channel's nick list.

I am in favour of the 1st solution. Please feel free to share your suggestions.

Handlebar not rendering text between <>

The following characters could interfere with an HTML or JavaScript parser and should be escaped in string literals: <, >, ", ', , and &. Though all the special characters are being escaped but immediate text between < and > is not rendering by the handlebar.

Change the placeholder for channels list

When adding a new server, the placeholder for channels list is "Channels...". Something like "#channel1, #channel2, #channel3" is more intuitive, just like when adding new channels to an existing server.

Find the optimal amount of data to be rendered on client side based on viewport size

Currently, we have hard coded the number of chat logs, channel nicks to render by default on the client. This is not optimal: sometimes we display more data than visible (for small screens) and sometimes less (for large screens). We need to calculate these values dynamically on page load taking viewport size into account.

This will help make page load and chat room transition snappy for most screen sizes and also allowing us to display more data for large screens in a descent (if not fast) way.

Notify user on mention when browser/tab is not active

Currently, the user is notified on mention on a channel/pm which is not active. But what if he's mentioned on the active chatroom and the browser or waartaa's tab is not in focus. The user needs to be notified in this case too.

Deploy on openshift

Hello:
Has anyone succeeded in installing waartaa on OpenShift?, Looks like a good place to run an instance

Sort server logs by date (from old to latest)

Currently server logs are shown in the chat interface in reverse order, I mean, from newest to old. This is a silly mistake and an easy fix.

Please feel free to pick it up and fix it.

freezes at Signup

In the front page ( first time run ), when pressed the button Configure GitHub Login, the app freezes.

Forwards always to localhost

I installed waartaa on a shell space, i let it listen on localhost:59520 and let apache pass the requests through via
RewriteRule ^waartaa/(.*) http://localhost:59520/$1 [P]

It always forwards! me to https://localhost/.
I tried changing the rule to
RewriteRule ^waartaa/(.*) https://localhost:59520/$1 [P]
what gives me an internal server error.

I start meteor with ROOT_URL="https://domain/waartaa/"

Any idea what could be wrong? I'm new to the meteor/nodejs stuff so i imagine i missed some config parameters.

Please update the dependencies doc

tried to install Waarta on my VPS but due to so many dependencies which I was able to figure out on seeing the error messages and still wasnt able to run it.
So may be please someone list all the dependencies needed. even Mongo DB was not listed and I figured it out after so much time.

Fix selecting server rooms.

When waartaa is loaded first time, at least a server room (preferably the first channel room > pm room > server room) should be auto selected.

When a selected server room is closed, the previous server room (if not available, then the next room) should be selected.

nick doesn't changes if someone changes his nick

If someone join IRC using 'foo' nick(using different IRC client, say hexchat), waartaa says foo joined the channel.
But now, if 'foo' changes his nick to 'bar' using his IRC client(/nick bar), the right column still shows the nick as foo. So here comes the problem that there is no nick as 'foo' at present but waartaa shows there is a nick 'foo' and there is a nick 'bar' at present but waartaa do not shows 'bar'.

See this image: Here is a nick paidn0de(After changing the nick from iamsudip)
untitled1

But waartaa do not show the update:(It still shows my previous nick)
untitled

Debian install instruction in README

In README file:

For Debian/Ubuntu install only node.js and it will include npm as:

sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs

Do waartaa depends on specific version of node.js? In Debian, simply installing node.js like,

sudo apt-get install nodejs

should work!

/msg command

Can you add this command, i have probleam to identify without this. Thanks

Errors after install

Can you help me?
SO Fedora 20

Traceback:

[pablo2m@localhost waartaa]$ ./setup.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0Downloading Meteor distribution
100 4223 0 4223 0 0 2432 0 --:--:-- 0:00:01 --:--:-- 2434

################################################################# 100,0%

Meteor 0.7.0.1 has been installed in your home directory (~/.meteor).
Writing a launcher script to /usr/local/bin/meteor for your convenience.
This may prompt for your password.

To get started fast:

$ meteor create ~/my_cool_app
$ cd ~/my_cool_app
$ meteor

Or see the docs at:

docs.meteor.com

npm http GET https://registry.npmjs.org/meteorite
npm http 200 https://registry.npmjs.org/meteorite
npm http GET https://registry.npmjs.org/meteorite/-/meteorite-0.7.1.tgz
npm http 200 https://registry.npmjs.org/meteorite/-/meteorite-0.7.1.tgz
npm http GET https://registry.npmjs.org/ddp
npm http GET https://registry.npmjs.org/underscore/1.3.3
npm http GET https://registry.npmjs.org/fstream
npm http GET https://registry.npmjs.org/wrench
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/prompt/0.2.11
npm http GET https://registry.npmjs.org/colors/0.6.0-1
npm http GET https://registry.npmjs.org/async/0.2.9
npm http 200 https://registry.npmjs.org/underscore/1.3.3
npm http GET https://registry.npmjs.org/underscore/-/underscore-1.3.3.tgz
npm http 200 https://registry.npmjs.org/prompt/0.2.11
npm http GET https://registry.npmjs.org/prompt/-/prompt-0.2.11.tgz
npm http 200 https://registry.npmjs.org/wrench
npm http GET https://registry.npmjs.org/wrench/-/wrench-1.5.4.tgz
npm http 200 https://registry.npmjs.org/colors/0.6.0-1
npm http GET https://registry.npmjs.org/colors/-/colors-0.6.0-1.tgz
npm http 200 https://registry.npmjs.org/ddp
npm http GET https://registry.npmjs.org/ddp/-/ddp-0.4.3.tgz
npm http 200 https://registry.npmjs.org/underscore/-/underscore-1.3.3.tgz
npm http 200 https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz
npm http 200 https://registry.npmjs.org/async/0.2.9
npm http GET https://registry.npmjs.org/async/-/async-0.2.9.tgz
npm http 200 https://registry.npmjs.org/fstream
npm http GET https://registry.npmjs.org/fstream/-/fstream-0.1.25.tgz
npm http 200 https://registry.npmjs.org/prompt/-/prompt-0.2.11.tgz
npm http 200 https://registry.npmjs.org/colors/-/colors-0.6.0-1.tgz
npm http 200 https://registry.npmjs.org/wrench/-/wrench-1.5.4.tgz
npm http 200 https://registry.npmjs.org/ddp/-/ddp-0.4.3.tgz
npm http 200 https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz
npm http 200 https://registry.npmjs.org/async/-/async-0.2.9.tgz
npm http 200 https://registry.npmjs.org/fstream/-/fstream-0.1.25.tgz
npm http GET https://registry.npmjs.org/faye-websocket
npm http GET https://registry.npmjs.org/meteor-ejson
npm http GET https://registry.npmjs.org/node-srp
npm http GET https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/mkdirp
npm http GET https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/wordwrap
npm http GET https://registry.npmjs.org/minimist
npm http GET https://registry.npmjs.org/pkginfo
npm http GET https://registry.npmjs.org/read
npm http GET https://registry.npmjs.org/utile
npm http GET https://registry.npmjs.org/revalidator
npm http GET https://registry.npmjs.org/winston
npm http 200 https://registry.npmjs.org/node-srp
npm http GET https://registry.npmjs.org/node-srp/-/node-srp-0.0.1.tgz
npm http 200 https://registry.npmjs.org/meteor-ejson
npm http GET https://registry.npmjs.org/meteor-ejson/-/meteor-ejson-0.6.3.tgz
npm http 200 https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz
npm http 200 https://registry.npmjs.org/wordwrap
npm http GET https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz
npm http 200 https://registry.npmjs.org/mkdirp
npm http GET https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz
npm http 200 https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.1.tgz
npm http 200 https://registry.npmjs.org/pkginfo
npm http GET https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz
npm http 200 https://registry.npmjs.org/node-srp/-/node-srp-0.0.1.tgz
npm http 200 https://registry.npmjs.org/read
npm http GET https://registry.npmjs.org/read/-/read-1.0.5.tgz
npm http 200 https://registry.npmjs.org/meteor-ejson/-/meteor-ejson-0.6.3.tgz
npm http 200 https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz
npm http 200 https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.1.tgz
npm http 200 https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz
npm http 200 https://registry.npmjs.org/read/-/read-1.0.5.tgz
npm http 200 https://registry.npmjs.org/revalidator
npm http GET https://registry.npmjs.org/revalidator/-/revalidator-0.1.6.tgz
npm http 200 https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz
npm http 200 https://registry.npmjs.org/utile
npm http GET https://registry.npmjs.org/utile/-/utile-0.2.1.tgz
npm http 200 https://registry.npmjs.org/minimist
npm http GET https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz
npm http 200 https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/rimraf/-/rimraf-2.2.5.tgz
npm http 200 https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz
npm http 200 https://registry.npmjs.org/revalidator/-/revalidator-0.1.6.tgz
npm http 200 https://registry.npmjs.org/utile/-/utile-0.2.1.tgz
npm http 200 https://registry.npmjs.org/faye-websocket
npm http GET https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.2.tgz
npm http 200 https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz
npm http 200 https://registry.npmjs.org/rimraf/-/rimraf-2.2.5.tgz
npm http 200 https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.2.tgz
npm http GET https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/websocket-driver
npm http 200 https://registry.npmjs.org/winston
npm http GET https://registry.npmjs.org/winston/-/winston-0.6.2.tgz
npm http 200 https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz
npm http 200 https://registry.npmjs.org/underscore
npm http 200 https://registry.npmjs.org/websocket-driver
npm http GET https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.3.2.tgz
npm http 200 https://registry.npmjs.org/winston/-/winston-0.6.2.tgz
npm http 200 https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz
npm http 200 https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.3.2.tgz
npm http GET https://registry.npmjs.org/mute-stream
npm http GET https://registry.npmjs.org/deep-equal
npm http GET https://registry.npmjs.org/i
npm http GET https://registry.npmjs.org/ncp
npm http GET https://registry.npmjs.org/mkdirp
npm http GET https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/cycle
npm http GET https://registry.npmjs.org/eyes
npm http GET https://registry.npmjs.org/request
npm http GET https://registry.npmjs.org/stack-trace
npm http GET https://registry.npmjs.org/pkginfo/-/pkginfo-0.2.3.tgz
npm http 200 https://registry.npmjs.org/mute-stream
npm http GET https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.4.tgz
npm http 200 https://registry.npmjs.org/deep-equal
npm http GET https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz
npm http 304 https://registry.npmjs.org/mkdirp
npm http 200 https://registry.npmjs.org/cycle
npm http GET https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz
npm http 200 https://registry.npmjs.org/i
npm http GET https://registry.npmjs.org/i/-/i-0.3.2.tgz
npm http 200 https://registry.npmjs.org/pkginfo/-/pkginfo-0.2.3.tgz
npm http 200 https://registry.npmjs.org/ncp
npm http GET https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz
npm http 200 https://registry.npmjs.org/eyes
npm http GET https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz
npm http 200 https://registry.npmjs.org/stack-trace
npm http GET https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz
npm http 200 https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz
npm http 200 https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz
npm http 200 https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.4.tgz
npm http 200 https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz
npm http 200 https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz
npm http 200 https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz
npm http 200 https://registry.npmjs.org/i/-/i-0.3.2.tgz
npm http 200 https://registry.npmjs.org/request
npm http GET https://registry.npmjs.org/request/-/request-2.9.203.tgz
npm http 200 https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/async/-/async-0.1.22.tgz
npm http 200 https://registry.npmjs.org/request/-/request-2.9.203.tgz
npm http 200 https://registry.npmjs.org/async/-/async-0.1.22.tgz
/bin/mrt -> /lib/node_modules/meteorite/bin/mrt.js

[email protected] postinstall /lib/node_modules/meteorite
sh ./completions/postinstall.sh

npm WARN unmet dependency /lib/node_modules/block-stream requires inherits@'~2.0.0' but will load
npm WARN unmet dependency undefined,
npm WARN unmet dependency which is version undefined
npm WARN unmet dependency /lib/node_modules/fstream requires inherits@'~2.0.0' but will load
npm WARN unmet dependency undefined,
npm WARN unmet dependency which is version undefined
npm WARN unmet dependency /lib/node_modules/fstream-ignore requires inherits@'2' but will load
npm WARN unmet dependency undefined,
npm WARN unmet dependency which is version undefined
npm WARN unmet dependency /lib/node_modules/fstream-npm requires inherits@'2' but will load
npm WARN unmet dependency undefined,
npm WARN unmet dependency which is version undefined
npm WARN unmet dependency /lib/node_modules/glob requires inherits@'2' but will load
npm WARN unmet dependency undefined,
npm WARN unmet dependency which is version undefined
npm WARN unmet dependency /lib/node_modules/npmconf requires inherits@'~2.0.0' but will load
npm WARN unmet dependency undefined,
npm WARN unmet dependency which is version undefined
npm WARN unmet dependency /lib/node_modules/tar requires inherits@'2' but will load
npm WARN unmet dependency undefined,
npm WARN unmet dependency which is version undefined
[email protected] /lib/node_modules/meteorite
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
✓ jquery-ui-bootstrap
tag: https://github.com/TimHeckel/meteor-jquery-ui-bootstrap.git#v0.1.2
✓ observatory
tag: https://github.com/jhoxray/observatory.git#v0.3.21
✓ irc
tag: https://github.com/Pent/meteor-irc.git#v0.2.2
✓ handlebar-helpers
tag: https://github.com/raix/Meteor-handlebar-helpers.git#v0.0.9
✓ require
tag: https://github.com/tomconnors/meteor-require.git#v0.1.0
✓ presence
tag: https://github.com/tmeasday/meteor-presence.git#v0.3.0
✓ bootstrap-3
tag: https://github.com/mangasocial/meteor-bootstrap-3.git#v0.3.7
✓ accounts-ui-bootstrap-3
tag: https://github.com/mangasocial/meteor-accounts-ui-bootstrap-3.git#v0.2.4
✓ nodetime
tag: https://github.com/subhog/meteor-nodetime.git#v0.2.0
✓ moment
tag: https://github.com/acreeger/meteor-moment.git#v2.2.1
✓ winston-loggly
tag: https://github.com/tomrogers3/meteor-winston-loggly.git#v0.0.3
✓ winston
tag: https://github.com/tomrogers3/meteor-winston.git#v0.0.3
✓ assert
tag: https://github.com/peerlibrary/meteor-assert.git#v0.2.2
✓ nprogress
tag: https://github.com/zhouzhuojie/meteor-nprogress.git#v0.0.3
✓ GAnalytics
tag: https://github.com/datariot/meteor-ganalytics.git#v0.1.0
✓ jquery-ui
tag: https://github.com/TimHeckel/meteor-jquery-ui.git#v1.9.2
✓ observatory-apollo
tag: https://github.com/superstringsoftware/observatory-apollo.git#v0.3.2
✓ observatory-galileo
branch: https://github.com/superstringsoftware/observatory-galileo.git#master

Done installing smart packages
[pablo2m@localhost waartaa]$ cd waartaa
[pablo2m@localhost waartaa]$ meteor
[[[[[ ~/waartaa/waartaa ]]]]]

Initializing mongo database... this may take a moment.
nodetime: updating npm dependencies -- nodetime...
winston-loggly: updating npm dependencies -- winston, winston-loggly...
winston: updating npm dependencies -- winston...
=> Errors prevented startup:

While building the application:
error: no such package: 'router'
error: no such package: 'HTML5-History-API'
error: no such package: 'page-js-ie-support'

=> Your application has errors. Waiting for file change.

Not able to use registered nicks

Registered nicks for log in is not accepted. The command "/msg NickServ identify password" doesn't assign your registered nick.

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.