├── LICENSE ├── README.md ├── base_elements.json ├── build_element_data.py ├── data.js ├── index.html ├── main.js └── styles.css /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Andrew Blakey 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # The Periodic Table of GitHub 2 | 3 | https://ablakey.github.io/periodic/index.html 4 | 5 | Ever notice that some things are difficult to name? You're not alone. 6 | 7 | Apologies to mobile and small screen users, this page does not scale well. 8 | 9 | ## How To Generate Data 10 | 1. Run `python3 build_element_data.py` 11 | 2. Wait about 15 mins (rate limiting in effect on GitHub API) 12 | -------------------------------------------------------------------------------- /base_elements.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Hydrogen", 4 | "number": 1, 5 | "symbol": "H", 6 | "row": 1, 7 | "col": 1 8 | }, 9 | { 10 | "name": "Helium", 11 | "number": 2, 12 | "symbol": "He", 13 | "row": 1, 14 | "col": 18 15 | }, 16 | { 17 | "name": "Lithium", 18 | "number": 3, 19 | "symbol": "Li", 20 | "row": 2, 21 | "col": 1 22 | }, 23 | { 24 | "name": "Beryllium", 25 | "number": 4, 26 | "symbol": "Be", 27 | "row": 2, 28 | "col": 2 29 | }, 30 | { 31 | "name": "Boron", 32 | "number": 5, 33 | "symbol": "B", 34 | "row": 2, 35 | "col": 13 36 | }, 37 | { 38 | "name": "Carbon", 39 | "number": 6, 40 | "symbol": "C", 41 | "row": 2, 42 | "col": 14 43 | }, 44 | { 45 | "name": "Nitrogen", 46 | "number": 7, 47 | "symbol": "N", 48 | "row": 2, 49 | "col": 15 50 | }, 51 | { 52 | "name": "Oxygen", 53 | "number": 8, 54 | "symbol": "O", 55 | "row": 2, 56 | "col": 16 57 | }, 58 | { 59 | "name": "Fluorine", 60 | "number": 9, 61 | "symbol": "F", 62 | "row": 2, 63 | "col": 17 64 | }, 65 | { 66 | "name": "Neon", 67 | "number": 10, 68 | "symbol": "Ne", 69 | "row": 2, 70 | "col": 18 71 | }, 72 | { 73 | "name": "Sodium", 74 | "number": 11, 75 | "symbol": "Na", 76 | "row": 3, 77 | "col": 1 78 | }, 79 | { 80 | "name": "Magnesium", 81 | "number": 12, 82 | "symbol": "Mg", 83 | "row": 3, 84 | "col": 2 85 | }, 86 | { 87 | "name": "Aluminium", 88 | "number": 13, 89 | "symbol": "Al", 90 | "row": 3, 91 | "col": 13 92 | }, 93 | { 94 | "name": "Silicon", 95 | "number": 14, 96 | "symbol": "Si", 97 | "row": 3, 98 | "col": 14 99 | }, 100 | { 101 | "name": "Phosphorus", 102 | "number": 15, 103 | "symbol": "P", 104 | "row": 3, 105 | "col": 15 106 | }, 107 | { 108 | "name": "Sulfur", 109 | "number": 16, 110 | "symbol": "S", 111 | "row": 3, 112 | "col": 16 113 | }, 114 | { 115 | "name": "Chlorine", 116 | "number": 17, 117 | "symbol": "Cl", 118 | "row": 3, 119 | "col": 17 120 | }, 121 | { 122 | "name": "Argon", 123 | "number": 18, 124 | "symbol": "Ar", 125 | "row": 3, 126 | "col": 18 127 | }, 128 | { 129 | "name": "Potassium", 130 | "number": 19, 131 | "symbol": "K", 132 | "row": 4, 133 | "col": 1 134 | }, 135 | { 136 | "name": "Calcium", 137 | "number": 20, 138 | "symbol": "Ca", 139 | "row": 4, 140 | "col": 2 141 | }, 142 | { 143 | "name": "Scandium", 144 | "number": 21, 145 | "symbol": "Sc", 146 | "row": 4, 147 | "col": 3 148 | }, 149 | { 150 | "name": "Titanium", 151 | "number": 22, 152 | "symbol": "Ti", 153 | "row": 4, 154 | "col": 4 155 | }, 156 | { 157 | "name": "Vanadium", 158 | "number": 23, 159 | "symbol": "V", 160 | "row": 4, 161 | "col": 5 162 | }, 163 | { 164 | "name": "Chromium", 165 | "number": 24, 166 | "symbol": "Cr", 167 | "row": 4, 168 | "col": 6 169 | }, 170 | { 171 | "name": "Manganese", 172 | "number": 25, 173 | "symbol": "Mn", 174 | "row": 4, 175 | "col": 7 176 | }, 177 | { 178 | "name": "Iron", 179 | "number": 26, 180 | "symbol": "Fe", 181 | "row": 4, 182 | "col": 8 183 | }, 184 | { 185 | "name": "Cobalt", 186 | "number": 27, 187 | "symbol": "Co", 188 | "row": 4, 189 | "col": 9 190 | }, 191 | { 192 | "name": "Nickel", 193 | "number": 28, 194 | "symbol": "Ni", 195 | "row": 4, 196 | "col": 10 197 | }, 198 | { 199 | "name": "Copper", 200 | "number": 29, 201 | "symbol": "Cu", 202 | "row": 4, 203 | "col": 11 204 | }, 205 | { 206 | "name": "Zinc", 207 | "number": 30, 208 | "symbol": "Zn", 209 | "row": 4, 210 | "col": 12 211 | }, 212 | { 213 | "name": "Gallium", 214 | "number": 31, 215 | "symbol": "Ga", 216 | "row": 4, 217 | "col": 13 218 | }, 219 | { 220 | "name": "Germanium", 221 | "number": 32, 222 | "symbol": "Ge", 223 | "row": 4, 224 | "col": 14 225 | }, 226 | { 227 | "name": "Arsenic", 228 | "number": 33, 229 | "symbol": "As", 230 | "row": 4, 231 | "col": 15 232 | }, 233 | { 234 | "name": "Selenium", 235 | "number": 34, 236 | "symbol": "Se", 237 | "row": 4, 238 | "col": 16 239 | }, 240 | { 241 | "name": "Bromine", 242 | "number": 35, 243 | "symbol": "Br", 244 | "row": 4, 245 | "col": 17 246 | }, 247 | { 248 | "name": "Krypton", 249 | "number": 36, 250 | "symbol": "Kr", 251 | "row": 4, 252 | "col": 18 253 | }, 254 | { 255 | "name": "Rubidium", 256 | "number": 37, 257 | "symbol": "Rb", 258 | "row": 5, 259 | "col": 1 260 | }, 261 | { 262 | "name": "Strontium", 263 | "number": 38, 264 | "symbol": "Sr", 265 | "row": 5, 266 | "col": 2 267 | }, 268 | { 269 | "name": "Yttrium", 270 | "number": 39, 271 | "symbol": "Y", 272 | "row": 5, 273 | "col": 3 274 | }, 275 | { 276 | "name": "Zirconium", 277 | "number": 40, 278 | "symbol": "Zr", 279 | "row": 5, 280 | "col": 4 281 | }, 282 | { 283 | "name": "Niobium", 284 | "number": 41, 285 | "symbol": "Nb", 286 | "row": 5, 287 | "col": 5 288 | }, 289 | { 290 | "name": "Molybdenum", 291 | "number": 42, 292 | "symbol": "Mo", 293 | "row": 5, 294 | "col": 6 295 | }, 296 | { 297 | "name": "Technetium", 298 | "number": 43, 299 | "symbol": "Tc", 300 | "row": 5, 301 | "col": 7 302 | }, 303 | { 304 | "name": "Ruthenium", 305 | "number": 44, 306 | "symbol": "Ru", 307 | "row": 5, 308 | "col": 8 309 | }, 310 | { 311 | "name": "Rhodium", 312 | "number": 45, 313 | "symbol": "Rh", 314 | "row": 5, 315 | "col": 9 316 | }, 317 | { 318 | "name": "Palladium", 319 | "number": 46, 320 | "symbol": "Pd", 321 | "row": 5, 322 | "col": 10 323 | }, 324 | { 325 | "name": "Silver", 326 | "number": 47, 327 | "symbol": "Ag", 328 | "row": 5, 329 | "col": 11 330 | }, 331 | { 332 | "name": "Cadmium", 333 | "number": 48, 334 | "symbol": "Cd", 335 | "row": 5, 336 | "col": 12 337 | }, 338 | { 339 | "name": "Indium", 340 | "number": 49, 341 | "symbol": "In", 342 | "row": 5, 343 | "col": 13 344 | }, 345 | { 346 | "name": "Tin", 347 | "number": 50, 348 | "symbol": "Sn", 349 | "row": 5, 350 | "col": 14 351 | }, 352 | { 353 | "name": "Antimony", 354 | "number": 51, 355 | "symbol": "Sb", 356 | "row": 5, 357 | "col": 15 358 | }, 359 | { 360 | "name": "Tellurium", 361 | "number": 52, 362 | "symbol": "Te", 363 | "row": 5, 364 | "col": 16 365 | }, 366 | { 367 | "name": "Iodine", 368 | "number": 53, 369 | "symbol": "I", 370 | "row": 5, 371 | "col": 17 372 | }, 373 | { 374 | "name": "Xenon", 375 | "number": 54, 376 | "symbol": "Xe", 377 | "row": 5, 378 | "col": 18 379 | }, 380 | { 381 | "name": "Cesium", 382 | "number": 55, 383 | "symbol": "Cs", 384 | "row": 6, 385 | "col": 1 386 | }, 387 | { 388 | "name": "Barium", 389 | "number": 56, 390 | "symbol": "Ba", 391 | "row": 6, 392 | "col": 2 393 | }, 394 | { 395 | "name": "Lanthanum", 396 | "number": 57, 397 | "symbol": "La", 398 | "row": 9, 399 | "col": 3 400 | }, 401 | { 402 | "name": "Cerium", 403 | "number": 58, 404 | "symbol": "Ce", 405 | "row": 9, 406 | "col": 4 407 | }, 408 | { 409 | "name": "Praseodymium", 410 | "number": 59, 411 | "symbol": "Pr", 412 | "row": 9, 413 | "col": 5 414 | }, 415 | { 416 | "name": "Neodymium", 417 | "number": 60, 418 | "symbol": "Nd", 419 | "row": 9, 420 | "col": 6 421 | }, 422 | { 423 | "name": "Promethium", 424 | "number": 61, 425 | "symbol": "Pm", 426 | "row": 9, 427 | "col": 7 428 | }, 429 | { 430 | "name": "Samarium", 431 | "number": 62, 432 | "symbol": "Sm", 433 | "row": 9, 434 | "col": 8 435 | }, 436 | { 437 | "name": "Europium", 438 | "number": 63, 439 | "symbol": "Eu", 440 | "row": 9, 441 | "col": 9 442 | }, 443 | { 444 | "name": "Gadolinium", 445 | "number": 64, 446 | "symbol": "Gd", 447 | "row": 9, 448 | "col": 10 449 | }, 450 | { 451 | "name": "Terbium", 452 | "number": 65, 453 | "symbol": "Tb", 454 | "row": 9, 455 | "col": 11 456 | }, 457 | { 458 | "name": "Dysprosium", 459 | "number": 66, 460 | "symbol": "Dy", 461 | "row": 9, 462 | "col": 12 463 | }, 464 | { 465 | "name": "Holmium", 466 | "number": 67, 467 | "symbol": "Ho", 468 | "row": 9, 469 | "col": 13 470 | }, 471 | { 472 | "name": "Erbium", 473 | "number": 68, 474 | "symbol": "Er", 475 | "row": 9, 476 | "col": 14 477 | }, 478 | { 479 | "name": "Thulium", 480 | "number": 69, 481 | "symbol": "Tm", 482 | "row": 9, 483 | "col": 15 484 | }, 485 | { 486 | "name": "Ytterbium", 487 | "number": 70, 488 | "symbol": "Yb", 489 | "row": 9, 490 | "col": 16 491 | }, 492 | { 493 | "name": "Lutetium", 494 | "number": 71, 495 | "symbol": "Lu", 496 | "row": 9, 497 | "col": 17 498 | }, 499 | { 500 | "name": "Hafnium", 501 | "number": 72, 502 | "symbol": "Hf", 503 | "row": 6, 504 | "col": 4 505 | }, 506 | { 507 | "name": "Tantalum", 508 | "number": 73, 509 | "symbol": "Ta", 510 | "row": 6, 511 | "col": 5 512 | }, 513 | { 514 | "name": "Tungsten", 515 | "number": 74, 516 | "symbol": "W", 517 | "row": 6, 518 | "col": 6 519 | }, 520 | { 521 | "name": "Rhenium", 522 | "number": 75, 523 | "symbol": "Re", 524 | "row": 6, 525 | "col": 7 526 | }, 527 | { 528 | "name": "Osmium", 529 | "number": 76, 530 | "symbol": "Os", 531 | "row": 6, 532 | "col": 8 533 | }, 534 | { 535 | "name": "Iridium", 536 | "number": 77, 537 | "symbol": "Ir", 538 | "row": 6, 539 | "col": 9 540 | }, 541 | { 542 | "name": "Platinum", 543 | "number": 78, 544 | "symbol": "Pt", 545 | "row": 6, 546 | "col": 10 547 | }, 548 | { 549 | "name": "Gold", 550 | "number": 79, 551 | "symbol": "Au", 552 | "row": 6, 553 | "col": 11 554 | }, 555 | { 556 | "name": "Mercury", 557 | "number": 80, 558 | "symbol": "Hg", 559 | "row": 6, 560 | "col": 12 561 | }, 562 | { 563 | "name": "Thallium", 564 | "number": 81, 565 | "symbol": "Tl", 566 | "row": 6, 567 | "col": 13 568 | }, 569 | { 570 | "name": "Lead", 571 | "number": 82, 572 | "symbol": "Pb", 573 | "row": 6, 574 | "col": 14 575 | }, 576 | { 577 | "name": "Bismuth", 578 | "number": 83, 579 | "symbol": "Bi", 580 | "row": 6, 581 | "col": 15 582 | }, 583 | { 584 | "name": "Polonium", 585 | "number": 84, 586 | "symbol": "Po", 587 | "row": 6, 588 | "col": 16 589 | }, 590 | { 591 | "name": "Astatine", 592 | "number": 85, 593 | "symbol": "At", 594 | "row": 6, 595 | "col": 17 596 | }, 597 | { 598 | "name": "Radon", 599 | "number": 86, 600 | "symbol": "Rn", 601 | "row": 6, 602 | "col": 18 603 | }, 604 | { 605 | "name": "Francium", 606 | "number": 87, 607 | "symbol": "Fr", 608 | "row": 7, 609 | "col": 1 610 | }, 611 | { 612 | "name": "Radium", 613 | "number": 88, 614 | "symbol": "Ra", 615 | "row": 7, 616 | "col": 2 617 | }, 618 | { 619 | "name": "Actinium", 620 | "number": 89, 621 | "symbol": "Ac", 622 | "row": 10, 623 | "col": 3 624 | }, 625 | { 626 | "name": "Thorium", 627 | "number": 90, 628 | "symbol": "Th", 629 | "row": 10, 630 | "col": 4 631 | }, 632 | { 633 | "name": "Protactinium", 634 | "number": 91, 635 | "symbol": "Pa", 636 | "row": 10, 637 | "col": 5 638 | }, 639 | { 640 | "name": "Uranium", 641 | "number": 92, 642 | "symbol": "U", 643 | "row": 10, 644 | "col": 6 645 | }, 646 | { 647 | "name": "Neptunium", 648 | "number": 93, 649 | "symbol": "Np", 650 | "row": 10, 651 | "col": 7 652 | }, 653 | { 654 | "name": "Plutonium", 655 | "number": 94, 656 | "symbol": "Pu", 657 | "row": 10, 658 | "col": 8 659 | }, 660 | { 661 | "name": "Americium", 662 | "number": 95, 663 | "symbol": "Am", 664 | "row": 10, 665 | "col": 9 666 | }, 667 | { 668 | "name": "Curium", 669 | "number": 96, 670 | "symbol": "Cm", 671 | "row": 10, 672 | "col": 10 673 | }, 674 | { 675 | "name": "Berkelium", 676 | "number": 97, 677 | "symbol": "Bk", 678 | "row": 10, 679 | "col": 11 680 | }, 681 | { 682 | "name": "Californium", 683 | "number": 98, 684 | "symbol": "Cf", 685 | "row": 10, 686 | "col": 12 687 | }, 688 | { 689 | "name": "Einsteinium", 690 | "number": 99, 691 | "symbol": "Es", 692 | "row": 10, 693 | "col": 13 694 | }, 695 | { 696 | "name": "Fermium", 697 | "number": 100, 698 | "symbol": "Fm", 699 | "row": 10, 700 | "col": 14 701 | }, 702 | { 703 | "name": "Mendelevium", 704 | "number": 101, 705 | "symbol": "Md", 706 | "row": 10, 707 | "col": 15 708 | }, 709 | { 710 | "name": "Nobelium", 711 | "number": 102, 712 | "symbol": "No", 713 | "row": 10, 714 | "col": 16 715 | }, 716 | { 717 | "name": "Lawrencium", 718 | "number": 103, 719 | "symbol": "Lr", 720 | "row": 10, 721 | "col": 17 722 | }, 723 | { 724 | "name": "Rutherfordium", 725 | "number": 104, 726 | "symbol": "Rf", 727 | "row": 7, 728 | "col": 4 729 | }, 730 | { 731 | "name": "Dubnium", 732 | "number": 105, 733 | "symbol": "Db", 734 | "row": 7, 735 | "col": 5 736 | }, 737 | { 738 | "name": "Seaborgium", 739 | "number": 106, 740 | "symbol": "Sg", 741 | "row": 7, 742 | "col": 6 743 | }, 744 | { 745 | "name": "Bohrium", 746 | "number": 107, 747 | "symbol": "Bh", 748 | "row": 7, 749 | "col": 7 750 | }, 751 | { 752 | "name": "Hassium", 753 | "number": 108, 754 | "symbol": "Hs", 755 | "row": 7, 756 | "col": 8 757 | }, 758 | { 759 | "name": "Meitnerium", 760 | "number": 109, 761 | "symbol": "Mt", 762 | "row": 7, 763 | "col": 9 764 | }, 765 | { 766 | "name": "Darmstadtium", 767 | "number": 110, 768 | "symbol": "Ds", 769 | "row": 7, 770 | "col": 10 771 | }, 772 | { 773 | "name": "Roentgenium", 774 | "number": 111, 775 | "symbol": "Rg", 776 | "row": 7, 777 | "col": 11 778 | }, 779 | { 780 | "name": "Copernicium", 781 | "number": 112, 782 | "symbol": "Cn", 783 | "row": 7, 784 | "col": 12 785 | }, 786 | { 787 | "name": "Nihonium", 788 | "number": 113, 789 | "symbol": "Nh", 790 | "row": 7, 791 | "col": 13 792 | }, 793 | { 794 | "name": "Flerovium", 795 | "number": 114, 796 | "symbol": "Fl", 797 | "row": 7, 798 | "col": 14 799 | }, 800 | { 801 | "name": "Moscovium", 802 | "number": 115, 803 | "symbol": "Mc", 804 | "row": 7, 805 | "col": 15 806 | }, 807 | { 808 | "name": "Livermorium", 809 | "number": 116, 810 | "symbol": "Lv", 811 | "row": 7, 812 | "col": 16 813 | }, 814 | { 815 | "name": "Tennessine", 816 | "number": 117, 817 | "symbol": "Ts", 818 | "row": 7, 819 | "col": 17 820 | }, 821 | { 822 | "name": "Oganesson", 823 | "number": 118, 824 | "symbol": "Og", 825 | "row": 7, 826 | "col": 18 827 | } 828 | ] -------------------------------------------------------------------------------- /build_element_data.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """ 3 | A hackathon-quality script to look up github projects by name and record some metadata about them. 4 | There's a lot wrong with this script in terms of maintainability and quality but it works. 5 | """ 6 | import requests 7 | import json 8 | import time 9 | 10 | 11 | if __name__ == '__main__': 12 | # Get list of base elements and some constant properties about them (like their position on the table) 13 | with open('base_elements.json') as f: 14 | elements = json.load(f) 15 | 16 | formatted_results = [] 17 | 18 | print('Requesting metadata for: ', end='', flush=True) 19 | for element in elements: 20 | print(element['name'], end=', ', flush=True) 21 | 22 | result = {'stargazers_count': 0, 'url': '', 'description': ''} # Default data if there is no result. 23 | 24 | r = requests.get('https://api.github.com/search/repositories?q={}&sort=stars&order=desc'.format(element['name'])) 25 | 26 | # Get the top-most result that has the element name. (They're returned from Github stored by star count). 27 | for page_metadata in r.json()['items']: 28 | if page_metadata['name'].lower() == element['name'].lower(): 29 | result = page_metadata 30 | break 31 | 32 | # Format data, including only a few fields from what Github returned us. 33 | formatted_result = { 34 | **element, 35 | **{k: v for k, v in result.items() if k in ('stargazers_count', 'url', 'description')} 36 | } 37 | 38 | formatted_results.append(formatted_result) 39 | time.sleep(6) # Don't request too fast or we'll get throttled. 40 | 41 | # JSONify the output data, then prepend a global variable name (because we use data.js as a JS object) 42 | output = 'tableData = ' + json.dumps(formatted_results, ensure_ascii=False, indent=4) 43 | 44 | with open('data.js', 'w') as f: 45 | f.write(output) 46 | -------------------------------------------------------------------------------- /data.js: -------------------------------------------------------------------------------- 1 | tableData = [ 2 | { 3 | "name": "Hydrogen", 4 | "number": 1, 5 | "symbol": "H", 6 | "row": 1, 7 | "col": 1, 8 | "description": ":atom: Run code interactively, inspect data, and plot. All the power of Jupyter kernels, inside your favorite text editor.", 9 | "url": "https://api.github.com/repos/nteract/hydrogen", 10 | "stargazers_count": 2737 11 | }, 12 | { 13 | "name": "Helium", 14 | "number": 2, 15 | "symbol": "He", 16 | "row": 1, 17 | "col": 18, 18 | "description": "A floating browser window for OS X", 19 | "url": "https://api.github.com/repos/JadenGeller/Helium", 20 | "stargazers_count": 2949 21 | }, 22 | { 23 | "name": "Lithium", 24 | "number": 3, 25 | "symbol": "Li", 26 | "row": 2, 27 | "col": 1, 28 | "description": "li₃ is the fast, flexible and most RAD development framework for PHP", 29 | "url": "https://api.github.com/repos/UnionOfRAD/lithium", 30 | "stargazers_count": 1099 31 | }, 32 | { 33 | "name": "Beryllium", 34 | "number": 4, 35 | "symbol": "Be", 36 | "row": 2, 37 | "col": 2, 38 | "description": "High performance SDK for building bots on Wire.", 39 | "url": "https://api.github.com/repos/OmnijarBots/beryllium", 40 | "stargazers_count": 9 41 | }, 42 | { 43 | "name": "Boron", 44 | "number": 5, 45 | "symbol": "B", 46 | "row": 2, 47 | "col": 13, 48 | "description": "A collection of dialog animations with React.js", 49 | "url": "https://api.github.com/repos/yuanyan/boron", 50 | "stargazers_count": 1416 51 | }, 52 | { 53 | "name": "Carbon", 54 | "number": 6, 55 | "symbol": "C", 56 | "row": 2, 57 | "col": 14, 58 | "description": "🎨 Create and share beautiful images of your source code", 59 | "url": "https://api.github.com/repos/dawnlabs/carbon", 60 | "stargazers_count": 10589 61 | }, 62 | { 63 | "name": "Nitrogen", 64 | "number": 7, 65 | "symbol": "N", 66 | "row": 2, 67 | "col": 15, 68 | "description": "Nitrogen Web Framework for Erlang (now with websockets!)", 69 | "url": "https://api.github.com/repos/nitrogen/nitrogen", 70 | "stargazers_count": 839 71 | }, 72 | { 73 | "name": "Oxygen", 74 | "number": 8, 75 | "symbol": "O", 76 | "row": 2, 77 | "col": 16, 78 | "description": "A basic theme for Drupal using the peroxide theme engine.", 79 | "url": "https://api.github.com/repos/codeincarnate/oxygen", 80 | "stargazers_count": 11 81 | }, 82 | { 83 | "name": "Fluorine", 84 | "number": 9, 85 | "symbol": "F", 86 | "row": 2, 87 | "col": 17, 88 | "description": "[UNMAINTAINED] Reactive state and side effect management for React using a single stream of actions", 89 | "url": "https://api.github.com/repos/kitten/fluorine", 90 | "stargazers_count": 296 91 | }, 92 | { 93 | "name": "Neon", 94 | "number": 10, 95 | "symbol": "Ne", 96 | "row": 2, 97 | "col": 18, 98 | "description": "A powerful Swift programmatic UI layout framework.", 99 | "url": "https://api.github.com/repos/mamaral/Neon", 100 | "stargazers_count": 4286 101 | }, 102 | { 103 | "name": "Sodium", 104 | "number": 11, 105 | "symbol": "Na", 106 | "row": 3, 107 | "col": 1, 108 | "description": "Sodium - Functional Reactive Programming (FRP) Library for multiple languages", 109 | "url": "https://api.github.com/repos/SodiumFRP/sodium", 110 | "stargazers_count": 645 111 | }, 112 | { 113 | "name": "Magnesium", 114 | "number": 12, 115 | "symbol": "Mg", 116 | "row": 3, 117 | "col": 2, 118 | "description": ":crystal_ball: A terminal emulator based on Electron.", 119 | "url": "https://api.github.com/repos/IonicaBizau/magnesium", 120 | "stargazers_count": 32 121 | }, 122 | { 123 | "name": "Aluminium", 124 | "number": 13, 125 | "symbol": "Al", 126 | "row": 3, 127 | "col": 13, 128 | "description": "A simple mod that adds aluminium to Minetest", 129 | "url": "https://api.github.com/repos/ClobberXD/aluminium", 130 | "stargazers_count": 2 131 | }, 132 | { 133 | "name": "Silicon", 134 | "number": 14, 135 | "symbol": "Si", 136 | "row": 3, 137 | "col": 14, 138 | "description": "A high performance, middleware oriented C++14 http web framework", 139 | "url": "https://api.github.com/repos/matt-42/silicon", 140 | "stargazers_count": 1513 141 | }, 142 | { 143 | "name": "Phosphorus", 144 | "number": 15, 145 | "symbol": "P", 146 | "row": 3, 147 | "col": 15, 148 | "description": "JavaScript compiler for Scratch projects.", 149 | "url": "https://api.github.com/repos/nathan/phosphorus", 150 | "stargazers_count": 202 151 | }, 152 | { 153 | "name": "Sulfur", 154 | "number": 16, 155 | "symbol": "S", 156 | "row": 3, 157 | "col": 16, 158 | "description": "Media manager written for the WordPress.com & Jetpack REST API.", 159 | "url": "https://api.github.com/repos/Automattic/sulfur", 160 | "stargazers_count": 46 161 | }, 162 | { 163 | "name": "Chlorine", 164 | "number": 17, 165 | "symbol": "Cl", 166 | "row": 3, 167 | "col": 17, 168 | "description": "Dead Simple OpenCL", 169 | "url": "https://api.github.com/repos/Polytonic/Chlorine", 170 | "stargazers_count": 414 171 | }, 172 | { 173 | "name": "Argon", 174 | "number": 18, 175 | "symbol": "Ar", 176 | "row": 3, 177 | "col": 18, 178 | "description": "The Plug And Play Backend. Based on pure JS and PHP", 179 | "url": "https://api.github.com/repos/benhmoore/Argon", 180 | "stargazers_count": 324 181 | }, 182 | { 183 | "name": "Potassium", 184 | "number": 19, 185 | "symbol": "K", 186 | "row": 4, 187 | "col": 1, 188 | "description": "The father to every Platanus Rails project", 189 | "url": "https://api.github.com/repos/platanus/potassium", 190 | "stargazers_count": 25 191 | }, 192 | { 193 | "name": "Calcium", 194 | "number": 20, 195 | "symbol": "Ca", 196 | "row": 4, 197 | "col": 2, 198 | "description": "fetch/parse school meals list from goverment.", 199 | "url": "https://api.github.com/repos/hibiyasleep/calcium", 200 | "stargazers_count": 9 201 | }, 202 | { 203 | "name": "Scandium", 204 | "number": 21, 205 | "symbol": "Sc", 206 | "row": 4, 207 | "col": 3, 208 | "description": "A toolkit for transformation webapps into desktop applications under QtWebKit.", 209 | "url": "https://api.github.com/repos/mattbennett/scandium", 210 | "stargazers_count": 39 211 | }, 212 | { 213 | "name": "Titanium", 214 | "number": 22, 215 | "symbol": "Ti", 216 | "row": 4, 217 | "col": 4, 218 | "description": "The Titanium Command Line (CLI) project", 219 | "url": "https://api.github.com/repos/appcelerator/titanium", 220 | "stargazers_count": 209 221 | }, 222 | { 223 | "name": "Vanadium", 224 | "number": 23, 225 | "symbol": "V", 226 | "row": 4, 227 | "col": 5, 228 | "description": "Vanadium, V23, Vanadis - Norse goddess of beauty and fertility, Element which name is closest to VALIDATION", 229 | "url": "https://api.github.com/repos/lambder/Vanadium", 230 | "stargazers_count": 124 231 | }, 232 | { 233 | "name": "Chromium", 234 | "number": 24, 235 | "symbol": "Cr", 236 | "row": 4, 237 | "col": 6, 238 | "description": "The official GitHub mirror of the Chromium source", 239 | "url": "https://api.github.com/repos/chromium/chromium", 240 | "stargazers_count": 697 241 | }, 242 | { 243 | "name": "Manganese", 244 | "number": 25, 245 | "symbol": "Mn", 246 | "row": 4, 247 | "col": 7, 248 | "description": "Download and organize manga on your computers using popular websites crawling.", 249 | "url": "https://api.github.com/repos/jfmengels/manganese", 250 | "stargazers_count": 6 251 | }, 252 | { 253 | "name": "Iron", 254 | "number": 26, 255 | "symbol": "Fe", 256 | "row": 4, 257 | "col": 8, 258 | "description": "An Extensible, Concurrent Web Framework for Rust", 259 | "url": "https://api.github.com/repos/iron/iron", 260 | "stargazers_count": 4889 261 | }, 262 | { 263 | "name": "Cobalt", 264 | "number": 27, 265 | "symbol": "Co", 266 | "row": 4, 267 | "col": 9, 268 | "description": "Open data APIs for interfacing with public information from the University of Toronto.", 269 | "url": "https://api.github.com/repos/cobalt-uoft/cobalt", 270 | "stargazers_count": 75 271 | }, 272 | { 273 | "name": "Nickel", 274 | "number": 28, 275 | "symbol": "Ni", 276 | "row": 4, 277 | "col": 10, 278 | "description": "Nickel extracts date, time, and message information from naturally worded text.", 279 | "url": "https://api.github.com/repos/lzell/nickel", 280 | "stargazers_count": 205 281 | }, 282 | { 283 | "name": "Copper", 284 | "number": 29, 285 | "symbol": "Cu", 286 | "row": 4, 287 | "col": 11, 288 | "description": "[WIP] Your guide to programming ARM Cortex-M microcontrollers with Rust", 289 | "url": "https://api.github.com/repos/japaric/copper", 290 | "stargazers_count": 313 291 | }, 292 | { 293 | "name": "Zinc", 294 | "number": 30, 295 | "symbol": "Zn", 296 | "row": 4, 297 | "col": 12, 298 | "description": "The bare metal stack for rust", 299 | "url": "https://api.github.com/repos/hackndev/zinc", 300 | "stargazers_count": 987 301 | }, 302 | { 303 | "name": "Gallium", 304 | "number": 31, 305 | "symbol": "Ga", 306 | "row": 4, 307 | "col": 13, 308 | "description": "Build desktop applications in Go and HTML.", 309 | "url": "https://api.github.com/repos/alexflint/gallium", 310 | "stargazers_count": 3568 311 | }, 312 | { 313 | "name": "Germanium", 314 | "number": 32, 315 | "symbol": "Ge", 316 | "row": 4, 317 | "col": 14, 318 | "description": "Fuzz yer forms.", 319 | "url": "https://api.github.com/repos/thefury/germanium", 320 | "stargazers_count": 2 321 | }, 322 | { 323 | "name": "Arsenic", 324 | "number": 33, 325 | "symbol": "As", 326 | "row": 4, 327 | "col": 15, 328 | "description": "Async WebDriver implementation for asyncio and asyncio-compatible frameworks", 329 | "url": "https://api.github.com/repos/HDE/arsenic", 330 | "stargazers_count": 53 331 | }, 332 | { 333 | "name": "Selenium", 334 | "number": 34, 335 | "symbol": "Se", 336 | "row": 4, 337 | "col": 16, 338 | "description": "A browser automation framework and ecosystem.", 339 | "url": "https://api.github.com/repos/SeleniumHQ/selenium", 340 | "stargazers_count": 10377 341 | }, 342 | { 343 | "name": "Bromine", 344 | "number": 35, 345 | "symbol": "Br", 346 | "row": 4, 347 | "col": 17, 348 | "description": "JS library for UI testing in the browser", 349 | "url": "https://api.github.com/repos/CheggEng/Bromine", 350 | "stargazers_count": 18 351 | }, 352 | { 353 | "name": "Krypton", 354 | "number": 36, 355 | "symbol": "Kr", 356 | "row": 4, 357 | "col": 18, 358 | "description": "Krypton WinForms components for .NET", 359 | "url": "https://api.github.com/repos/ComponentFactory/Krypton", 360 | "stargazers_count": 407 361 | }, 362 | { 363 | "name": "Rubidium", 364 | "number": 37, 365 | "symbol": "Rb", 366 | "row": 5, 367 | "col": 1, 368 | "description": ":hourglass: A small unique job scheduler.", 369 | "url": "https://api.github.com/repos/qubyte/rubidium", 370 | "stargazers_count": 4 371 | }, 372 | { 373 | "name": "Strontium", 374 | "number": 38, 375 | "symbol": "Sr", 376 | "row": 5, 377 | "col": 2, 378 | "description": "The Strontium Library (SrL) is a collection of sketch recognition libraries for use on the JDK and Android", 379 | "url": "https://api.github.com/repos/eyce9000/strontium", 380 | "stargazers_count": 11 381 | }, 382 | { 383 | "name": "Yttrium", 384 | "number": 39, 385 | "symbol": "Y", 386 | "row": 5, 387 | "col": 3, 388 | "description": "Scaffold for go REST api service", 389 | "url": "https://api.github.com/repos/uthark/yttrium", 390 | "stargazers_count": 1 391 | }, 392 | { 393 | "name": "Zirconium", 394 | "number": 40, 395 | "symbol": "Zr", 396 | "row": 5, 397 | "col": 4, 398 | "description": "A picoframework for Web Components", 399 | "url": "https://api.github.com/repos/rtsao/zirconium", 400 | "stargazers_count": 5 401 | }, 402 | { 403 | "name": "Niobium", 404 | "number": 41, 405 | "symbol": "Nb", 406 | "row": 5, 407 | "col": 5, 408 | "description": null, 409 | "url": "https://api.github.com/repos/rightfold/niobium", 410 | "stargazers_count": 2 411 | }, 412 | { 413 | "name": "Molybdenum", 414 | "number": 42, 415 | "symbol": "Mo", 416 | "row": 5, 417 | "col": 6, 418 | "description": "A git repo browser (for when your git repos aren't on GitHub)", 419 | "url": "https://api.github.com/repos/trentm/molybdenum", 420 | "stargazers_count": 12 421 | }, 422 | { 423 | "name": "Technetium", 424 | "number": 43, 425 | "symbol": "Tc", 426 | "row": 5, 427 | "col": 7, 428 | "description": "Mercurial Centralized Issue Tracker and Report Generation ", 429 | "url": "https://api.github.com/repos/DrkSephy/technetium", 430 | "stargazers_count": 20 431 | }, 432 | { 433 | "name": "Ruthenium", 434 | "number": 44, 435 | "symbol": "Ru", 436 | "row": 5, 437 | "col": 8, 438 | "description": "Ack-like search tool written in Rust", 439 | "url": "https://api.github.com/repos/birkenfeld/ruthenium", 440 | "stargazers_count": 12 441 | }, 442 | { 443 | "name": "Rhodium", 444 | "number": 45, 445 | "symbol": "Rh", 446 | "row": 5, 447 | "col": 9, 448 | "description": "Python Library for Robust Decision Making and Exploratory Modelling", 449 | "url": "https://api.github.com/repos/Project-Platypus/Rhodium", 450 | "stargazers_count": 24 451 | }, 452 | { 453 | "name": "Palladium", 454 | "number": 46, 455 | "symbol": "Pd", 456 | "row": 5, 457 | "col": 10, 458 | "description": "Framework for setting up predictive analytics services", 459 | "url": "https://api.github.com/repos/ottogroup/palladium", 460 | "stargazers_count": 423 461 | }, 462 | { 463 | "name": "Silver", 464 | "number": 47, 465 | "symbol": "Ag", 466 | "row": 5, 467 | "col": 11, 468 | "description": "Automated billing and payments for Django with a REST API", 469 | "url": "https://api.github.com/repos/silverapp/silver", 470 | "stargazers_count": 161 471 | }, 472 | { 473 | "name": "Cadmium", 474 | "number": 48, 475 | "symbol": "Cd", 476 | "row": 5, 477 | "col": 12, 478 | "description": "A Swift framework that wraps CoreData, hides context complexity, and helps facilitate best practices.", 479 | "url": "https://api.github.com/repos/jmfieldman/Cadmium", 480 | "stargazers_count": 97 481 | }, 482 | { 483 | "name": "Indium", 484 | "number": 49, 485 | "symbol": "In", 486 | "row": 5, 487 | "col": 13, 488 | "description": "A JavaScript development environment for Emacs", 489 | "url": "https://api.github.com/repos/NicolasPetton/Indium", 490 | "stargazers_count": 687 491 | }, 492 | { 493 | "name": "Tin", 494 | "number": 50, 495 | "symbol": "Sn", 496 | "row": 5, 497 | "col": 14, 498 | "stargazers_count": 0, 499 | "url": "", 500 | "description": "" 501 | }, 502 | { 503 | "name": "Antimony", 504 | "number": 51, 505 | "symbol": "Sb", 506 | "row": 5, 507 | "col": 15, 508 | "description": "CAD from a parallel universe", 509 | "url": "https://api.github.com/repos/mkeeter/antimony", 510 | "stargazers_count": 1471 511 | }, 512 | { 513 | "name": "Tellurium", 514 | "number": 52, 515 | "symbol": "Te", 516 | "row": 5, 517 | "col": 16, 518 | "description": "A utility pack to create maintainable and reliable UI tests using Selenium with additional support for ASP.NET MVC projects.", 519 | "url": "https://api.github.com/repos/cezarypiatek/Tellurium", 520 | "stargazers_count": 24 521 | }, 522 | { 523 | "name": "Iodine", 524 | "number": 53, 525 | "symbol": "I", 526 | "row": 5, 527 | "col": 17, 528 | "description": "Official git repo for iodine dns tunnel", 529 | "url": "https://api.github.com/repos/yarrick/iodine", 530 | "stargazers_count": 2311 531 | }, 532 | { 533 | "name": "Xenon", 534 | "number": 54, 535 | "symbol": "Xe", 536 | "row": 5, 537 | "col": 18, 538 | "description": "Xenon - Decentralized Control Plane Framework", 539 | "url": "https://api.github.com/repos/vmware/xenon", 540 | "stargazers_count": 214 541 | }, 542 | { 543 | "name": "Cesium", 544 | "number": 55, 545 | "symbol": "Cs", 546 | "row": 6, 547 | "col": 1, 548 | "description": "An open-source JavaScript library for world-class 3D globes and maps :earth_americas:", 549 | "url": "https://api.github.com/repos/AnalyticalGraphicsInc/cesium", 550 | "stargazers_count": 3106 551 | }, 552 | { 553 | "name": "Barium", 554 | "number": 56, 555 | "symbol": "Ba", 556 | "row": 6, 557 | "col": 2, 558 | "description": "Pragmatic Styling with React.js", 559 | "url": "https://api.github.com/repos/yuanyan/barium", 560 | "stargazers_count": 13 561 | }, 562 | { 563 | "name": "Lanthanum", 564 | "number": 57, 565 | "symbol": "La", 566 | "row": 9, 567 | "col": 3, 568 | "description": "Java math lib", 569 | "url": "https://api.github.com/repos/creichlin/lanthanum", 570 | "stargazers_count": 0 571 | }, 572 | { 573 | "name": "Cerium", 574 | "number": 58, 575 | "symbol": "Ce", 576 | "row": 9, 577 | "col": 4, 578 | "description": "Project Cerium - Event Site Template (2016 Version)", 579 | "url": "https://api.github.com/repos/limhenry/cerium", 580 | "stargazers_count": 10 581 | }, 582 | { 583 | "name": "Praseodymium", 584 | "number": 59, 585 | "symbol": "Pr", 586 | "row": 9, 587 | "col": 5, 588 | "description": null, 589 | "url": "https://api.github.com/repos/lanthanoid/praseodymium", 590 | "stargazers_count": 0 591 | }, 592 | { 593 | "name": "Neodymium", 594 | "number": 60, 595 | "symbol": "Nd", 596 | "row": 9, 597 | "col": 6, 598 | "description": ":metal: Atomic number soixante", 599 | "url": "https://api.github.com/repos/soixantecircuits/neodymium", 600 | "stargazers_count": 13 601 | }, 602 | { 603 | "name": "Promethium", 604 | "number": 61, 605 | "symbol": "Pm", 606 | "row": 9, 607 | "col": 7, 608 | "description": null, 609 | "url": "https://api.github.com/repos/promethius2018/promethium", 610 | "stargazers_count": 0 611 | }, 612 | { 613 | "name": "Samarium", 614 | "number": 62, 615 | "symbol": "Sm", 616 | "row": 9, 617 | "col": 8, 618 | "description": "GDGKL Event Website Template (2017 Version)", 619 | "url": "https://api.github.com/repos/limhenry/samarium", 620 | "stargazers_count": 3 621 | }, 622 | { 623 | "name": "Europium", 624 | "number": 63, 625 | "symbol": "Eu", 626 | "row": 9, 627 | "col": 9, 628 | "description": null, 629 | "url": "https://api.github.com/repos/lanthanoid/europium", 630 | "stargazers_count": 0 631 | }, 632 | { 633 | "name": "Gadolinium", 634 | "number": 64, 635 | "symbol": "Gd", 636 | "row": 9, 637 | "col": 10, 638 | "description": null, 639 | "url": "https://api.github.com/repos/lubolub1/Gadolinium", 640 | "stargazers_count": 0 641 | }, 642 | { 643 | "name": "Terbium", 644 | "number": 65, 645 | "symbol": "Tb", 646 | "row": 9, 647 | "col": 11, 648 | "description": "advansed scaffold builder", 649 | "url": "https://api.github.com/repos/pyromaniac/terbium", 650 | "stargazers_count": 2 651 | }, 652 | { 653 | "name": "Dysprosium", 654 | "number": 66, 655 | "symbol": "Dy", 656 | "row": 9, 657 | "col": 12, 658 | "description": "JavaScript documentation parser", 659 | "url": "https://api.github.com/repos/azendal/dysprosium", 660 | "stargazers_count": 7 661 | }, 662 | { 663 | "name": "Holmium", 664 | "number": 67, 665 | "symbol": "Ho", 666 | "row": 9, 667 | "col": 13, 668 | "description": null, 669 | "url": "https://api.github.com/repos/lanthanoid/holmium", 670 | "stargazers_count": 0 671 | }, 672 | { 673 | "name": "Erbium", 674 | "number": 68, 675 | "symbol": "Er", 676 | "row": 9, 677 | "col": 14, 678 | "description": "Erbium - JavaScript Components", 679 | "url": "https://api.github.com/repos/AlexanderElias/erbium", 680 | "stargazers_count": 1 681 | }, 682 | { 683 | "name": "Thulium", 684 | "number": 69, 685 | "symbol": "Tm", 686 | "row": 9, 687 | "col": 15, 688 | "description": null, 689 | "url": "https://api.github.com/repos/freshout-dev/thulium", 690 | "stargazers_count": 34 691 | }, 692 | { 693 | "name": "Ytterbium", 694 | "number": 70, 695 | "symbol": "Yb", 696 | "row": 9, 697 | "col": 16, 698 | "description": "An OSC capable audio synthesizer written in Rust", 699 | "url": "https://api.github.com/repos/klingtnet/ytterbium", 700 | "stargazers_count": 1 701 | }, 702 | { 703 | "name": "Lutetium", 704 | "number": 71, 705 | "symbol": "Lu", 706 | "row": 9, 707 | "col": 17, 708 | "description": "Lutetium GUI Platform", 709 | "url": "https://api.github.com/repos/RTNelo/Lutetium", 710 | "stargazers_count": 0 711 | }, 712 | { 713 | "name": "Hafnium", 714 | "number": 72, 715 | "symbol": "Hf", 716 | "row": 6, 717 | "col": 4, 718 | "description": "Home Automation", 719 | "url": "https://api.github.com/repos/hafnium/Hafnium", 720 | "stargazers_count": 2 721 | }, 722 | { 723 | "name": "Tantalum", 724 | "number": 73, 725 | "symbol": "Ta", 726 | "row": 6, 727 | "col": 5, 728 | "description": "WebGL 2D Light Transport", 729 | "url": "https://api.github.com/repos/tunabrain/tantalum", 730 | "stargazers_count": 357 731 | }, 732 | { 733 | "name": "Tungsten", 734 | "number": 74, 735 | "symbol": "W", 736 | "row": 6, 737 | "col": 6, 738 | "description": "High performance physically based renderer in C++11", 739 | "url": "https://api.github.com/repos/tunabrain/tungsten", 740 | "stargazers_count": 994 741 | }, 742 | { 743 | "name": "Rhenium", 744 | "number": 75, 745 | "symbol": "Re", 746 | "row": 6, 747 | "col": 7, 748 | "description": "MySQL replication relay service", 749 | "url": "https://api.github.com/repos/vkandy/rhenium", 750 | "stargazers_count": 2 751 | }, 752 | { 753 | "name": "Osmium", 754 | "number": 76, 755 | "symbol": "Os", 756 | "row": 6, 757 | "col": 8, 758 | "description": "C++/Javascript framework for working with OSM files.", 759 | "url": "https://api.github.com/repos/joto/osmium", 760 | "stargazers_count": 115 761 | }, 762 | { 763 | "name": "Iridium", 764 | "number": 77, 765 | "symbol": "Ir", 766 | "row": 6, 767 | "col": 9, 768 | "description": "Iridium is an extension built to improve your experience with the new YouTube Material layout", 769 | "url": "https://api.github.com/repos/ParticleCore/Iridium", 770 | "stargazers_count": 707 771 | }, 772 | { 773 | "name": "Platinum", 774 | "number": 78, 775 | "symbol": "Pt", 776 | "row": 6, 777 | "col": 10, 778 | "description": "UPnP SDK", 779 | "url": "https://api.github.com/repos/plutinosoft/Platinum", 780 | "stargazers_count": 130 781 | }, 782 | { 783 | "name": "Gold", 784 | "number": 79, 785 | "symbol": "Au", 786 | "row": 6, 787 | "col": 11, 788 | "description": "[DEPRECATED]Template engine for Go", 789 | "url": "https://api.github.com/repos/yosssi/gold", 790 | "stargazers_count": 154 791 | }, 792 | { 793 | "name": "Mercury", 794 | "number": 80, 795 | "symbol": "Hg", 796 | "row": 6, 797 | "col": 12, 798 | "description": "A truly modular frontend framework", 799 | "url": "https://api.github.com/repos/Raynos/mercury", 800 | "stargazers_count": 2764 801 | }, 802 | { 803 | "name": "Thallium", 804 | "number": 81, 805 | "symbol": "Tl", 806 | "row": 6, 807 | "col": 13, 808 | "description": "A simple, extensible JavaScript test framework (work in progress)", 809 | "url": "https://api.github.com/repos/isiahmeadows/thallium", 810 | "stargazers_count": 15 811 | }, 812 | { 813 | "name": "Lead", 814 | "number": 82, 815 | "symbol": "Pb", 816 | "row": 6, 817 | "col": 14, 818 | "stargazers_count": 0, 819 | "url": "", 820 | "description": "" 821 | }, 822 | { 823 | "name": "Bismuth", 824 | "number": 83, 825 | "symbol": "Bi", 826 | "row": 6, 827 | "col": 15, 828 | "description": "The first Python blockchain platform", 829 | "url": "https://api.github.com/repos/hclivess/Bismuth", 830 | "stargazers_count": 129 831 | }, 832 | { 833 | "name": "Polonium", 834 | "number": 84, 835 | "symbol": "Po", 836 | "row": 6, 837 | "col": 16, 838 | "description": "Selenium RC with Rails integration and enhanced assertions.", 839 | "url": "https://api.github.com/repos/pivotalexperimental/polonium", 840 | "stargazers_count": 39 841 | }, 842 | { 843 | "name": "Astatine", 844 | "number": 85, 845 | "symbol": "At", 846 | "row": 6, 847 | "col": 17, 848 | "description": "Astatine || At - Simple Small Ajax and HTML Form Library", 849 | "url": "https://api.github.com/repos/AlexanderElias/astatine", 850 | "stargazers_count": 1 851 | }, 852 | { 853 | "name": "Radon", 854 | "number": 86, 855 | "symbol": "Rn", 856 | "row": 6, 857 | "col": 18, 858 | "description": "Various code metrics for Python code", 859 | "url": "https://api.github.com/repos/rubik/radon", 860 | "stargazers_count": 796 861 | }, 862 | { 863 | "name": "Francium", 864 | "number": 87, 865 | "symbol": "Fr", 866 | "row": 7, 867 | "col": 1, 868 | "description": "A small web programming library on top of reactive-banana and virtual-dom", 869 | "url": "https://api.github.com/repos/ocharles/Francium", 870 | "stargazers_count": 81 871 | }, 872 | { 873 | "name": "Radium", 874 | "number": 88, 875 | "symbol": "Ra", 876 | "row": 7, 877 | "col": 2, 878 | "description": "A toolchain for React component styling.", 879 | "url": "https://api.github.com/repos/FormidableLabs/radium", 880 | "stargazers_count": 6255 881 | }, 882 | { 883 | "name": "Actinium", 884 | "number": 89, 885 | "symbol": "Ac", 886 | "row": 10, 887 | "col": 3, 888 | "description": "A 3rd party V2Ray client for Android", 889 | "url": "https://api.github.com/repos/V2Ray-Android/Actinium", 890 | "stargazers_count": 289 891 | }, 892 | { 893 | "name": "Thorium", 894 | "number": 90, 895 | "symbol": "Th", 896 | "row": 10, 897 | "col": 4, 898 | "description": "A simple RESTful API framework built on Flask.", 899 | "url": "https://api.github.com/repos/EventMobi/thorium", 900 | "stargazers_count": 20 901 | }, 902 | { 903 | "name": "Protactinium", 904 | "number": 91, 905 | "symbol": "Pa", 906 | "row": 10, 907 | "col": 5, 908 | "description": null, 909 | "url": "https://api.github.com/repos/MarkWaldron/Protactinium", 910 | "stargazers_count": 0 911 | }, 912 | { 913 | "name": "Uranium", 914 | "number": 92, 915 | "symbol": "U", 916 | "row": 10, 917 | "col": 6, 918 | "description": "Universal css-in-js media queries for React Native and React", 919 | "url": "https://api.github.com/repos/tuckerconnelly/uranium", 920 | "stargazers_count": 114 921 | }, 922 | { 923 | "name": "Neptunium", 924 | "number": 93, 925 | "symbol": "Np", 926 | "row": 10, 927 | "col": 7, 928 | "description": "A fresh take on Hanasu. Neptunium is a UWP (Windows 10) internet radio player for a very niche audience.", 929 | "url": "https://api.github.com/repos/Amrykid/Neptunium", 930 | "stargazers_count": 4 931 | }, 932 | { 933 | "name": "Plutonium", 934 | "number": 94, 935 | "symbol": "Pu", 936 | "row": 10, 937 | "col": 8, 938 | "description": null, 939 | "url": "https://api.github.com/repos/jbpros/plutonium", 940 | "stargazers_count": 13 941 | }, 942 | { 943 | "name": "Americium", 944 | "number": 95, 945 | "symbol": "Am", 946 | "row": 10, 947 | "col": 9, 948 | "description": "Infrastructure used by various SageSerpent Scala projects. Orginally ported from a part of NTestCaseBuilder, now a project in its own right.", 949 | "url": "https://api.github.com/repos/sageserpent-open/americium", 950 | "stargazers_count": 1 951 | }, 952 | { 953 | "name": "Curium", 954 | "number": 96, 955 | "symbol": "Cm", 956 | "row": 10, 957 | "col": 10, 958 | "description": "Curium - Web Component Library/Framework", 959 | "url": "https://api.github.com/repos/AlexanderElias/curium", 960 | "stargazers_count": 2 961 | }, 962 | { 963 | "name": "Berkelium", 964 | "number": 97, 965 | "symbol": "Bk", 966 | "row": 10, 967 | "col": 11, 968 | "description": null, 969 | "url": "https://api.github.com/repos/berkelium/berkelium", 970 | "stargazers_count": 26 971 | }, 972 | { 973 | "name": "Californium", 974 | "number": 98, 975 | "symbol": "Cf", 976 | "row": 10, 977 | "col": 12, 978 | "description": null, 979 | "url": "https://api.github.com/repos/eclipse/californium", 980 | "stargazers_count": 213 981 | }, 982 | { 983 | "name": "Einsteinium", 984 | "number": 99, 985 | "symbol": "Es", 986 | "row": 10, 987 | "col": 13, 988 | "description": null, 989 | "url": "https://api.github.com/repos/einsteinium/einsteinium", 990 | "stargazers_count": 8 991 | }, 992 | { 993 | "name": "Fermium", 994 | "number": 100, 995 | "symbol": "Fm", 996 | "row": 10, 997 | "col": 14, 998 | "description": "The fermium subproject. The core of this project is the baby growth tracking webpage, a page built with bootstrap and D3.", 999 | "url": "https://api.github.com/repos/The-Victoria-Initiative/fermium", 1000 | "stargazers_count": 0 1001 | }, 1002 | { 1003 | "name": "Mendelevium", 1004 | "number": 101, 1005 | "symbol": "Md", 1006 | "row": 10, 1007 | "col": 15, 1008 | "description": "Mendelevium is a PHP Log Center that relies on Redis as a backend", 1009 | "url": "https://api.github.com/repos/felipescb/Mendelevium", 1010 | "stargazers_count": 2 1011 | }, 1012 | { 1013 | "name": "Nobelium", 1014 | "number": 102, 1015 | "symbol": "No", 1016 | "row": 10, 1017 | "col": 16, 1018 | "description": "Nobelium Standalone Package based on Bootstrap.", 1019 | "url": "https://api.github.com/repos/bauwebster/Nobelium", 1020 | "stargazers_count": 0 1021 | }, 1022 | { 1023 | "name": "Lawrencium", 1024 | "number": 103, 1025 | "symbol": "Lr", 1026 | "row": 10, 1027 | "col": 17, 1028 | "description": "A Mercurial wrapper for Vim.", 1029 | "url": "https://api.github.com/repos/vim-scripts/Lawrencium", 1030 | "stargazers_count": 2 1031 | }, 1032 | { 1033 | "name": "Rutherfordium", 1034 | "number": 104, 1035 | "symbol": "Rf", 1036 | "row": 7, 1037 | "col": 4, 1038 | "description": null, 1039 | "url": "https://api.github.com/repos/ldouglas956/Rutherfordium", 1040 | "stargazers_count": 0 1041 | }, 1042 | { 1043 | "name": "Dubnium", 1044 | "number": 105, 1045 | "symbol": "Db", 1046 | "row": 7, 1047 | "col": 5, 1048 | "description": "Cross-platform GUI debugger for PHP/XDebug (and anything else that talks DBGp).", 1049 | "url": "https://api.github.com/repos/LawnGnome/dubnium", 1050 | "stargazers_count": 5 1051 | }, 1052 | { 1053 | "name": "Seaborgium", 1054 | "number": 106, 1055 | "symbol": "Sg", 1056 | "row": 7, 1057 | "col": 6, 1058 | "description": "wip", 1059 | "url": "https://api.github.com/repos/sgraham/seaborgium", 1060 | "stargazers_count": 3 1061 | }, 1062 | { 1063 | "name": "Bohrium", 1064 | "number": 107, 1065 | "symbol": "Bh", 1066 | "row": 7, 1067 | "col": 7, 1068 | "description": "Automatic parallelization of Python/NumPy, C, and C++ codes on Linux and MacOSX", 1069 | "url": "https://api.github.com/repos/bh107/bohrium", 1070 | "stargazers_count": 141 1071 | }, 1072 | { 1073 | "name": "Hassium", 1074 | "number": 108, 1075 | "symbol": "Hs", 1076 | "row": 7, 1077 | "col": 8, 1078 | "description": "Programming Language in C#", 1079 | "url": "https://api.github.com/repos/HassiumTeam/Hassium", 1080 | "stargazers_count": 14 1081 | }, 1082 | { 1083 | "name": "Meitnerium", 1084 | "number": 109, 1085 | "symbol": "Mt", 1086 | "row": 7, 1087 | "col": 9, 1088 | "description": "Team Project for Code Quality Assignment", 1089 | "url": "https://api.github.com/repos/BorisPenev/Meitnerium", 1090 | "stargazers_count": 0 1091 | }, 1092 | { 1093 | "name": "Darmstadtium", 1094 | "number": 110, 1095 | "symbol": "Ds", 1096 | "row": 7, 1097 | "col": 10, 1098 | "description": "Because Darmstadt is the nicest city in Germany and we need to be represented here: https://ablakey.github.io/periodic/index.html", 1099 | "url": "https://api.github.com/repos/jsbeckr/darmstadtium", 1100 | "stargazers_count": 3 1101 | }, 1102 | { 1103 | "name": "Roentgenium", 1104 | "number": 111, 1105 | "symbol": "Rg", 1106 | "row": 7, 1107 | "col": 11, 1108 | "description": "colorForth computing environment for x86 PCs.", 1109 | "url": "https://api.github.com/repos/narke/Roentgenium", 1110 | "stargazers_count": 9 1111 | }, 1112 | { 1113 | "name": "Copernicium", 1114 | "number": 112, 1115 | "symbol": "Cn", 1116 | "row": 7, 1117 | "col": 12, 1118 | "description": "A playground for genetic algorithm development.", 1119 | "url": "https://api.github.com/repos/The-Victoria-Initiative/copernicium", 1120 | "stargazers_count": 0 1121 | }, 1122 | { 1123 | "name": "Nihonium", 1124 | "number": 113, 1125 | "symbol": "Nh", 1126 | "row": 7, 1127 | "col": 13, 1128 | "description": "full size workspace switcher ", 1129 | "url": "https://api.github.com/repos/mlde/nihonium", 1130 | "stargazers_count": 0 1131 | }, 1132 | { 1133 | "name": "Flerovium", 1134 | "number": 114, 1135 | "symbol": "Fl", 1136 | "row": 7, 1137 | "col": 14, 1138 | "description": "Live bus data feed webserver and website", 1139 | "url": "https://api.github.com/repos/JosephGarrone/flerovium", 1140 | "stargazers_count": 3 1141 | }, 1142 | { 1143 | "name": "Moscovium", 1144 | "number": 115, 1145 | "symbol": "Mc", 1146 | "row": 7, 1147 | "col": 15, 1148 | "description": null, 1149 | "url": "https://api.github.com/repos/rorz/Moscovium", 1150 | "stargazers_count": 0 1151 | }, 1152 | { 1153 | "name": "Livermorium", 1154 | "number": 116, 1155 | "symbol": "Lv", 1156 | "row": 7, 1157 | "col": 16, 1158 | "description": null, 1159 | "url": "https://api.github.com/repos/kretash/Livermorium", 1160 | "stargazers_count": 0 1161 | }, 1162 | { 1163 | "name": "Tennessine", 1164 | "number": 117, 1165 | "symbol": "Ts", 1166 | "row": 7, 1167 | "col": 17, 1168 | "description": null, 1169 | "url": "https://api.github.com/repos/C-H3/Tennessine", 1170 | "stargazers_count": 0 1171 | }, 1172 | { 1173 | "name": "Oganesson", 1174 | "number": 118, 1175 | "symbol": "Og", 1176 | "row": 7, 1177 | "col": 18, 1178 | "description": "A parser for chemical formula strings.", 1179 | "url": "https://api.github.com/repos/nathanhleung/oganesson", 1180 | "stargazers_count": 3 1181 | } 1182 | ] -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Periodic Table of GitHub 6 | 7 | 8 | 9 | 10 | 11 |
12 |
The Periodic Table of GitHub
13 | Because naming is hard. 14 |
15 |
16 |
Click an element.
17 |
18 |
19 |
20 |
21 | 22 |
23 |
24 |
25 |
26 |
27 | Last updated: May 5, 2018 by 28 | Andrew Blakey 29 |
30 | 31 |
32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | function onElementClick() { 2 | let number = this.getAttribute('data-number') 3 | let element = window.tableData[number - 1] 4 | showElementDetails(element) 5 | } 6 | 7 | function showElementDetails(element) { 8 | let url = element.url.replace('https://api.github.com/repos/', 'http://github.com/') 9 | let urlLabel = url.replace('http://github.com/', '') 10 | document.querySelector('#cardNumber').innerHTML = element.number 11 | document.querySelector('#cardSymbol').innerHTML = element.symbol 12 | document.querySelector('#cardLink').innerHTML = `github.com/${urlLabel}` 13 | document.querySelector('#cardStars').innerHTML = `★ ${element.stargazers_count}` 14 | document.querySelector('#cardBlurb').innerHTML = element.description 15 | } 16 | 17 | function getStarRank(count) { 18 | return Math.ceil(Math.min(count, 1000) / 200) 19 | } 20 | 21 | const colors = { 22 | 0: '#eee', 23 | 1: '#dcffcc', 24 | 2: '#c6e48b', 25 | 3: '#7bc96f', 26 | 4: '#239a3b', 27 | 5: '#196127', 28 | 6: '#196127' 29 | } 30 | 31 | function addElementToTable(data, tableDiv) { 32 | let elDiv = document.createElement('div') 33 | let symbol = document.createTextNode(data.symbol) 34 | let bgColor = colors[getStarRank(data.stargazers_count)] 35 | 36 | elDiv.appendChild(symbol) 37 | elDiv.setAttribute('class', 'table-element') 38 | elDiv.setAttribute('style', `grid-column:${data.col}; grid-row:${data.row}; background-color:${bgColor}`) 39 | elDiv.setAttribute('data-number', data.number) 40 | tableDiv.appendChild(elDiv) 41 | elDiv.addEventListener('click', onElementClick) 42 | } 43 | 44 | window.onload = () => { 45 | let tableDiv = document.querySelector('#periodic-table') 46 | 47 | window.tableData.forEach((e) => { 48 | addElementToTable(e, tableDiv) 49 | }) 50 | 51 | showElementDetails(window.tableData[0]) 52 | } 53 | -------------------------------------------------------------------------------- /styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | word-wrap: break-word; 3 | font-family: Arial, Helvetica, sans-serif; 4 | } 5 | 6 | #container { 7 | display: flex; 8 | flex-direction: column; 9 | margin: 0 auto; 10 | } 11 | 12 | #center { 13 | display: flex; 14 | flex-direction: row; 15 | margin-top: 20px; 16 | align-self: center; 17 | } 18 | 19 | #periodic-table { 20 | display: grid; 21 | grid-template-columns: repeat(18, 40px); 22 | grid-template-rows: repeat(10, 40px); 23 | } 24 | 25 | #element-card { 26 | margin-top:2px; 27 | margin-left: 4px; 28 | margin-bottom: 2px; 29 | width: 300px; 30 | height: 400px; 31 | border: 1px solid black; 32 | display: flex; 33 | flex-direction: column; 34 | } 35 | 36 | #cardNumber { 37 | font-size: 24pt; 38 | margin-bottom: 60px; 39 | } 40 | 41 | #cardSymbol { 42 | text-align: center; 43 | vertical-align: bottom; 44 | font-size: 60pt; 45 | } 46 | 47 | #cardLink { 48 | font-size: 14pt; 49 | text-align: center; 50 | } 51 | 52 | #cardStars { 53 | font-size: 18pt; 54 | text-align: center; 55 | } 56 | 57 | #cardBlurb { 58 | margin: 2px; 59 | margin-top: 20px; 60 | font-size: 10pt; 61 | } 62 | 63 | .middle { 64 | text-align: center; 65 | } 66 | 67 | #title { 68 | font-size: 40px; 69 | text-align: center; 70 | } 71 | 72 | #madeby > * { 73 | margin-top: 20px; 74 | text-align: center; 75 | font-size: 8pt; 76 | } 77 | 78 | .table-element { 79 | margin: 1px; 80 | border: 1px solid black; 81 | font-size: 16pt; 82 | text-align: center; 83 | vertical-align: middle; 84 | line-height: 40px; 85 | user-select: none; 86 | cursor: pointer; 87 | } 88 | --------------------------------------------------------------------------------