Git Product home page Git Product logo

pokemon-showdown's Introduction

Smogon

@pkmn's unofficial APIs for Smogon's analysis, moveset, sample teams, and usage statistics data.

Smogon does not officially provide any API for third party developers, and is at liberty to make breaking changes to its internal data representations at any point - this project attempts to provide a stable way of accessing the data Smogon exposes on its site. Two packages are provided:

  • smogon: A low-level wrapper around Smogon's analysis and statistics endpoints used to ergonomically fetch raw data via point queries from the source.
  • @pkmn/smogon: A rich client for the processed and aggregated Smogon analysis and moveset information available at data.pkmn.cc.

data.pkmn.cc contains several curated datasets pulled from Smogon and Pokémon Showdown which have been processed to allow for efficient batch access of analysis, sets, teams, and statistics data by format or generation. Analysis and set data is refreshed automatically every 24 hours as are sample teams, the best stats data for each generation is converted each month into @pkmn/stats's optimized output format, and information about Pokémon Showdown’s standard Random Battle formats from pkmn/randbats is updated hourly.

The API for these endpoints is documented though subject to change - developers relying on these endpoints should join the Discord to keep abreast of updates and/or rely on the latest version of the @pkmn/smogon package to simplify the data handling.

While this project's code is distributed under the terms of the MIT License and the aggregated stats information is freely available in the public domain, the set and analysis data is copyrighted by Smogon and its contributors.

pokemon-showdown's People

Contributors

acakewearingahat avatar annikacodes avatar ascriptmaster avatar asgdf avatar asheviere avatar bmelts avatar cathyjf avatar dawoblefet avatar distrib-ps avatar hoeencoder avatar iscke avatar joimer avatar kamilaborowska avatar karthik99999 avatar kotarou3 avatar krisxv avatar livid-washed avatar marty-d avatar mathyfurret avatar mia-pi-git avatar morfent avatar panpawn avatar pyuk-bot avatar scheibo avatar sirdonovan avatar slayer95 avatar talktakestime avatar theimmortal avatar urkerab avatar zarel 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pokemon-showdown's Issues

This issue is to fix a bug

Creating this issue will hopefully fix a GitHub bug. I apologise to everybody being emailed by this but it's a necessary evil.

Gourgeist sizes not showing

Gourgeist sprites aren't showing in battle, sizes are saved as images as follows:

gourgeist.png
gourgeist-small.png
gourgeist-large.png
gourgeist-super.png

this appears to be how the are and ought to be saved, alert me if the sprite files should change.

Retaliate has not been implemented

Retaliate has not been implemented. It's BP is supposed to double to 140 after a teammate's fainting, but that is not currently in the code.

Ladder server overloaded

When playing random battles with friends on my setup of the system we get this error all the time. Is it possible to set up our own ladder server so we can get over this issue and have our own ranking system?

LC: Pomeg Glitch moves & Gen IV abilities

Genderless Pokemon in Little Cup have vastly limited movepools (limited to only TM, HM, Move Tutor moves, and whatever few moves are available by Lv. 5), however if the Pokemon is available from the ADV era, the Pomeg glitch can be exploited to give the Pokemon ANY Level-Up move.

That's all well and good... except for genderless Pokemon who had only one ability prior to Gen IV (apparently this is just Porygon). Basically, since that Pokemon can only have those Level-up moves by being bred in Gen III, it can't have the Gen IV ability.

tl;dr--LC Porygon MUST have Trace if it has any level-up moves beyond Conversion(2), Sharpen and Tackle.

In addition, it looks like genderless level-up restrictions aren't being enforced for Pokemon only obtainable in Gen IV/V, namely I'm seeing Golett with DynamicPunch.

Unicode not properly being rendered in ladders, replays

What it says on the tin, we need to parse our text properly as unicode somehow, as unicode usernames are pretty common. While it makes sense to strip unicode before handing it off to something that doesn't handle it well, this is something that's been missing.

Kanto Starter Event Moves missing

http://projectpokemon.org/forums/showthread.php?23748-B2W2-Event-Kanto-Starter-Eggs

Bulbasaur: False Swipe, Block, Frenzy Plant, Weather Ball
Charmander: False Swipe, Block, Blast Burn, Acrobatics
Squirtle: False Swipe, Block, Hydro Cannon, Follow Me

Male-only, not compatible with DW abilities, obviously.

Apparently this is important for people doing Charizard for NU Research Week.

I'll program it in myself if no one does it first, but it might be a day or two.

It appears anyone can unbanall

Hi, I'm not very familiar with the project, and I was just looking at the code and found this
chat-commands.js Line 454

