Giter Site home page Giter Site logo

odin-bot-v2's Introduction

Odin Bot - Discord Bot for The Odin Project

Welcome to the Odin Bot repository! This is the codebase that powers Odin's right-hand bot, which is used by the tens of thousands of dedicated Odinites in the Discord community of The Odin Project.

The Odin Project is an open-source curriculum for learning full-stack web development. This bot plays a crucial role in our Discord server by displaying helpful information, driving positive engagement through the points system, and incorporating various other nifty features.

Tech Stack

Build Status

This bot has been built with NodeJS and the DiscordJS module.

Contributing

We're thrilled that you're interested in contributing to the Odin Bot! Our bot depends on open source contributions to grow, improve, and thrive. Whether you're a seasoned pro or just starting out, we welcome all kinds of contributions!

Before continuing through this guide, be sure you've read our general contributing guide, as it contains information that is important for all of our repos.

Let's have a blast building and improving the Odin Bot together! We can't wait to see your awesome contributions!

Commands

The Odin-bot command Wiki covers how to register a new command and how the callback function for a command works.

Testing

The Odin-bot testing Wiki covers how to add or edit tests for commands. Each command must have tests to ensure it works as expected.

Setting Up Odin-bot on Your Server

The Odin-bot getting started Wiki covers how to setup Odin-bot on your own server.

odin-bot-v2's People

Contributors

01zulfi avatar aayushmau5 avatar aplyd avatar arku avatar asartea avatar boxenofdonuts avatar codyloyd avatar crespire avatar daegudude avatar dependabot[bot] avatar dovimaj avatar fernie-cpu avatar i3uckwheat avatar jingjing142 avatar joncolman94 avatar justwavethings avatar kevinmulhern avatar manonlef avatar maoshizhong avatar marvingay avatar mclilzee avatar mdlugosz1 avatar robocopyzer0 avatar thatblindgeye avatar timothyling1994 avatar twalton83 avatar wise-king-sullyman avatar xandora avatar zachmmeyer avatar zadag 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

odin-bot-v2's Issues

Create PR and Issue Template

To stay in line with the rest of our repositories, we need to create a template for PRs and Issues.

Completion Criteria:

  • Issues template is created
  • PR template is created

Point should not be awarded in #bot-spam-playground

User Stories

As a maintainer, I would like to prevent the abuse of the points system in a largely unmonitored spam channel, so we should add a restriction to the awardPoints function that determines if the channel is the #bot-spam-playground, and returns a message stating that you can't award points there.

Completion Criteria

  • points are unable to be awarded in specified channel(s)
  • config file that allows us to add an array of channel IDs that points cannot be awarded in (optional)
  • message letting awarder know that points cannot be added in this channel (private message only seen by awarder?)
  • unit tests

Pre-commit hook should check for ESLint

Many contributors push code that fails our CircleCI checks because they are not forced to lint their code at any point in the Git process.
We should:

  • Update Husky to check for linting errors
  • Create a pre-commit hook for the above

Update /debug for JS and Ruby

Since students in the ruby section often ignore the importance of learning debugging as well, it would be great to have a command for both sections.

Update the /debug command to accept the arguments js or rb

It was discussed to have the /debug command without arguments to link to wikipedia's debugging page, but I would if it would better to expand the wording of the bot command to something like this:

Based on the description of your problem, you can get to the root of it using a debugger. Learning how to track down problems like this is an inevitable part of being a developer.

If the argument js is provided, link to (current bot link):
https://developers.google.com/web/tools/chrome-devtools/javascript

If the argument rb is provided, link to:
https://www.theodinproject.com/courses/ruby-programming/lessons/debugging#debugging-with-pry-byebug

Repl.it url needs to be updated

Repl.it is changing to a new url, replit.com, and our /code command needs to be updated to fix this, as well as our snapshot tests.

Some Party Parrot Links are dead

Some links for the party parrot gifs are dead, such as the stable parrot and twin parrot. When the bot posts the gif, it'll just post the broken url instead of the gif.

image

image

points.js commands regexes need to pass their tests

