├── CONTRIBUTING.md ├── LICENSE.md └── README.md /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please ensure your pull request adheres to the following guidelines: 4 | 5 | * Please search previous suggestions before making a new one, as yours may be a duplicate. 6 | * Please make an individual pull request for each suggestion. 7 | * Use the following format: \[RESOURCE\]\(REPO-LINK\) - DESCRIPTION. [LICENCE] \[website\]\(WEB-LINK\) 8 | * Keep descriptions short and simple. 9 | * End all descriptions with a full stop/period. 10 | * Make sure your text editor is set to remove trailing whitespace. 11 | * Order projects alphabetically within each category. 12 | * Check your spelling and grammar. 13 | * New categories, or improvements to the existing categorisation are welcome. 14 | 15 | ## Pull requests workflow 16 | 17 | Please, submit one pull requests with one link per PR. If you want to add several links, you should create PR for each links, unless all of the proposed projects are belong to the same category. Pull request should have meaningful description what this project do, why do you want to add it to the list and any other info which might be useful. This will help maintainers with the review process. 18 | 19 | ## Quality standard 20 | 21 | To stay on the list, projects should follow these quality standards: 22 | 23 | * Generally useful to the community 24 | * Actively maintained (even if that just means acknowledging open issues when they arise) 25 | * Stable 26 | * Documented 27 | * Tests 28 | 29 | Thank you for your suggestions! -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer 6 | exclusive Copyright and Related Rights (defined below) upon the creator and 7 | subsequent owner(s) (each and all, an "owner") of an original work of 8 | authorship and/or a database (each, a "Work"). 9 | 10 | Certain owners wish to permanently relinquish those rights to a Work for the 11 | purpose of contributing to a commons of creative, cultural and scientific 12 | works ("Commons") that the public can reliably and without fear of later 13 | claims of infringement build upon, modify, incorporate in other works, reuse 14 | and redistribute as freely as possible in any form whatsoever and for any 15 | purposes, including without limitation commercial purposes. These owners may 16 | contribute to the Commons to promote the ideal of a free culture and the 17 | further production of creative, cultural and scientific works, or to gain 18 | reputation or greater distribution for their Work in part through the use and 19 | efforts of others. 20 | 21 | For these and/or other purposes and motivations, and without any expectation 22 | of additional consideration or compensation, the person associating CC0 with a 23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright 24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work 25 | and publicly distribute the Work under its terms, with knowledge of his or her 26 | Copyright and Related Rights in the Work and the meaning and intended legal 27 | effect of CC0 on those rights. 28 | 29 | 1. Copyright and Related Rights. A Work made available under CC0 may be 30 | protected by copyright and related or neighboring rights ("Copyright and 31 | Related Rights"). Copyright and Related Rights include, but are not limited 32 | to, the following: 33 | 34 | i. the right to reproduce, adapt, distribute, perform, display, communicate, 35 | and translate a Work; 36 | 37 | ii. moral rights retained by the original author(s) and/or performer(s); 38 | 39 | iii. publicity and privacy rights pertaining to a person's image or likeness 40 | depicted in a Work; 41 | 42 | iv. rights protecting against unfair competition in regards to a Work, 43 | subject to the limitations in paragraph 4(a), below; 44 | 45 | v. rights protecting the extraction, dissemination, use and reuse of data in 46 | a Work; 47 | 48 | vi. database rights (such as those arising under Directive 96/9/EC of the 49 | European Parliament and of the Council of 11 March 1996 on the legal 50 | protection of databases, and under any national implementation thereof, 51 | including any amended or successor version of such directive); and 52 | 53 | vii. other similar, equivalent or corresponding rights throughout the world 54 | based on applicable law or treaty, and any national implementations thereof. 55 | 56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of, 57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and 58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright 59 | and Related Rights and associated claims and causes of action, whether now 60 | known or unknown (including existing as well as future claims and causes of 61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum 62 | duration provided by applicable law or treaty (including future time 63 | extensions), (iii) in any current or future medium and for any number of 64 | copies, and (iv) for any purpose whatsoever, including without limitation 65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes 66 | the Waiver for the benefit of each member of the public at large and to the 67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver 68 | shall not be subject to revocation, rescission, cancellation, termination, or 69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work 70 | by the public as contemplated by Affirmer's express Statement of Purpose. 71 | 72 | 3. Public License Fallback. Should any part of the Waiver for any reason be 73 | judged legally invalid or ineffective under applicable law, then the Waiver 74 | shall be preserved to the maximum extent permitted taking into account 75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver 76 | is so judged Affirmer hereby grants to each affected person a royalty-free, 77 | non transferable, non sublicensable, non exclusive, irrevocable and 78 | unconditional license to exercise Affirmer's Copyright and Related Rights in 79 | the Work (i) in all territories worldwide, (ii) for the maximum duration 80 | provided by applicable law or treaty (including future time extensions), (iii) 81 | in any current or future medium and for any number of copies, and (iv) for any 82 | purpose whatsoever, including without limitation commercial, advertising or 83 | promotional purposes (the "License"). The License shall be deemed effective as 84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the 85 | License for any reason be judged legally invalid or ineffective under 86 | applicable law, such partial invalidity or ineffectiveness shall not 87 | invalidate the remainder of the License, and in such case Affirmer hereby 88 | affirms that he or she will not (i) exercise any of his or her remaining 89 | Copyright and Related Rights in the Work or (ii) assert any associated claims 90 | and causes of action with respect to the Work, in either case contrary to 91 | Affirmer's express Statement of Purpose. 92 | 93 | 4. Limitations and Disclaimers. 94 | 95 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 96 | surrendered, licensed or otherwise affected by this document. 97 | 98 | b. Affirmer offers the Work as-is and makes no representations or warranties 99 | of any kind concerning the Work, express, implied, statutory or otherwise, 100 | including without limitation warranties of title, merchantability, fitness 101 | for a particular purpose, non infringement, or the absence of latent or 102 | other defects, accuracy, or the present or absence of errors, whether or not 103 | discoverable, all to the greatest extent permissible under applicable law. 104 | 105 | c. Affirmer disclaims responsibility for clearing rights of other persons 106 | that may apply to the Work or any use thereof, including without limitation 107 | any person's Copyright and Related Rights in the Work. Further, Affirmer 108 | disclaims responsibility for obtaining any necessary consents, permissions 109 | or other rights required for any use of the Work. 110 | 111 | d. Affirmer understands and acknowledges that Creative Commons is not a 112 | party to this document and has no duty or obligation with respect to this 113 | CC0 or use of the Work. 114 | 115 | For more information, please see 116 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DEPRECATED - Use [Curated Packages](https://github.com/nim-lang/Nim/wiki/Curated-Packages) instead. 2 | 3 | # Awesome Nim [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) 4 | 5 | A curated list of awesome [Nim](https://nim-lang.org) frameworks, libraries and software. Inspired by other [awesome lists](https://github.com/bayandin/awesome-awesomeness). 6 | 7 | ## Contents 8 | 9 |
10 | Table of contents 11 | 12 | - [Async Processing](#async-processing) 13 | - [Build Systems/Package Management](#build-systemspackage-management) 14 | - [Byte Size](#byte-size) 15 | - [CheckSums](#checksums) 16 | - [Database](#database) 17 | - [Date Time](#date-time) 18 | - [Deep Learning](#deep-learning) 19 | - [Design](#design) 20 | - [Embedded](#embedded) 21 | - [Game Development](#game-development) 22 | - [GUI](#gui) 23 | - [IDE](#ide) 24 | - [Implementations](#implementations) 25 | - [Macros](#macros) 26 | - [Package Repositories](#package-repositories) 27 | - [REPL](#repl) 28 | - [Scripting](#scripting) 29 | - [Services](#services) 30 | - [Text Processing](#text-processing) 31 | - [Translation](#translation) 32 | - [Template Engines](#template-engines) 33 | - [Web](#web) 34 | - [Web Frameworks](#web-frameworks) 35 | - [Parsing HTML](#parsing-html) 36 | - [Generating HTML](#generating-html) 37 | - [Development Tools](#development-tools) 38 | - [Binding Generators](#binding-generators) 39 | - [Command-Line Interface Automation](#command-line-interface-automation) 40 | - [Resources](#resources) 41 | - [Books](#books) 42 | - [Blogs](#blogs) 43 | - [Community](#community) 44 | - [Websites](#websites) 45 | - [Contributing](#contributing) 46 | 47 |
48 | 49 | ## Async processing 50 | * [Nim-Asyncdispatch2](https://github.com/status-im/nim-asyncdispatch2) - Hard fork of Asyncdispatch. [MIT] 51 | 52 | [**⇑**](#contents "Go to the top") 53 | 54 | ## Build Systems/Package Management 55 | 56 | * [ChooseNim](https://github.com/dom96/choosenim) - Installing and switching between Nim versions (à la rustup, pyenv). [MIT] 57 | * [Nake](https://github.com/fowlmouth/nake) - Describe your Nim builds as tasks. [MIT] 58 | * [Nawabs](https://github.com/Araq/nawabs) - A build system that throws away version numbering in favor of git hashes. [MIT] 59 | * [Nimble](https://github.com/nim-lang/nimble) - Nimble can be used as a build system. [BSD] 60 | 61 | [**⇑**](#contents "Go to the top") 62 | 63 | ### Byte Size 64 | 65 | * [nim-bytes2human](https://github.com/juancarlospaco/nim-bytes2human#nim-bytes2human) - Calculate all Byte units from an integer, with precision from Bytes to Yottabytes, and return a human friendly string representation. [LGPL] 66 | 67 | [**⇑**](#contents "Go to the top") 68 | 69 | ## Checksums 70 | 71 | * [nim-crc32](https://github.com/juancarlospaco/nim-crc32#nim-crc32) - CRC32 for Nim, 2 proc, just pass the thing you want to do CRC. [MIT] 72 | 73 | [**⇑**](#contents "Go to the top") 74 | 75 | ## Database 76 | 77 | * [ormin](https://github.com/Araq/ormin) - Prepared SQL statement generator , A lightweight ORM. 78 | * [nimongo](https://github.com/SSPkrolik/nimongo) - Pure Nim lang MongoDB driver. http://sspkrolik.github.io/nimongo [MIT] 79 | 80 | [**⇑**](#contents "Go to the top") 81 | 82 | ## Date Time 83 | 84 | * [nim-datetime2human](https://github.com/juancarlospaco/nim-datetime2human#nim-datetime2human) - Calculate date & time with precision from seconds to millenniums. Human friendly date time as string. ISO-8601. [LGPL] 85 | 86 | [**⇑**](#contents "Go to the top") 87 | 88 | ## Deep Learning 89 | 90 | * [Arraymancer](https://github.com/mratsim/Arraymancer) - A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU, OpenCL and embedded devices. [Apache-2.0] 91 | * [NimTorch](https://gitlab.fragcolor.xyz/fragcolor/nimtorch) - PyTorch - Python + Nim. A Nim front-end to PyTorch's native backend, combining Nim's speed, productivity and portability with PyTorch's latest implementations. [MIT] 92 | 93 | [**⇑**](#contents "Go to the top") 94 | 95 | ## Design 96 | 97 | * [nim-random-font-color](https://github.com/juancarlospaco/nim-random-font-color#nim-random-font-color) - Random curated Fonts, pastel Colors and Seamless CSS3 Patterns for your UI/UX design, design for non-designers, poors man design. [LGPL] 98 | 99 | [**⇑**](#contents "Go to the top") 100 | 101 | ## Embedded 102 | 103 | * [msp430f5510](https://gitlab.com/jalexander8717/msp430f5510-nim) - Run Nim on MSP430f5510 micro-controller (6KB of RAM). 104 | * [stm32f3](https://github.com/mwbrown/nim_stm32f3) - Run Nim on STM32F3 micro-controller (16KB of RAM). 105 | * [ardunimo](https://github.com/gokr/ardunimo) - Nim wrapper for Arduino + LinkIt ONE SDK by Mediatek. 106 | * [ardunimesp](https://gitlab.com/NetaLabTek/Arduimesp) - Nim wrapper for Arduino ESP8266 framework + A tool for flash, compile and make the nim project into an Arduino project. 107 | 108 | [**⇑**](#contents "Go to the top") 109 | 110 | ## Game Development 111 | 112 | * [frag](https://github.com/fragworks/frag) - Cross-platform 2D|3D game framework for the Nim programming language. [MIT] 113 | * [zengine](https://github.com/zacharycarter/zengine) - 2D | 3D Game development library. 114 | * [SDL2](https://github.com/Vladar4/sdl2_nim) - Wrapper for SDL 2. [MIT] 115 | * [GLAD](https://github.com/Dav1dde/glad) - Multi-Language Vulkan/GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs. [MIT] 116 | * [nim-glm](https://github.com/stavenko/nim-glm) - Port of the popular glm C++ library to Nim. [MIT] 117 | 118 | [**⇑**](#contents "Go to the top") 119 | 120 | ## GUI 121 | 122 | * [ui](https://github.com/nim-lang/iup) - Wrapper for IUP - Beginnings of what might become Nim's official UI library. 123 | * [nim-kdialog](https://github.com/juancarlospaco/nim-kdialog#nim-kdialog) - Nim [Kdialog](https://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs) Qt5 Wrapper for Desktop. [LGPL] 124 | * [nimAntTweakBar](https://github.com/krux02/nimAntTweakBar) - Wrapper for AntTweakBar. 125 | * [nimx](https://github.com/yglukhov/nimx) - Desktop, Mobile & Web GUI framework in Nim. 126 | * [NiGui](https://github.com/trustable-code/NiGui) - cross-platform, desktop GUI toolkit [MIT] 127 | 128 | [**⇑**](#contents "Go to the top") 129 | 130 | ## IDE 131 | 132 | * [Aporia](https://github.com/nim-lang/Aporia) - Text editor to get started with Nim easily (not maintained anymore). 133 | * [Editor Integration](https://github.com/nim-lang/Nim/wiki/editor-support) - Official list of editor plugins for Nim. 134 | * [Nim Playground](https://play.nim-lang.org/) - Code and run Nim online. 135 | 136 | [**⇑**](#contents "Go to the top") 137 | 138 | ## Implementations 139 | 140 | * [Nim](https://github.com/nim-lang/Nim) - Nim (formerly known as "Nimrod") is a compiled, garbage-collected systems programming language which has an excellent productivity/performance ratio. Nim's design focuses on efficiency, expressiveness, elegance (in the order of priority). [MIT] [website](http://nim-lang.org/) 141 | * [Nlvm](https://github.com/arnetheduck/nlvm) - LLVM backend for Nim. [MIT] 142 | 143 | [**⇑**](#contents "Go to the top") 144 | 145 | ## Macros 146 | 147 | * [cascade](https://github.com/citycide/cascade) - Method & assignment cascades for Nim, inspired by Smalltalk & Dart. [MIT] 148 | * [gara](https://github.com/alehander42/gara) - Macro-based pattern matching library. [MIT] 149 | * [pipe](https://github.com/5paceToast/pipe) - Pipe operator for Nim, as seen in functional languages. [MIT] 150 | * [unpack](https://github.com/technicallyagd/unpack) - Sequence/object unpacking/destructuring. [MIT] 151 | 152 | [**⇑**](#contents "Go to the top") 153 | 154 | ## Package Repositories 155 | 156 | * [Nim packages](https://github.com/nim-lang/packages) - List of packages for Nimble. 157 | * [Nim package directory](https://nimble.directory/) - This service allows you to explore Nim packages known to Nimble. 158 | It tests package installation and generates documentation using "nim doc". 159 | 160 | [**⇑**](#contents "Go to the top") 161 | 162 | ## REPL 163 | 164 | * [INim](https://github.com/AndreiRegiani/INim) - Interactive Nim Shell. [MIT] 165 | 166 | ## Scripting 167 | 168 | * [Nimcr](https://github.com/PMunch/nimcr/blob/master/README.md) - Running Nim code with Shebangs. 169 | 170 | [**⇑**](#contents "Go to the top") 171 | 172 | ## Services 173 | 174 | * [Luntic](https://github.com/xxlabaza/luntic) - Lightweight REST in-memory discovery service. [Apache-2.0] 175 | 176 | [**⇑**](#contents "Go to the top") 177 | 178 | ## Text Processing 179 | 180 | * [regex](https://github.com/nitely/nim-regex) - Pure Nim regex engine with linear time match. [MIT] 181 | * [glob](https://github.com/citycide/glob) - Pure library for matching file paths against Unix style glob patterns. [MIT] 182 | * [nim-datauri](https://github.com/juancarlospaco/nim-datauri#nim-datauri) - Data URI Base64 UTF-8. [LGPL] 183 | 184 | [**⇑**](#contents "Go to the top") 185 | 186 | ### Translation 187 | 188 | * [nim-tinyslation](https://github.com/juancarlospaco/nim-tinyslation#nim-tinyslation) - Text string translation from free online crowdsourced API. [LGPL] 189 | 190 | ### Template Engines 191 | 192 | * [smalte](https://github.com/roquie/smalte) - Is a dead simple and lightweight template engine. Specially designed for configure application before start in Docker. [MIT] 193 | 194 | [**⇑**](#contents "Go to the top") 195 | 196 | ## Web 197 | 198 | ### Web Frameworks 199 | 200 | * [Jester](https://github.com/dom96/jester) - The sinatra-like web framework for Nim. Jester provides a DSL for quickly creating web applications in Nim. [MIT] 201 | * [Karax](https://github.com/pragmagic/karax) - Framework for developing single page applications in Nim. 202 | * [nawak](https://github.com/idlewan/nawak) - Web micro-framework in Nimrod, heavily inspired by jester, flask and the like. [MIT] 203 | * [oauth](https://github.com/CORDEA/oauth) - OAuth library for Nim. [Apache-2.0] 204 | * [rosencrantz](http://andreaferretti.github.io/rosencrantz/) - DSL to write web servers, inspired by [Spray](http://spray.io/) and its successor [Akka HTTP](http://akka.io). 205 | 206 | [**⇑**](#contents "Go to the top") 207 | 208 | ### Parsing HTML 209 | 210 | * [Nimquery](https://github.com/GULPF/nimquery) - Library for 211 | querying HTML using CSS selectors, like Javascript's 212 | `document.querySelector`. [MIT] 213 | 214 | [**⇑**](#contents "Go to the top") 215 | 216 | ### Generating HTML 217 | 218 | * [HastyScribe](https://github.com/h3rald/hastyscribe) - Self-contained markdown compiler generating self-contained HTML documents. https://h3rald.com/hastyscribe 219 | 220 | [**⇑**](#contents "Go to the top") 221 | 222 | # Development Tools 223 | 224 | ## Binding Generators 225 | 226 | * [Nimpy](https://github.com/yglukhov/nimpy) - Gen Python wrappers, call python from nim. [MIT] 227 | * [Pymod](https://github.com/jboy/nim-pymod) - Gen Python C-API wrappers. [MIT] 228 | 229 | [**⇑**](#contents "Go to the top") 230 | 231 | ## Command-Line Interface Automation 232 | 233 | * [cligen](https://github.com/c-blake/cligen) - Infer & generate command-line interace/option/argument parsers [MIT] 234 | * [docopt.nim](https://github.com/docopt/docopt.nim) - Command-line args parser [MIT] 235 | * [commandeer](https://github.com/fenekku/commandeer) - Provides a small command line parsing DSL (domain specific language) [MIT] 236 | 237 | [**⇑**](#contents "Go to the top") 238 | 239 | # Resources 240 | 241 | ## Books 242 | 243 | * [Nim in Action](https://www.manning.com/books/nim-in-action) - Nim's first book 244 | * [Nim Days](https://github.com/xmonader/nimdays) - A project to document my journey with nim with mini applications, libraries documented from A to Z and also to provide new Nim users with some extra in depth information. 245 | 246 | [**⇑**](#contents "Go to the top") 247 | 248 | ## Blogs 249 | 250 | * [Nim Blog](http://nim-lang.org/blog.html) - Official Nim blog. 251 | * [Goran Krampe](http://goran.krampe.se/nim/) - Wrapping C, arduino, performance, links. 252 | * [HookRace](https://hookrace.net/blog/nim/) - Blog with multiple articles on Nim. 253 | * [Rants from the Ballmer Peak](https://gradha.github.io/tags/nim.html) - Posts on Nim and other languages. 254 | * [Yuriy Glukhov's blog](https://yglukhov.github.io/) - Making and shipping a game in Nim 255 | * [Araq's Musings](https://nim-lang.org/araq) - Blog on Nim from the creator himself. 256 | 257 | [**⇑**](#contents "Go to the top") 258 | 259 | ## Community 260 | 261 | * [The Nim forum](http://forum.nim-lang.org/) 262 | * [The Nim IRC channel](http://webchat.freenode.net/?channels=nim) 263 | * [The Nim Gitter channel](https://gitter.im/nim-lang/Nim) 264 | * [The Nim mailing list](http://www.freelists.org/list/nim-dev) 265 | * [The Nim SubReddit](http://reddit.com/r/nim) 266 | * [The Nim Telegram](https://t.me/nim_lang) 267 | * [The Nim Telegram on Spanish](https://t.me/NimArgentina) 268 | 269 | [**⇑**](#contents "Go to the top") 270 | 271 | ## Websites 272 | 273 | * [Nim Basics](https://narimiran.github.io/nim-basics/) - Tutorial for beginners and people just starting with Nim. 274 | * [How I start](https://howistart.org/posts/nim) - Great guide going from 0 to a bf interpreter and then a bf to Nim compiler. 275 | * [Learn Nim in Y minutes](https://learnxinyminutes.com/docs/nim/) - Whirlwind tour. 276 | * [Nim by Example](https://nim-by-example.github.io) - Series of pages and examples for learning the Nim programming language. 277 | * [Nim for Python programmers](https://github.com/nim-lang/Nim/wiki/Nim-for-Python-Programmers) - Guide to Nim for people with experience in Python. 278 | * [Rosettacode:Nim](https://rosettacode.org/wiki/Category:Nim) - 100s of solutions for various tasks using Nim (Implementations available in other languages as well). 279 | 280 | [**⇑**](#contents "Go to the top") 281 | 282 | # Contributing 283 | 284 | Contributions are very welcome! 285 | 286 | Please have a look at [CONTRIBUTING](https://github.com/VPashkov/awesome-nim/blob/master/CONTRIBUTING.md) for guidelines. 287 | 288 | [**⇑**](#contents "Go to the top") 289 | --------------------------------------------------------------------------------