if (user.can('ban')) {

is supposed to be

if (!user.can('ban')) {

Order of pokemon made during team selection is not honored.

When using the team below and selecting crobat as the lead the actual order that comes up is:

Excadrill / Rotom-Mow / Heatran / Crobat -- It does not honor the leads selected.

Excadrill (M) @ Ground Gem
Trait: Mold Breaker
Level: 50
EVs: 4 HP / 252 Atk / 252 Spd
Adamant Nature

  • Drill Run
  • Rock Slide
  • X-Scissor
  • Protect

Rotom-Mow @ Choice Specs
Trait: Levitate
Level: 50
EVs: 252 HP / 252 SAtk / 4 Spd
Modest Nature

  • Leaf Storm
  • Thunderbolt
  • Hidden Power [Ice]
  • Trick

Heatran (F) @ Chople Berry
Trait: Flash Fire
Level: 50
EVs: 172 HP / 252 SAtk / 84 Spd
Modest Nature

  • Heat Wave
  • Dragon Pulse
  • Substitute
  • Protect

Crobat (M) @ Flying Gem
Trait: Inner Focus
Level: 50
EVs: 4 HP / 252 Atk / 252 Spd
Jolly Nature

  • Acrobatics
  • U-turn
  • Taunt
  • Protect

Swampert (M) @ Sitrus Berry
Trait: Torrent
Level: 50
EVs: 252 HP / 252 Atk / 4 Spd
Adamant Nature
IVs: 30 HP / 30 Atk / 30 Def / 30 SAtk / 30 SDef

  • Waterfall
  • Ice Punch
  • Yawn
  • Protect

chat dice

Implement a /dice command that will take for input a string in the form of "ndx" where n is the number of dice to be rolled and x is the number of faces on each die. The command will cause n number of random values from 1-x to be displayed.

EDIT: Maybe allowing nonvoiceds to broadcast dice should be an option for rooms.

Unintuitive timer/disconnect behaviour

[01:52] ete hm, it feels kinda odd that if someone disconnects near the start of a turn, you can make them lose ~90 seconds quicker by turning timer off then on
[01:53] ete having a shorter clock for disconnected people is nice, but maybe it should be applied automatically?
[01:55] ete or that trick removed if it's decided to give people more time to reconnect in all cases
[01:55] Cathy i agree, that's a good suggestion

(if making issues here for things I've brought up on irc is not a good idea, let me know.)

Misc Sprite Fixes

Mega Charizard X not loading front and back, files are charizard-mega-x.png

Aegislash shield forme back isn't loading sword is, aegislash-shield.png

Meowstic gender changes will need to show, both have different moves.

Pyroar doesn't show gender changes, not required for competitive use.

Change chat tab colors to notify of new text

It would be useful if chat tabs would turn orange when new messages appear, similar to how battle tabs work. A different color when a new message with your nick in it appears might be cool too.

Error when trying to do node app.js

I cd to the folder app.js is in and then try to do "node app.js" and it throws the following error:

module.js:340
throw err;

Error: Cannot find module 'sugar'
at Function.Module._resolveFilename module.js:338:15
at Function.Module._load module.js:280:25
at Module.require module.js:362:17
at require module.js:378:17
at Object. <C:\Users\jarrett\Documents\Jarret's Docs\Applications\PS\Zarel-Pokemon-Showdown-1bb7a10\app.js:10:1>
at Module._compile module.js:449:26
at Object.Module._extensions..js module.js:467:10
at Module.load module.js:356:32
at Function.Module._load module.js:312:12
at Module.runMain module.js:492:10

Here's my config file as well:
// The server port - the port to run Pokemon Showdown under
exports.port = 8000;

// The setuid user - if you're using a port below 1024, you probably want to run
// PS as root and set this to an unprivileged user
exports.setuid = '';

// protocol - WebSockets ("ws") or Socket.IO ("io").
// We recommend using WebSockets unless you have a really compelling reason not to.
exports.protocol = 'ws';

// The server ID - a unique ID describing this Showdown server
exports.serverid = 'Darkrai Hollow';

// The server token - to access the login database and ladder on pokemonshowdown.com
// This token must be registered for accessing the ladder, but you will
// still be able to login with an unregistered token.
exports.servertoken = '382hgraw4jr2tioq';

// login server data - don't forget the http:// and the trailing slash
// This is the URL of the user database and ladder mentioned earlier.
// Don't change this setting - there aren't any other login servers right now
exports.loginserver = 'http://play.pokemonshowdown.com/';
exports.loginserverkeyalgo = "RSA-SHA1";
exports.loginserverpublickey = "-----BEGIN PUBLIC KEY-----\n" +
"MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEApd1so8v8acgTXNQ/uQ12\n" +
"oAoq0Cf27iyg+hS8elJZqkTelqIwA0OWTq4NzMCdrUWkmi+pHoUKy4wLHbD2w9KI\n" +
"+kjah5HncXmqb7FK9RVjD8z6C84qFMBvg/VXX16c5CP2h0BC/pSwJfkw0NtOdFZL\n" +
"ZhCkLObCjAN367/JGkp7CGP/hnNEm57GX9OUThfSX3t/DhV0cHdRkECsYkrTzZOV\n" +
"nsz3uifOjVHiW5PR0KNwQm0ed6Bmg24PK7RJ091aRkT6lvmD1MB5Zl1SIV2l+wF6\n" +
"O/G3x63WhR1HrNEM/jr/LVz+QjWuvNv68iSHDV3U62JkG/Yc53An1n/urX4J72DS\n" +
"twIBIw==\n" +
"-----END PUBLIC KEY-----\n";

// Pokemon of the Day - put a pokemon's name here to make it Pokemon of the Day
// The PotD will always be in the #2 slot (not #1 so it won't be a lead)
// in every randomly-generated team.
exports.potd = 'Darkrai';

// crash guard - write errors to log file instead of crashing
// This is normally not recommended - if Node wants to crash, the
// server needs to be restarted
// Unfortunately, socket.io bug 409 requires some sort of crash guard
// socketio/socket.io#609
exports.crashguard = true;

// local sysop - automatically promote users who connect from
// 127.0.0.1 to the highest ranking group (Usually &, or sysop)
exports.localsysop = false;

// report joins and leaves - shows messages like " joined"
// Join and leave messages are small and consolidated, so there will never
// be more than one line of messages.
// This feature can lag larger servers - turn this off if your server is
// getting more than 80 or so users.
exports.reportjoins = true;

// report battles - shows messages like "OU battle started"
// This feature can lag larger servers - turn this off if your server is
// getting more than 160 or so users.
exports.reportbattles = true;

// moderated chat - prevent unregistered, unvoiced users from speaking
// This should only be enabled temporarily, when you're dealing with
// huge influxes of spammy users.
exports.modchat = false;

// permissions and groups:
// Each entry in groupsranking' specifies the ranking of the groups. // Each entry ingroups' is a seperate group. Some of the members are "special"
// while the rest is just a normal permission.
// The special members are as follows:
// - id: Specifies an id for the group.
// - name: Specifies the human-readable name for the group.
// - root: If this is true, the group can do anything.
// - inherit: The group uses the group specified's permissions if it cannot
// find the permission in the current group. Never make the graph
// produced using this member have any cycles, or the server won't run.
// - jurisdiction: The default jurisdiction for targeted permissions where one isn't
// explictly specified. "Targeted permissions" are permissions
// that might affect another user, such as ban' orpromote'.
// 's' is a special group where it means the user itself only
// and 'u' is another special group where it means all groups
// lower in rank than the current group.
// All the possible permissions are as follows:
// - console: Developer console (>>).
// - lockdown: /lockdown and /endlockdown commands.
// - hotpatch: /hotpatch, /crashfixed and /savelearnsets commands.
// - ignorelimits: Ignore limits such as chat message length.
// - promote: Promoting and demoting. Will only work if the target user's current
// group and target group are both in jurisdiction.
// - ban: Banning and unbanning.
// - mute: Muting and unmuting.
// - receivemutedpms: Receive PMs from muted users.
// - forcerename: /fr command.
// - forcerenameto: /frt command.
// - redirect: /redir command.
// - ip: IP checking.
// - alts: Alt checking.
// - broadcast: Broadcast informational commands.
// - announce: /announce command.
// - modchat: Set modchat.
// - potd: Set PotD.
// - forcewin: /forcewin command.
// - battlemessage: /a command.
exports.groupsranking = [' ', '+', '%', '@', '&', ''];
exports.groups = {
'
': {
id: "admin",
name: "Darkrai",
root: true,
rank: 5
},
'&': {
id: "leader",
name: "Cresselia",
inherit: '@',
jurisdiction: '@U',
promote: 'u',
forcewin: true,
declare: true,
modchatall: true,
potd: true,
namelock: true,
forcerenameto: true,
rank: 4
},
'@': {
id: "mod",
name: "Nightmare",
inherit: '%',
jurisdiction: 'u',
ban: true,
modchat: true,
redirect: true,
forcerename: true,
ip: true,
alts: '@U',
rank: 3
},
'%': {
id: "driver",
name: "Dream",
inherit: '+',
jurisdiction: 'u',
announce: true,
warn: true,
mute: true,
forcerename: true,
rank: 2
},
'+': {
id: "voice",
name: "Sleep",
inherit: ' ',
broadcast: true,
rank: 1
},
' ': {
ip: 's',
alts: 's',
rank: 0
}
};

Pokemon of the day

Hi, I have been trying to run the pokemon showdown system locally.
Everything appear to work, but I can't set pokemon of the day.

When manually editing the config.js file it works as it should, however, the /potd command appear to do nothing. The log correctly reports the appropriate change, however, when commencing battle nothing has changed.
Currently I have exports.potd = 'Bulbarsaur'; in config.js and typing /potd or /potd Pikachu in the chat as root doesn't change the Bulbasaur in second slot in random battles.

Am I just being stupid and doing something totally wrong? I attempted this as (what I assume is) root or admin. At least I have a ~ in front of my name in the lobby: ~bcsj.

Scald and Bide malfunction in NEXT

Discovered the following issues in in Gen Next:

Scald's damage is still affected by weather.

Bide fails on every use, regardless of HP or last move used.

3 glitches in 1 replay – Powder moves work on Grass-types; Mega Venusaur’s Thick Fat doesn’t work; Shaymin-Sky outspeeds Greninja?!?

http://pokemonshowdown.com/replay/gen6customgame-57922885

n.1 Turn 1: Mega Venusaur is put to sleep by a bounced Sleep Powder, Powder moves should no longer work on Grass-types in gen 6.

n.2 Turn 7: Greninja deals 49% damage to Mega Venusaur with Ice Beam, this leads me to believe Thick Fat isn’t implemented correctly (calculation: 252 SpA (custom) Ice Beam vs. 252 HP / 252+ SpD Thick Fat (custom): 86-104 (23.62 - 28.57%) -- possible 4HKO).

n.3 Turn 19: Shaymin-Sky outspeeds Greninja???? wtf why??? (Note: held item was Life Orb for both Pokémon.) We both are 252+ Speed, obviously. Edit: oh, Greninja’s base speed stat is displayed as 129 at the time of writing, and we both confirmed that the Team Builder displayed 392 for my Greninja and 388 for his Shaymin-Sky.

Support /modlog within a windows environment

Several projects exist in the Win32 environment that allow for use of commands like tail, awk and sort.

http://sourceforge.net/projects/tailforwin32/
http://gnuwin32.sourceforge.net/packages/coreutils.htm
http://gnuwin32.sourceforge.net/packages/gawk.htm

Not to mention projects like CygWin which completely emulate a Linux/Unix environment.

http://www.cygwin.com/

I'm reasonably certain that it would be possible to bring /modlog functionality to those running windows based servers.

Server creation

I'm trying to make a serverby following the instructions given, but my first entry into cmd is not being accepted. I'm wondering if that is a normal problem or not and how do I fix it?

Move: "Beatup" gives runtime errors

A review of errors.txt on the Smogon server disclosed numerous entries of the following form:

TypeError: Cannot read property 'baseStats' of undefined
    at Battle.exports.BattleMovedex.beatup.basePowerCallback (/raid0/ps/showdown/data/moves.js:704:78)
    at Battle.getDamage (/raid0/ps/showdown/battles.js:2213:39)
    at Battle.exports.BattleScripts.moveHit (/raid0/ps/showdown/data/scripts.js:319:18)
    at Battle.exports.BattleScripts.rollMoveHit (/raid0/ps/showdown/data/scripts.js:203:27)
    at Battle.exports.BattleScripts.useMove (/raid0/ps/showdown/data/scripts.js:128:18)
    at Battle.exports.BattleScripts.runMove (/raid0/ps/showdown/data/scripts.js:26:8)
    at Battle.runDecision (/raid0/ps/showdown/battles.js:2577:10)
    at Battle.go (/raid0/ps/showdown/battles.js:2735:10)
    at Battle.choose (/raid0/ps/showdown/battles.js:2786:10)
    at Battle.receive (/raid0/ps/showdown/battles.js:3048:9)

The bug appears to be in the implementation of Beatup.

Bide with Effect Spore, etc

When Bide is initialized, 0% damage is dealt to the user. However, this gives a chance for Effect Spore, Static and similar abilities to take effect on the user.

Protean correction

If a Protean Water+Dark-type Pokémon uses a Water/Dark move, it should become a pure Water/Dark-type, this currently doesn’t happen.

Moveset legality enforcer incorrect

Trying to use a Little Cup team and being told the following:

  • Snover can't learn Leech Seed because it's incompatible with another move.

The moveset I'm using is: Leech Seed / Giga Drain / Blizzard / Ice Shard
-Blizzard is a TM
-Giga Drain is taught by a move tutor
-You breed Leech Seed onto the father and then level both parents up to 26 to get Ice Shard

Completely legal set.

Similarly, Sucker Punch is registering as illegal on Prankster Murkrow:

  • Murkrow has moves incompatible with its DW ability.

for the set: Substitute / Roost / Sucker Punch / Brave Bird

Can not recover a lost password.

Logins are said to be integrated with the forum. However, using the email I usually use for my passwords, I can not recover my password through any process whatsoever.

certain abilities are broke

i directly ripped this from github, and ran the vanilla showdown. sheer force breaks moves that have secondary effects and causes them to do 0 damage.unsure how to fix.

Bunch of new issues after event changes

More will be added as more are found

  • DoomDesire onHit needs to be renamed to onTryHit. Otherwise, it will hit twice: Once when the move is used, and once when it is supposed to hit.
  • RapidSpin is broken because self.onHit is no longer called.
  • Struggle no longer has 25% recoil because self.onHit is no longer called.
  • BrickBreak no longer removes the enemy's light screen and reflect because self.onHit is no longer called.
  • TrickRoom no longer adds it's pseudo weather because onHit doesn't get called when target === "all".
  • PerishSong no longer adds it's volatile because onHit doesn't get called when target === "all".

The following bugs aren't confirmed, but will likely to bug as well:

  • FutureSight onHit needs to be renamed to onTryHit. Otherwise, it will hit twice: Once when the move is used, and once when it is supposed to hit.
  • Magikarp's Revenge no longer gives the user magic coat, aqua ring and rain dance because self.onHit is no longer called.
  • Haze no longer removes stats because onHit doesn't get called when target === "all".
  • TeeterDance no longer confuses because onHit doesn't get called when target === "all".

http://www.smogon.com/forums/showpost.php?p=4161385&postcount=714 also has some other issues by another user

Ability not working properly

Whenever an opponent uses bullet seed, rock blast, or icicle spear, not only does iron barbs not hit them each individual time like it should, it doesn't hurt them at all.

Double text for solar beam

Turn 4
Victreebel used SolarBeam!
Victreebel used SolarBeam!
It's not very effective... The foe's Accelgor lost 37% of its health!
The foe's Accelgor used Spikes!
Spikes were scattered all around the feet of your team!
The foe's Accelgor restored HP using its Leftovers!
Turn 5
Victreebel used SolarBeam!
Victreebel used SolarBeam!
It's not very effective... The foe's Accelgor lost 27% of its health!
The foe's Accelgor fainted!

JSON logs need to contain consistent species names

The field p[x]team -> [y] -> species, where [x] is 1 or 2 and [y] is 0-5, should contain the species name as specified in pokedex.js. It currently does not.

As an example, "Rotom-Wash" is logged as "Rotom-W" (or "Rotom- W" in older logs).

Button to go from PM to "Challenge"

It is usual for me to talk to a friend in PM, and then decide that I want to challenge them. There is no easy way to get to the challenge screen from a PM, and selecting PM removes the window that has the challenge button.

My suggestion is to make clicking the nick in the title bar of the little popup go back to the Challenge | PM | ... screen.

Illegal Abilities in Little Cup

Met a Speed Boost Torchic today in a Little Cup battle. DW abilities that are only obtainable from events where the pokes are Lv. 10 and Male should not be allowed in LC.

At this point, I think that's just the starters (Dream Radar Riolu can be either gender, if memory serves), but please correct me if I'm wrong.

Edit: Oh, and genderless pokes: Analytic Staryu and Porygon, for example?

Nodejitsu not working

Hi!

I'm from Nodejitsu and someone was trying to run this on Nodejitsu server, and apparently was having login problems, with people being logged in as guests (here's the URL http://play.pokemonshowdown.com/~~nuggetbridge.jit.su:80/lobby). I ssh'd into the drone with the app to make sure there were no error logs anywhere, and I noticed there were a few child processes. They don't seem to be using sockets to communicate, so I think that they should work. I'm not really sure what the issue could be, I couldn't find anything, so any ideas you might mention could help us to figure out what's up. In any case, if there's any information I can provide to help solve this problem, let me know here, or come into IRC at #nodejitsu on irc.freenode.net and we can try to solve it there. Thanks!

-- coderarity

Put data into its own module

It would be better if most of the data in the data directory was put into its own module. That way it can easily be required by other pokemon apps that may want to use the data.

Everything will be easier to maintain if it's modularized properly. This repo represents the website pokemon showdown, but it doesn't have to include all of the pokemon data and battle algorithms.

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.