The regexes for some of the commands in this file currently fail our standards for our already-implemented tests. We need the command's string to only be triggered if the word OR phrase itself is used in a message, otherwise it will accidentally be triggered by unrelated messages in the chat.

An example of a regex that passes all of the necessary test is our /notes command .

Once you begin fixing the regex, you may ensure the regex passes all necessary requirements by running npm test commandName.test.js in the terminal. A passing output will look like this:

Screen Shot 2021-01-22 at 9 08 20 AM

Once you have a passing regex, our pre-push hook will not allow you to push your commit because the other commands currently do not pass their respective tests. To circumvent our pre-push hook, please push your changes using git push --no-verify, then make your pull request.

ACCEPTANCE CRITERIA:

  • The fixed regex passes all regex-related tests
  • The snapshot tests all pass and are not made obsolete by the new regex

Removing embeds when sending link through the bot

In discord, auto-embeds are emitted when sending link through the bot. For example, if you call /callbacks command in the discord, you'll see this embed.

Screen Shot 2021-02-03 at 10 05 14 AM

It'd be nice if we could remove those auto-embeds.

Tasks will be,

  • Find all bot commands that emit the embeds
  • Specify the commands where we don't want the embeds on
  • Modify those commands to remove embeds

Discord - Information on disabling auto-embed

The discussion started here

/code command needs to be a rich embed

We are in the process of moving our commands to a Rich Embed feature that makes the commands more obvious, and take up less space in the chat. An example of this is below:

Screen Shot 2021-03-23 at 7 29 44 AM

https://discordjs.guide/popular-topics/embeds.html#embeds NOTE: We are using v11, please make sure you are reading the instructions for the RichEmbed class, not theMessageEmbed class.

Our /code command will need to have a title, a description, and a regular field for the typical code snippets markdown syntax (the backticks). Focus on changing the format, but not changing the copy where possible. We will want additional inline-fields for Repl.it (Javascript/Ruby), CodeSandBox (Webpack/React), and Codepen (Basic HTML/CSS/JS).

Completion Criteria:

  • We leverage the Discord.RichEmbed() constructor
  • We have an embed with the aforementioned fields
  • updated snapshot
  • correct grammar and spelling
  • All tests pass

/mv should be its own word or group

The regex for this command currently fails our standards for our already-implemented tests. We need this command's string to only be triggered if the word itself is used in a message, otherwise it will accidentally be triggered by unrelated messages in the chat.

An example of a regex that passes all of the necessary test is our /notes command .

Once you begin fixing the regex, you may ensure the regex passes all necessary requirements by running npm test commandName.test.js in the terminal. A passing output will look like this:

Screen Shot 2021-01-22 at 9 08 20 AM

Once you have a passing regex, our pre-push hook will not allow you to push your commit because the other commands currently do not pass their respective tests. To circumvent our pre-push hook, please push your changes using git push --no-verify, then make your pull request.

ACCEPTANCE CRITERIA:

  • The fixed regex passes all regex-related tests
  • The snapshot tests all pass and are not made obsolete by the new regex

Fix ESLint Errors

Nearly all of our code does not comply with our ESLint configuration, so we will need to manually fix these errors to ensure accuracy, and make decisions for refactoring where necessary.

Completion Criteria:

  • ESLint no longer throws any errors or warnings
  • All files are linted and fixed

help.js commands need to be triggered by single word/group

The regexes for the commands in this file currently fail our standards for our already-implemented tests. We need the commands' strings to only be triggered if the word OR phrase itself is used in a message, otherwise it will accidentally be triggered by unrelated messages in the chat.

An example of a regex that passes all of the necessary test is our /notes command .

Once you begin fixing the regex, you may ensure the regex passes all necessary requirements by running npm test commandName.test.js in the terminal. A passing output will look like this:

Screen Shot 2021-01-22 at 9 08 20 AM

Once you have a passing regex, our pre-push hook will not allow you to push your commit because the other commands currently do not pass their respective tests. To circumvent our pre-push hook, please push your changes using git push --no-verify, then make your pull request.

ACCEPTANCE CRITERIA:

  • The fixed regex passes all regex-related tests
  • The snapshot tests all pass and are not made obsolete by the new regex
  • Free of ESLint errors

