1 2<!doctype html> 3<html lang="en" class="no-js"> 4 <head> 5 6 <meta charset="utf-8"> 7 <meta name="viewport" content="width=device-width,initial-scale=1"> 8 9 <meta name="description" content="Stuff by tiangolo"> 10 11 12 13 <link rel="canonical" href="https://tiangolo.com/projects/"> 14 15 16 <link rel="prev" href="../open-source/"> 17 18 19 <link rel="next" href="../open-source/help/"> 20 21 22 23 24 25 <link rel="icon" href="../img/favicon.png"> 26 <meta name="generator" content="zensical-0.0.51"> 27 28 29 30 <title>Projects - tiangolo's boring personal website</title> 31 32 33 34 35 36 37 <link rel="stylesheet" href="../assets/stylesheets/classic/main.f62f0af6.min.css"> 38 39 40 41 42 <link rel="stylesheet" href="../assets/stylesheets/classic/palette.7dc9a0ad.min.css"> 43 44 45 46 47 48 49 50 51 52 53 54 55 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 56 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,500,500i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> 57 <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> 58 59 60 61 <link rel="stylesheet" href="../css/termynal.css"> 62 63 <link rel="stylesheet" href="../css/custom.css"> 64 65
65<script>__md_scope=new URL("..",location),__md_scope.pathname.endsWith("/")||(__md_scope=new URL(__md_scope.pathname+"/",location)),__md_hash=e=>[...e].reduce(((e,t)=>(e<<5)-e+t.charCodeAt(0)),0),__md_get=(e,t=localStorage,_=__md_scope)=>JSON.parse(t.getItem(_.pathname+"."+e)),__md_set=(e,t,_=localStorage,a=__md_scope)=>{try{_.setItem(a.pathname+"."+e,JSON.stringify(t))}catch(e){}},document.documentElement.setAttribute("data-platform",navigator.platform)</script>
65 66 67 68 69 70 71 </head> 72 73 74 75 76 77 78 79 80 81 <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo"> 82 83 84 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> 85 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> 86 <label class="md-overlay" for="__drawer" aria-label="Navigation"></label> 87 <div data-md-component="skip"> 88 89 90 <a href="#projects" class="md-skip"> 91 Skip to content 92 </a> 93 94 </div> 95 <div data-md-component="announce"> 96 97 </div> 98 99 100 101 102 103 104<header class="md-header md-header--shadow md-header--lifted" data-md-component="header"> 105 <nav class="md-header__inner md-grid" aria-label="Header"> 106 <a href="./.." title="tiangolo's boring personal website" class="md-header__button md-logo" aria-label="tiangolo's boring personal website" data-md-component="logo"> 107 108 <img src="../img/favicon.png" alt="tiangolo's boring personal website"> 109 110 </a> 111 <label class="md-header__button md-icon" for="__drawer" aria-label="Navigation"> 112 113 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> 114 </label> 115 <div class="md-header__title" data-md-component="header-title"> 116 <div class="md-header__ellipsis"> 117 <div class="md-header__topic"> 118 <span class="md-ellipsis"> 119 tiangolo's boring personal website 120 </span> 121 </div> 122 <div class="md-header__topic" data-md-component="header-topic"> 123 <span class="md-ellipsis"> 124 125 Projects 126 127 </span> 128 </div> 129 </div> 130 </div> 131 132 133 <form class="md-header__option" data-md-component="palette"> 134 135 136 137 138 <input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0"> 139 140 <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden> 141 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9 2C5.13 2 2 5.13 2 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.87-3.13-7-7-7M6 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H6zm13-8h-2l-3.2 9h1.9l.7-2h3.2l.7 2h1.9zm-2.15 5.65L18 15l1.15 3.65z"/></svg> 142 </label> 143 144 145 146 147 148 <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="blue-grey" data-md-color-accent="teal" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1"> 149 150 <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden> 151 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a7 7 0 0 0-7 7c0 2.38 1.19 4.47 3 5.74V17a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-2.26c1.81-1.27 3-3.36 3-5.74a7 7 0 0 0-7-7M9 21a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-1H9z"/></svg> 152 </label> 153 154 155 156 157 158 <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="blue-grey" data-md-color-accent="teal" aria-label="Switch to system preference" type="radio" name="__palette" id="__palette_2"> 159 160 <label class="md-header__button md-icon" title="Switch to system preference" for="__palette_0" hidden> 161 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a7 7 0 0 1 7 7c0 2.38-1.19 4.47-3 5.74V17a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-2.26C6.19 13.47 5 11.38 5 9a7 7 0 0 1 7-7M9 21v-1h6v1a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1m3-17a5 5 0 0 0-5 5c0 2.05 1.23 3.81 3 4.58V16h4v-2.42c1.77-.77 3-2.53 3-4.58a5 5 0 0 0-5-5"/></svg> 162 </label> 163 164 165</form> 166 167 168 169
169<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
169 170 171 172 173 174 175 <label class="md-header__button md-icon" for="__search" aria-label="Search"> 176 177 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> 178 </label> 179 <div class="md-search" data-md-component="search" role="dialog" aria-label="Search"> 180 <button type="button" class="md-search__button"> 181 Search 182 </button> 183</div> 184 185 186 <div class="md-header__source"> 187 188 <a href="https://github.com/tiangolo/tiangolo.com" title="Go to repository" class="md-source" data-md-component="source"> 189 <div class="md-source__icon md-icon"> 190 191 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"/></svg> 192 </div> 193 <div class="md-source__repository"> 194 tiangolo/tiangolo.com 195 </div> 196</a> 197 198 </div> 199 </nav> 200 201 202 203<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs"> 204 <div class="md-grid"> 205 <ul class="md-tabs__list"> 206 207 208 209 210 211 212 <li class="md-tabs__item"> 213 <a href="./.." class="md-tabs__link"> 214 215 216 Home 217 218 </a> 219 </li> 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 <li class="md-tabs__item md-tabs__item--active"> 252 <a href="../open-source/" class="md-tabs__link"> 253 254 255 Open Source 256 257 </a> 258 </li> 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 <li class="md-tabs__item"> 282 <a href="../ideas/" class="md-tabs__link"> 283 284 285 Ideas 286 287 </a> 288 </li> 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 <li class="md-tabs__item"> 314 <a href="../guides/" class="md-tabs__link"> 315 316 317 Guides 318 319 </a> 320 </li> 321 322 323 324 325 </ul> 326 </div> 327</nav> 328 329 330</header> 331 332 <div class="md-container" data-md-component="container"> 333 334 335 336 337 <main class="md-main" data-md-component="main"> 338 <div class="md-main__inner md-grid"> 339 340 341 342 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > 343 <div class="md-sidebar__scrollwrap"> 344 <div class="md-sidebar__inner"> 345 346 347 348 349 350 351<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0"> 352 <label class="md-nav__title" for="__drawer"> 353 <a href="./.." title="tiangolo's boring personal website" class="md-nav__button md-logo" aria-label="tiangolo's boring personal website" data-md-component="logo"> 354 355 <img src="../img/favicon.png" alt="tiangolo's boring personal website"> 356 357 </a> 358 tiangolo's boring personal website 359 </label> 360 361 <div class="md-nav__source"> 362 <a href="https://github.com/tiangolo/tiangolo.com" title="Go to repository" class="md-source" data-md-component="source"> 363 <div class="md-source__icon md-icon"> 364 365 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
365<path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"/></svg> 366 </div> 367 <div class="md-source__repository"> 368 tiangolo/tiangolo.com 369 </div> 370</a> 371 </div> 372 373 <ul class="md-nav__list" data-md-scrollfix> 374 375 376 377 378 379 380 381 <li class="md-nav__item"> 382 <a href="./.." class="md-nav__link"> 383 384 385 386 <span class="md-ellipsis"> 387 388 389 Home 390 391 392 </span> 393 394 395 396 </a> 397 </li> 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> 437 438 439 440 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked> 441 442 443 <div class="md-nav__link md-nav__container"> 444 <a href="../open-source/" class="md-nav__link "> 445 446 447 448 <span class="md-ellipsis"> 449 450 451 Open Source 452 453 454 </span> 455 456 457 458 </a> 459 460 461 <label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex=""> 462 <span class="md-nav__icon md-icon"></span> 463 </label> 464 465 </div> 466 467 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true"> 468 <label class="md-nav__title" for="__nav_2"> 469 <span class="md-nav__icon md-icon"></span> 470 471 472 473 474 </label> 475 <ul class="md-nav__list" data-md-scrollfix> 476 477 478 479 480 481 482 483 484 485 486 487 <li class="md-nav__item md-nav__item--active"> 488 489 490 <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> 491 492 493 494 495 496 497 <label class="md-nav__link md-nav__link--active" for="__toc"> 498 499 500 501 <span class="md-ellipsis"> 502 503 504 Projects 505 506 507 </span> 508 509 510 511 <span class="md-nav__icon md-icon"></span> 512 </label> 513 514 <a href="././" class="md-nav__link md-nav__link--active"> 515 516 517 518 <span class="md-ellipsis"> 519 520 521 Projects 522 523 524 </span> 525 526 527 528 </a> 529 530 531 532 533<nav class="md-nav md-nav--secondary" aria-label="On this page"> 534 535 536 537 538 539 540 <label class="md-nav__title" for="__toc"> 541 <span class="md-nav__icon md-icon"></span> 542 On this page 543 </label> 544 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> 545 546 <li class="md-nav__item"> 547 <a href="#fastapi-github" class="md-nav__link"> 548 <span class="md-ellipsis"> 549 <span class="md-typeset"> 550 FastAPI GitHub 551 </span> 552 </span> 553 </a> 554 555</li> 556 557 <li class="md-nav__item"> 558 <a href="#tiangolos-github" class="md-nav__link"> 559 <span class="md-ellipsis"> 560 <span class="md-typeset"> 561 tiangolo's GitHub 562 </span> 563 </span> 564 </a> 565 566</li> 567 568 </ul> 569 570</nav> 571 572 </li> 573 574 575 576 577 578 579 580 581 582 583 <li class="md-nav__item"> 584 <a href="../open-source/help/" class="md-nav__link"> 585 586 587 588 <span class="md-ellipsis"> 589 590 591 Help 592 593 594 </span> 595 596 597 598 </a> 599 </li> 600 601 602 603 604 605 606 607 608 609 610 <li class="md-nav__item"> 611 <a href="../open-source/contributing/" class="md-nav__link"> 612 613 614 615 <span class="md-ellipsis"> 616 617 618 Contributing 619 620 621 </span> 622 623 624 625 </a> 626 </li> 627 628 629 630 631 632 633 634 635 636 637 <li class="md-nav__item"> 638 <a href="../github-fastapi/" class="md-nav__link"> 639 640 641 642 <span class="md-ellipsis"> 643 644 645 GitHub FastAPI 646 647 648 </span> 649 650 651 652 </a> 653 </li> 654 655 656 657 658 659 660 661 662 663 664 <li class="md-nav__item"> 665 <a href="../open-source/management-tasks/" class="md-nav__link"> 666 667 668 669 <span class="md-ellipsis"> 670 671 672 Management Tasks 673 674 675 </span> 676 677 678 679 </a> 680 </li> 681 682 683 684 685 </ul> 686 </nav> 687 688 </li> 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 <li class="md-nav__item md-nav__item--nested"> 715 716 717 718 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" > 719 720 721 <div class="md-nav__link md-nav__container"> 722 <a href="../ideas/" class="md-nav__link "> 723 724 725 726 <span class="md-ellipsis"> 727 728 729 Ideas 730 731 732 </span> 733 734 735 736 </a> 737 738 739 <label class="md-nav__link " for="__nav_3" id="__nav_3_label" tabindex="0">
740 <span class="md-nav__icon md-icon"></span> 741 </label> 742 743 </div> 744 745 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false"> 746 <label class="md-nav__title" for="__nav_3"> 747 <span class="md-nav__icon md-icon"></span> 748 749 750 751 752 </label> 753 <ul class="md-nav__list" data-md-scrollfix> 754 755 756 757 758 759 760 761 762 763 <li class="md-nav__item"> 764 <a href="../ideas/library-agent-skills/" class="md-nav__link"> 765 766 767 768 <span class="md-ellipsis"> 769 770 771 Library Agent Skills 772 773 774 </span> 775 776 777 778 </a> 779 </li> 780 781 782 783 784 </ul> 785 </nav> 786 787 </li> 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 <li class="md-nav__item md-nav__item--nested"> 816 817 818 819 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" > 820 821 822 <div class="md-nav__link md-nav__container"> 823 <a href="../guides/" class="md-nav__link "> 824 825 826 827 <span class="md-ellipsis"> 828 829 830 Guides 831 832 833 </span> 834 835 836 837 </a> 838 839 840 <label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="0"> 841 <span class="md-nav__icon md-icon"></span> 842 </label> 843 844 </div> 845 846 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false"> 847 <label class="md-nav__title" for="__nav_4"> 848 <span class="md-nav__icon md-icon"></span> 849 850 851 852 853 </label> 854 <ul class="md-nav__list" data-md-scrollfix> 855 856 857 858 859 860 861 862 863 864 <li class="md-nav__item"> 865 <a href="../guides/environment-variables/" class="md-nav__link"> 866 867 868 869 <span class="md-ellipsis"> 870 871 872 Environment Variables 873 874 875 </span> 876 877 878 879 </a> 880 </li> 881 882 883 884 885 886 887 888 889 890 891 <li class="md-nav__item"> 892 <a href="../guides/virtual-environments/" class="md-nav__link"> 893 894 895 896 <span class="md-ellipsis"> 897 898 899 Virtual Environments 900 901 902 </span> 903 904 905 906 </a> 907 </li> 908 909 910 911 912 </ul> 913 </nav> 914 915 </li> 916 917 918 919 </ul> 920</nav> 921 </div> 922 </div> 923 </div> 924 925 926 927 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > 928 <div class="md-sidebar__scrollwrap"> 929 930 <div class="md-sidebar__inner"> 931 932 933 934<nav class="md-nav md-nav--secondary" aria-label="On this page"> 935 936 937 938 939 940 941 <label class="md-nav__title" for="__toc"> 942 <span class="md-nav__icon md-icon"></span> 943 On this page 944 </label> 945 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> 946 947 <li class="md-nav__item"> 948 <a href="#fastapi-github" class="md-nav__link"> 949 <span class="md-ellipsis"> 950 <span class="md-typeset"> 951 FastAPI GitHub 952 </span> 953 </span> 954 </a> 955 956</li> 957 958 <li class="md-nav__item"> 959 <a href="#tiangolos-github" class="md-nav__link"> 960 <span class="md-ellipsis"> 961 <span class="md-typeset"> 962 tiangolo's GitHub 963 </span> 964 </span> 965 </a> 966 967</li> 968 969 </ul> 970 971</nav> 972 </div> 973 </div> 974 </div> 975 976 977 978 <div class="md-content" data-md-component="content"> 979 980 981 982 983 984 985 986 987 <nav class="md-path" aria-label="Navigation" > 988 <ol class="md-path__list"> 989 990 991 992 993 <li class="md-path__item"> 994 <a href="./.." class="md-path__link"> 995 996 997 <span class="md-ellipsis"> 998 Home 999 </span> 1000 1001 </a> 1002 </li> 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 <li class="md-path__item"> 1032 <a href="../open-source/" class="md-path__link"> 1033 1034 1035 <span class="md-ellipsis"> 1036 Open Source 1037 </span> 1038 1039 </a> 1040 </li> 1041 1042 1043 1044 1045 </ol> 1046 </nav> 1047 1048 1049 <article class="md-content__inner md-typeset"> 1050 1051 1052 1053 1054 1055 1056<h1 id="projects">Projects<a class="headerlink" href="#projects" title="Permanent link">¶</a></h1> 1057<p>I've created a few open source projects. â¨</p> 1058<h2 id="fastapi-github">FastAPI GitHub<a class="headerlink" href="#fastapi-github" title="Permanent link">¶</a></h2> 1059<p>Projects in the <a href="https://github.com/fastapi">FastAPI GitHub organization</a>.</p> 1060<ul> 1061<li> 1062<p><small>âï¸ 87900</small> <a href="https://github.com/fastapi/fastapi">fastapi</a> - FastAPI framework, high performance, easy to learn, fast to code, ready for production</p> 1063</li> 1064<li> 1065<p><small>âï¸ 35005</small> <a href="https://github.com/fastapi/full-stack-fastapi-template">full-stack-fastapi-template</a> - Full stack, modern web application template. Using FastAPI, React, SQLModel, PostgreSQL, Docker, GitHub Actions, automatic HTTPS and more.</p> 1066</li> 1067<li> 1068<p><small>âï¸ 17582</small> <a href="https://github.com/fastapi/typer">typer</a> - Typer, build great CLIs. Easy to code. Based on Python type hints.</p> 1069</li> 1070<li> 1071<p><small>âï¸ 16470</small> <a href="https://github.com/fastapi/sqlmodel">sqlmodel</a> - SQL databases in Python, designed for simplicity, compatibility, and robustness.</p> 1072</li> 1073<li> 1074<p><small>âï¸ 2027</small> <a href="https://github.com/fastapi/asyncer">asyncer</a> - Asyncer, async and await, focused on developer experience.</p> 1075</li> 1076<li> 1077<p><small>âï¸ 481</small> <a href="https://github.com/fastapi/fastapi-cli">fastapi-cli</a> - Run and manage FastAPI apps from the command line with FastAPI CLI. ð</p> 1078</li> 1079</ul> 1080<h2 id="tiangolos-github">tiangolo's GitHub<a class="headerlink" href="#tiangolos-github" title="Permanent link">¶</a></h2> 1081<p>Projects in my <a href="https://github.com/tiangolo">
1081personal GitHub profile: @tiangolo</a>.</p> 1082<ul> 1083<li> 1084<p><small>âï¸ 3008</small> <a href="https://github.com/tiangolo/uwsgi-nginx-flask-docker">uwsgi-nginx-flask-docker</a> - Docker image with uWSGI and Nginx for Flask applications in Python running in a single container.</p> 1085</li> 1086<li> 1087<p><small>âï¸ 2789</small> <a href="https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker">uvicorn-gunicorn-fastapi-docker</a> - Docker image with Uvicorn managed by Gunicorn for high-performance FastAPI web applications in Python with performance auto-tuning.</p> 1088</li> 1089<li> 1090<p><small>âï¸ 1284</small> <a href="https://github.com/tiangolo/pydantic-sqlalchemy">pydantic-sqlalchemy</a> - Tools to convert SQLAlchemy models to Pydantic models</p> 1091</li> 1092<li> 1093<p><small>âï¸ 1272</small> <a href="https://github.com/tiangolo/nginx-rtmp-docker">nginx-rtmp-docker</a> - Docker image with Nginx using the nginx-rtmp-module module for live multimedia (video) streaming.</p> 1094</li> 1095<li> 1096<p><small>âï¸ 1136</small> <a href="https://github.com/tiangolo/dockerswarm.rocks">dockerswarm.rocks</a> - Docker Swarm mode rocks! Ideas, tools and recipes. Get a production-ready, distributed, HTTPS served, cluster in minutes, not weeks.</p> 1097</li> 1098<li> 1099<p><small>âï¸ 658</small> <a href="https://github.com/tiangolo/uwsgi-nginx-docker">uwsgi-nginx-docker</a> - Docker image with uWSGI and Nginx for applications in Python (as Flask) in a single container.</p> 1100</li> 1101<li> 1102<p><small>âï¸ 641</small> <a href="https://github.com/tiangolo/uvicorn-gunicorn-docker">uvicorn-gunicorn-docker</a> - Docker image with Uvicorn managed by Gunicorn for high-performance web applications in Python with performance auto-tuning.</p> 1103</li> 1104<li> 1105<p><small>âï¸ 482</small> <a href="https://github.com/tiangolo/meinheld-gunicorn-flask-docker">meinheld-gunicorn-flask-docker</a> - Docker image with Meinheld and Gunicorn for Flask applications in Python.</p> 1106</li> 1107<li> 1108<p><small>âï¸ 273</small> <a href="https://github.com/tiangolo/blog-posts">blog-posts</a> - Blog posts and related code by Sebastián RamÃrez (@tiangolo)</p> 1109</li> 1110<li> 1111<p><small>âï¸ 194</small> <a href="https://github.com/tiangolo/uvicorn-gunicorn-starlette-docker">uvicorn-gunicorn-starlette-docker</a> - Docker image with Uvicorn managed by Gunicorn for high-performance Starlette web applications in Python with performance auto-tuning.</p> 1112</li> 1113<li> 1114<p><small>âï¸ 186</small> <a href="https://github.com/tiangolo/latest-changes">latest-changes</a> - A GitHub Action to add latest changes after each PR merged automatically</p> 1115</li> 1116<li> 1117<p><small>âï¸ 166</small> <a href="https://github.com/tiangolo/meinheld-gunicorn-docker">meinheld-gunicorn-docker</a> - Docker image with Meinheld managed by Gunicorn for high-performance WSGI (Flask, Django, etc) web applications in Python with performance auto-tuning.</p> 1118</li> 1119<li> 1120<p><small>âï¸ 64</small> <a href="https://github.com/tiangolo/issue-manager">issue-manager</a> - Automatically close issues that have a label, after a custom delay, if no one replies back.</p> 1121</li> 1122<li> 1123<p><small>âï¸ 42</small> <a href="https://github.com/tiangolo/tiangolo.com">tiangolo.com</a> </p> 1124</li> 1125<li> 1126<p><small>âï¸ 17</small> <a href="https://github.com/tiangolo/github-actions-sandbox">github-actions-sandbox</a> - Not useful for you. It's just a sandbox GitHub repo for me to try out stuff and develop GitHub Actions.
1126</p> 1127</li> 1128<li> 1129<p><small>âï¸ 16</small> <a href="https://github.com/tiangolo/tiangolo">tiangolo</a> </p> 1130</li> 1131<li> 1132<p><small>âï¸ 12</small> <a href="https://github.com/tiangolo/markdown-include-variants">markdown-include-variants</a> - Markdown extension to expand directives to include source example files to also include their variants. Only useful to tiangolo's projets. Don't use it. ð </p> 1133</li> 1134</ul> 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 </article> 1154 </div> 1155 1156 1157
1157<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
1157 1158
1159<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
1159 1160 </div> 1161 1162 <button type="button" class="md-top md-icon" data-md-component="top" hidden> 1163 1164 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> 1165 Back to top 1166</button> 1167 1168 </main> 1169 1170 <footer class="md-footer"> 1171 1172 1173 1174 <nav class="md-footer__inner md-grid" aria-label="Footer" > 1175 1176 1177 <a href="../open-source/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Open Source"> 1178 <div class="md-footer__button md-icon"> 1179 1180 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> 1181 </div> 1182 <div class="md-footer__title"> 1183 <span class="md-footer__direction"> 1184 Previous 1185 </span> 1186 <div class="md-ellipsis"> 1187 Open Source 1188 </div> 1189 </div> 1190 </a> 1191 1192 1193 1194 <a href="../open-source/help/" class="md-footer__link md-footer__link--next" aria-label="Next: Help"> 1195 <div class="md-footer__title"> 1196 <span class="md-footer__direction"> 1197 Next 1198 </span> 1199 <div class="md-ellipsis"> 1200 Help 1201 </div> 1202 </div> 1203 <div class="md-footer__button md-icon"> 1204 1205 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg> 1206 </div> 1207 </a> 1208 1209 </nav> 1210 1211 1212 <div class="md-footer-meta md-typeset"> 1213 <div class="md-footer-meta__inner md-grid"> 1214 <div class="md-copyright"> 1215 1216 1217 Made with 1218 <a href="https://zensical.org/" target="_blank" rel="noopener"> 1219 Zensical 1220 </a> 1221 1222</div> 1223 1224 1225<div class="md-social"> 1226 1227 1228 1229 1230 1231 1232 1233 1234 <a href="https://github.com/tiangolo" target="_blank" rel="noopener" title="github.com" class="md-social__link"> 1235 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"/></svg> 1236 </a> 1237 1238 1239 1240 1241 1242 1243 1244 1245 <a href="https://x.com/tiangolo" target="_blank" rel="noopener" title="x.com" class="md-social__link"> 1246 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc.--><path fill="currentColor" d="M357.2 48h70.6L273.6 224.2 455 464H313L201.7 318.6 74.5 464H3.8l164.9-188.5L-5.2 48h145.6l100.5 132.9zm-24.8 373.8h39.1L119.1 88h-42z"/></svg> 1247 </a> 1248 1249 1250 1251 1252 1253 1254 1255 1256 <a href="https://bsky.app/profile/tiangolo.com" target="_blank" rel="noopener" title="bsky.app" class="md-social__link"> 1257 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc.-->
1257<path fill="currentColor" d="M407.8 294.7c-3.3-.4-6.7-.8-10-1.3 3.4.4 6.7.9 10 1.3M288 227.1c-26.1-50.7-97.1-145.2-163.1-191.8C61.6-9.4 37.5-1.7 21.6 5.5 3.3 13.8 0 41.9 0 58.4S9.1 194 15 213.9c19.5 65.7 89.1 87.9 153.2 80.7 3.3-.5 6.6-.9 10-1.4-3.3.5-6.6 1-10 1.4-93.9 14-177.3 48.2-67.9 169.9C220.6 589.1 265.1 437.8 288 361.1c22.9 76.7 49.2 222.5 185.6 103.4 102.4-103.4 28.1-156-65.8-169.9-3.3-.4-6.7-.8-10-1.3 3.4.4 6.7.9 10 1.3 64.1 7.1 133.6-15.1 153.2-80.7C566.9 194 576 75 576 58.4s-3.3-44.7-21.6-52.9c-15.8-7.1-40-14.9-103.2 29.8C385.1 81.9 314.1 176.4 288 227.1"/></svg> 1258 </a> 1259 1260 1261 1262 1263 1264 1265 1266 1267 <a href="https://www.linkedin.com/in/tiangolo" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> 1268 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc.--><path fill="currentColor" d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> 1269 </a> 1270 1271 1272 1273 1274 1275 <a href="/cdn-cgi/l/email-protection#0b7f626a656c6467644b6c666a626725686466" target="_blank" rel="noopener" title="" class="md-social__link"> 1276 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc.--><path fill="currentColor" d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4l208 156a48 48 0 0 0 57.6 0l208-156c12.1-9.1 19.2-23.3 19.2-38.4 0-26.5-21.5-48-48-48zM0 196v188c0 35.3 28.7 64 64 64h384c35.3 0 64-28.7 64-64V196L313.6 344.8c-34.1 25.6-81.1 25.6-115.2 0z"/></svg> 1277 </a> 1278 1279</div> 1280 1281 </div> 1282 </div> 1283</footer> 1284 1285 </div> 1286 <div class="md-dialog" data-md-component="dialog"> 1287 <div class="md-dialog__inner md-typeset"></div> 1288 </div> 1289 1290 <div class="md-progress" data-md-component="progress" role="progressbar"></div>
vendor: 144 bytes, lines 1290-1296
1290 1291 1292 1293 1294 1295 1296 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1296<script id="__config" type="application/json">{"annotate":null,"base":"..","features":["content.code.annotate","content.code.copy","content.footnote.tooltips","navigation.tabs","content.tabs.link","navigation.tabs.sticky","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.instant.progress","navigation.path","navigation.top","navigation.tracking","search.highlight","search.share","search.suggest","toc.follow"],"search":"../assets/javascripts/workers/search.b6b7e04f.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":null}</script>
1296 1297 1298 1299
1299<script src="../assets/javascripts/bundle.d7f30b55.min.js"></script>
1299 1300 1301
1301<script src="../js/termynal.js"></script>
1301 1302 1303
1303<script src="../js/custom.js"></script>
1303 1304 1305 1306 <!-- Cloudflare Pages Analytics -->
vendor: 99 bytes, line 1306
1306<script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "
1306f07bf92e34044a6a8363f73f2db938cb
vendor: 13 bytes, line 1306
1306"}'></script>
1306<!-- Cloudflare Pages Analytics --></body> 1307</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.