/callbacks command should be its own word/group

The regex for this command currently fails our standards for our already-implemented tests. We need this command's string to only be triggered if the word itself is used in a message, otherwise it will accidentally be triggered by unrelated messages in the chat.

An example of a regex that passes all of the necessary test is our /notes command .

Once you begin fixing the regex, you may ensure the regex passes all necessary requirements by running npm test commandName.test.js in the terminal. A passing output will look like this:

Screen Shot 2021-01-22 at 9 08 20 AM

Once you have a passing regex, our pre-push hook will not allow you to push your commit because the other commands currently do not pass their respective tests. To circumvent our pre-push hook, please push your changes using git push --no-verify, then make your pull request.

ACCEPTANCE CRITERIA:

  • The fixed regex passes all regex-related tests
  • The snapshot tests all pass and are not made obsolete by the new regex

Upgrade Discord.JS from v11 to v12

Discord will be introducing breaking changes that will conflict with DiscordJS v11.
Screen Shot 2021-03-31 at 5 03 25 PM

We will need to:

  • Identify all areas that are affected by the upgrade
  • Transition it over to v12 compliant syntax
  • Update bot documentation where necessary
  • Update tests (specifically, mocks) where necessary

Create /xy command

We'd like to add a command to address the "XY Problem". Make the associated message friendly and/or funny, and link to the xyproblem.info. We want something similar to our /question command.

Completion Criteria:

  • a new command triggered by /xy with a "fun" message that links to the the XY Problem website
  • unit tests and snapshot tests for the new command (please use the /question tests in help.test.js as a reference)
  • all tests pass

Create /faq command

We need a quick and easy command that links people to our new discord faq channel: https://discord.com/channels/505093832157691914/823266307293839401/823266549912829992

A similar command to base this off of would be our /time command. Check it out here.

Completion Criteria:

  • New command that is triggered by the string "/faq", with a fun little string prepending it along the lines of "Your question has been answered in our faq" (be creative/witty!)
  • Be able to mention people
  • Tested, with all tests passing and a new snapshot
  • Link embed is removed SEE HERE

simpleCommands.js commands need to pass all tests

NOTE: There are multiple commands in this file. All of these commands must pass.

The regexes for the commands in this file currently fail our standards for our already-implemented tests. We need each command's string to only be triggered if the word itself is used in a message, otherwise it will accidentally be triggered by unrelated messages in the chat.

An example of a regex that passes all of the necessary test is our /notes command .

Once you begin fixing the regex, you may ensure the regex passes all necessary requirements by running npm test commandName.test.js in the terminal. A passing output will look like this:

Screen Shot 2021-01-22 at 9 08 20 AM

Once you have a passing regex, our pre-push hook will not allow you to push your commit because the other commands currently do not pass their respective tests. To circumvent our pre-push hook, please push your changes using git push --no-verify, then make your pull request.

ACCEPTANCE CRITERIA:

  • The fixed regex passes all regex-related tests
  • The snapshot tests all pass and are not made obsolete by the new regex

/shrug commands need to be their own word/group

The regex for these commands currently fail our standards for our already-implemented tests. We need each command's string to only be triggered if the word itself is used in a message, otherwise it will accidentally be triggered by unrelated messages in the chat.

An example of a regex that passes all of the necessary test is our /notes command .

Once you begin fixing the regex, you may ensure the regex passes all necessary requirements by running npm test commandName.test.js in the terminal. A passing output will look like this:

Screen Shot 2021-01-22 at 9 08 20 AM

Once you have a passing regex, our pre-push hook will not allow you to push your commit because the other commands currently do not pass their respective tests. To circumvent our pre-push hook, please push your changes using git push --no-verify, then make your pull request.

ACCEPTANCE CRITERIA:

  • The fixed regex passes all regex-related tests
  • The snapshot tests all pass and are not made obsolete by the new regex

Create /top command

We need a quick and easy command that links people to https://theodinproject.com/

A similar command to base this off of would be our /windows command.

Completion Criteria:

  • New command that is triggered by the string "/top", with a fun little string prepending it
  • Tested, with all tests passing and a new snapshot
  • Link embed is removed SEE HERE

/data command needs new copy and needs to be converted to a MessageEmbed

We are in the process of moving our commands to a MessageEmbed feature that makes the commands more obvious, and take up less space in the chat. An example of this is below:

Screen Shot 2021-03-30 at 7 56 51 PM

Embed Guide

Additionally, we want to update our /data command text to be more friendly and descriptive, so people are more inclined to understand what was wrong with their question.

Our /data Message Embed will need to have a title, a URL that links to this website, and a new description that says:

Instead of asking if anyone can help you, ask your question outright so people can help you!
Bad: "Hey, does anyone know about how to set CSS styles with Javascript?"
Good:
"Hey, I'm having trouble setting CSS styles via Javascript.
Here's my code:

Code snippet 

And here is the error I'm receiving:
Cannot set attribute 'style' of null"

Completion Criteria:

  • We leverage the Discord.MessageEmbed() constructor
  • We have an embed with the aforementioned fields
  • updated snapshot test
  • correct grammar and spelling
  • All tests pass
  • Your PR includes a screenshot of the new embed.

/windows command should return a MessageEmbed

We are in the process of moving our commands to a MessageEmbed feature that makes the commands more obvious, and take up less space in the chat. An example of this is below.
Screen Shot 2021-03-30 at 7 56 51 PM

Embed Guide

Our /windows command embed will need a description with the value set to our current copy, sans the lesson's URL. We should also use setURL and set it to the URL in our current string. Additionally, I would like to provide emphasis around the "The Odin Project does not support Windows, WSL, or any OS outside of our recommendations.", and have this part of the string now be bold.

Completion Criteria:

  • We leverage the Discord.MessageEmbed() constructor
  • We have an embed with the aforementioned fields
  • Updated snapshot
  • Correct grammar and spelling
  • All tests pass

Please run your own instance of the bot and provide a screenshot of the embed in your PR.

/faq command needs to return a MessageEmbed

We are in the process of moving our commands to a MessageEmbed feature that makes the commands more obvious, and take up less space in the chat. An example of this is below.
Screen Shot 2021-03-30 at 7 56 51 PM

Embed Guide

Our /faq command will need to have a title with the value "Frequently Asked Questions", a description with the value "The definition of insanity is answering the same question over and over again when we have an #FAQ! Help us stay sane by giving it a read."

Completion Criteria:

  • We leverage the Discord.MessageEmbed() constructor
  • We have an embed with the aforementioned fields
  • Updated snapshot
  • Correct grammar and spelling
  • All tests pass

Please run your own instance of the bot and provide a screenshot of the embed in your PR.

/help command needs to return a MessageEmbed

We are in the process of moving our commands to a Message Embed feature that makes the commands more obvious, and take up less space in the chat. An example of this is below.
Screen Shot 2021-03-30 at 7 56 51 PM

Embed Guide

Our /help command will need to have a title, a description, and fields with their own values for each separate "bullet" in the command as it currently stands.

Completion Criteria:

  • We leverage the Discord.MessageEmbed() constructor
  • We have an embed with the aforementioned fields
  • Updated snapshot
  • Correct grammar and spelling
  • All tests pass

Please run your own instance of the bot and provide a screenshot of the embed in your PR.

Awarding points (++) in Discord Threads

Threads are a recent Discord feature to help people participate in important conversations/issues. It is also good to separate each "problem" in the TOP Discord. I would like to suggest to make it so you can award points in these threads

/time command needs to pass all tests

NOTE: Additionally, this command will need to pass the snapshot tests. The the import statement in the spec file needs to be changed to const helpers = require('./mockData), and the references to generateMentions need to be updated to helpers.generateMentions() now that more than one helper is being exported from our mockData file.

The regex for this command currently fails our standards for our already-implemented tests. We need this command's string to only be triggered if the word itself is used in a message, otherwise it will accidentally be triggered by unrelated messages in the chat.

An example of a regex that passes all of the necessary test is our /notes command .

Once you begin fixing the regex, you may ensure the regex passes all necessary requirements by running npm test commandName.test.js in the terminal. A passing output will look like this:

Screen Shot 2021-01-22 at 9 08 20 AM

Once you have a passing regex, our pre-push hook will not allow you to push your commit because the other commands currently do not pass their respective tests. To circumvent our pre-push hook, please push your changes using git push --no-verify, then make your pull request.

ACCEPTANCE CRITERIA:

  • The fixed regex passes all regex-related tests
  • The snapshot tests all pass and are not made obsolete by the new regex

Reword /question command

In an effort to make the command come off as more of a "call in" rather than a "call out", we'd like to change the wording of the /question command from "It looks like you're trying to ask a question! Please give this page a read" to something that may come off a little more friendly, such as "Help others help you, check out this article:". Open to suggestions.

Completion Criteria:

  • The callback needs to return an update phrase
  • The snapshot test for the callback must be updated (see README for how to update snapshot tests)
  • All tests must pass

Points++ command no longer accepts the star argument

In our refactor of the regexes, we accidentally removed the argument allowing the Discord ⭐ emoji to be used instead of "++".

COMPLETION CRITERIA

  • addPoints() is triggered by @username ⭐ as well as @username ++
  • points.test.js tests all pass

make tests & require them for new command additions

Would help fight buggy regex issues


Briggs wrote the below:

  • Setup jest as a dev dependency
  • Add unit tests for all commands
  • Add unit tests for all helper functions that are public
  • Add issues for any problems identified by the tests
  • Add a pre-push git-hook to prevent pushing (there may be a lib to help with this)

The goals of these tests are to help prevent REGEX issues, as well as making sure the bot is solid. If you'd like to help with this, I'm organizing a team to do this. Please comment here if you'd like to be on the team!

/question command needs to return a MessageEmbed

We are in the process of moving our commands to a MessageEmbed feature that makes the commands more obvious, and take up less space in the chat. An example of this is below.
Screen Shot 2021-03-30 at 7 56 51 PM

Embed Guide

Our /question command will need to have a title with the value "Asking Great Questions", a description with the current command's string, including this article.

Completion Criteria:

  • We leverage the Discord.MessageEmbed() constructor
  • We have an embed with the aforementioned fields
  • Updated snapshot
  • Correct grammar and spelling
  • All tests pass

Please run your own instance of the bot and provide a screenshot of the embed in your PR.

Add ESLint dependency

  • We should add ESLint as a dependency with the same rules as the theodinproject repo in order to remain consistent.

Completion criteria:

  • Setup ESLint
  • use AirBnB rules
  • setup pre-push hook to check eslint for issues before pushing

?++ command should stand out

The command's return points message currently only shows the same copy as the ++ command. It should be altered to better reflect the intent of the message.

ModMail

User Stories

  • As a member of the TOP Discord server, I would like to be able to privately report any inappropriate behavior or rule-breaking to the moderators of the server so that I can continue to have a safe and respectful time in the server.
  • As a moderator, I want to be able to have an avenue for server members to formally report behavior so that the maintainer team can swiftly address the behavior
  • As a moderator, I would like to be able to have a central place where reported behavior is archived/recorded so repeated infractions are easily traceable

Discovery

https://www.notion.so/ModMail-Discovery-3db4dd9334494cfba215508f6eed31ae

Completion Criteria

  • bot sends a message to moderators whenever someone DMs it
  • the bot sends an embed with the date, time, and reporting user, any links provided, status of issue, and a description
  • Nice to have: edits embed when a checkmark react denoting the issue is resolved is placed on the message

/leaderboard command should return a MessageEmbed

We are in the process of moving our commands to a MessageEmbed feature that makes the commands more obvious, and take up less space in the chat. An example of this is below.
Screen Shot 2021-03-30 at 7 56 51 PM

Embed Guide

Our /leaderboard command will need to have a title with the value of "Leaderboard", and the description should contain the string of users and their points that is returned from our current command.

Completion Criteria:

  • We leverage the Discord.MessageEmbed() constructor
  • We have an embed with the aforementioned fields
  • Updated snapshot
  • Correct grammar and spelling
  • All tests pass

Please run your own instance of the bot and provide a screenshot of the embed in your PR.

/help command needs to filter out github

We're linking the github help pages, which starts out as /help.github.

Obviously there is a way to filter out the github links, I am not skilled enough yet to make my own PR. It's just frustrating.

Chore: Use Limit and Offset Params when Fetching the Points from The API in the Leaderboard command

Description

Currently we fetch all the points records from the API and filter them using JS. This makes the leaderboard command code complicated and will eventually become a performance problem.

Letting the database handle this filtering on the api side would be much more efficient and it would simplify the leaderboard bot code significantly. We already have the parameters to do this set up on the api, we just need to use them in the bot.

Acceptance Criteria

  1. When fetching points and no n argument is provided, the limit parameter should default to 5 when making the points api call.
  2. When fetching points and no start argument is provided, the offset parameter should default to 0 when making the points api call.
  3. Otherwise pass the provided n and start arguments through as the limit and offset parameter values respectively.

Example:
using the command: leaderboard n=10 start=5
will translate to the following api call: https://www.theodinproject.com/api/points?limit=10&offset=5

Additional Information

Just to make it clear:

  • The limit param does the the same as the n argument we pass to the leaderboard command in discord
  • The offset param does the the same as the start argument we pass to the leaderboard command in discord

Important
Let me know when this is ready to be merged as there is one more requirement implemented on the bot size to limit the n argument to 25 results returned. This will need to be implemented on the api side and go out at the same time this story goes out.

Extend ++ command to award double points for good questions

Description

In an effort to improve the Discord community, the ability for maintainers and core members to award 2 points for good questions should be implemented.

Acceptance Criteria

  • Users with a maintainer or core role are able to use @user ?++ to award points
  • Using the new API query params, the above command should award the mentioned user two points
  • A message stating something like Double points for a great question! @user has XX points!
  • Tests

/points command should show author's points if no one is mentioned

Currently the /points command requires the author to @ mention themselves if they would like to check their own points. It is more intuitive and common of other bots to check the author's own points without needing to mention themselves.

Completion Criteria:

  • The /points command takes in the author as an argument
  • The /points command should return the author's own points if they have not mentioned another user in their message
  • Regex test is updated to include a case where a user does not mention another user in their message.

/cqg should be its own word/group

The regex for this command currently fails our standards for our already-implemented tests. We need this command's string to only be triggered if the word itself is used in a message, otherwise it will accidentally be triggered by unrelated messages in the chat.

An example of a regex that passes all of the necessary test is our /notes command .

Once you begin fixing the regex, you may ensure the regex passes all necessary requirements by running npm test commandName.test.js in the terminal. A passing output will look like this:

Screen Shot 2021-01-22 at 9 08 20 AM

Once you have a passing regex, our pre-push hook will not allow you to push your commit because the other commands currently do not pass their respective tests. To circumvent our pre-push hook, please push your changes using git push --no-verify, then make your pull request.

ACCEPTANCE CRITERIA:

  • The fixed regex passes all regex-related tests
  • The snapshot tests all pass and are not made obsolete by the new regex

/debug command needs to return a MessageEmbed

We are in the process of moving our commands to a Message Embed feature that makes the commands more obvious, and take up less space in the chat. An example can be seen below:

Screen Shot 2021-03-30 at 7 56 51 PM

Embed Guide

  • Our /debug command embed will need a title, set to the value "Debugging".
  • We will need a description with the value set to "'Based on the description of your problem, you can get to the root of it using a debugger. Learning how to track down problems like this is an inevitable part of being a developer."
  • We should also use setURL and set it to this article.
  • Additionally, we need two fields, titled "Javascript" and "Ruby" , with each respective debugger link currently found in our /debug command.

Because of these changes, the command will no longer need to take in arguments since we are providing both the Ruby and JS resources, as well as the Wikipedia article in the title. Note that our tests will need to be updated to reflect this.

Completion Criteria:

  • We leverage the Discord.MessageEmbed() constructor
  • We have an embed with the aforementioned fields
  • Updated snapshot
  • Correct grammar and spelling
  • js and ruby arguments are removed from the logic of the command
  • Tests are updated to omit testing for ruby or js arguments
  • All tests pass

Please run your own instance of the bot and provide a screenshot of the embed in your PR.

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.