💯 A collection of Gleam libraries, projects, and resources

Update list, sync from packages.gleam.run

Changed files
+1493 -160
.github
workflows
packages
src
test
+23
.github/workflows/test.yml
··· 1 + name: test 2 + 3 + on: 4 + push: 5 + branches: 6 + - master 7 + - main 8 + pull_request: 9 + 10 + jobs: 11 + test: 12 + runs-on: ubuntu-latest 13 + steps: 14 + - uses: actions/checkout@v3 15 + - uses: erlef/setup-beam@v1 16 + with: 17 + otp-version: "26.0.2" 18 + gleam-version: "0.34.1" 19 + rebar3-version: "3" 20 + # elixir-version: "1.15.4" 21 + - run: gleam deps download 22 + - run: gleam test 23 + - run: gleam format --check src test
+5
.gitignore
··· 1 + *.beam 2 + *.ez 3 + /build 4 + erl_crash.dump 5 + /database.sqlite*
+155 -157
README.md
··· 2 2 3 3 For a full list of packages check out [**the Gleam package index**](https://packages.gleam.run/). 4 4 5 - Have a Gleam project to share with the world? Make a pull request and add it 6 - to the list. 5 + Have a Gleam project to share with the world? Run `gleam run`, assign a 6 + category for it in `packages/NAME.toml`, and run `gleam run` again. 7 7 8 8 Looking for something to build? Check out [the suggestions list][suggestions]. 9 9 10 10 [suggestions]: https://github.com/gleam-lang/awesome-gleam/issues/34 11 11 12 - - [Libraries](#libraries) 13 - - [Ansi](#ansi) 14 - - [CLI](#cli) 15 - - [Cryptography](#cryptography) 12 + - [Packages](#packages) 13 + - [API Clients](#api-clients) 14 + - [Benchmarking](#benchmarking) 15 + - [Build Tooling](#build-tooling) 16 + - [Command Line](#command-line) 17 + - [Configuration](#configuration) 18 + - [Data Structures](#data-structures) 19 + - [Database](#database) 16 20 - [Databases](#databases) 17 - - [Data structures](#data-structures) 18 - - [Date and Time](#date-and-time) 19 21 - [Email](#email) 20 - - [Erlang/OTP](#erlangotp) 21 - - [Error handling](#error-handling) 22 - - [Files](#files) 23 - - [Generators](#generators) 22 + - [Erlang and OTP](#erlang-and-otp) 23 + - [Error Handling](#error-handling) 24 + - [File Formats](#file-formats) 25 + - [File System](#file-system) 26 + - [Frontend](#frontend) 27 + - [Graphics](#graphics) 28 + - [HTML](#html) 24 29 - [HTTP](#http) 25 - - [HTTP clients](#http-clients) 26 - - [HTTP servers](#http-servers) 30 + - [HTTP Clients](#http-clients) 31 + - [HTTP Servers](#http-servers) 32 + - [Hashing and Encryption](#hashing-and-encryption) 27 33 - [JSON](#json) 28 - - [Language Developement](#language-developement) 29 - - [Logging](#logging) 30 - - [Machine learning](#machine-learning) 31 - - [Mimetypes](#mimetypes) 34 + - [JavaScript](#javascript) 35 + - [Logging and Monitoring](#logging-and-monitoring) 36 + - [Networking](#networking) 37 + - [Numbers](#numbers) 32 38 - [Parsing](#parsing) 33 - - [Protocols](#protocols) 34 - - [Science](#science) 35 - - [Templating](#templating) 39 + - [Push Notifications](#push-notifications) 40 + - [Randomness](#randomness) 36 41 - [Testing](#testing) 37 - - [Text and numbers](#text-and-numbers) 38 - - [Validation](#validation) 39 - - [Websockets](#websockets) 42 + - [Text](#text) 43 + - [Time](#time) 44 + - [Web frameworks](#web-frameworks) 40 45 - [Templates](#templates) 41 46 - [Projects](#projects) 42 47 - [Compilers](#compilers) 43 - - [Programming Challenges](#programming-challenges) 44 48 - [Web applications](#web-applications) 45 49 - [Tools](#tools) 46 50 - [Editor support](#editor-support) ··· 49 53 - [Courses](#courses) 50 54 - [Social Media](#social-media) 51 55 52 - # Libraries 56 + # Packages 53 57 54 - ## Ansi 58 + ## API Clients 55 59 56 - - [dahlia-lib/dahlia](https://github.com/dahlia-lib/dahlia-gleam) - a simple text formatting package, inspired by the game Minecraft. 57 - - [Willyboar/colours](https://github.com/Willyboar/colours) - a Library for adding colours in Terminal 60 + - [aws4_request](https://github.com/lpil/aws4_request) [(docs)](https://hexdocs.pm/aws4_request/) - An AWS Signature Version 4 client implementation, used for S3 auth, etc 61 + - [glatus](https://github.com/lpil/glatus) [(docs)](https://hexdocs.pm/glatus/) - Gleam bindings to the API of the Gatus health check tool 62 + - [gleam_hexpm](https://github.com/gleam-lang/hexpm) [(docs)](https://hexdocs.pm/gleam_hexpm/) - Gleam dynamic decoders for the API of Hex, the package manager for the BEAM ecosystem. 63 + - [glevatar](https://github.com/bunopnu/glevatar) [(docs)](https://hexdocs.pm/glevatar/) - Easily create Gravatar URLs in Gleam 58 64 59 - ## CLI 65 + ## Benchmarking 60 66 61 - - [tynanbe/shellout](https://github.com/tynanbe/shellout) - A Gleam library for cross-platform shell operations. 62 - - [tanklesxl/glint](https://github.com/tanklesxl/glint) - Gleam command line argument parsing with basic flag support. 67 + - [gleamy_bench](https://github.com/schurhammer/gleamy_bench) [(docs)](https://hexdocs.pm/gleamy_bench/) - A library for benchmarking gleam code. 68 + - [glychee](https://github.com/inoas/glychee) [(docs)](https://hexdocs.pm/glychee/) - Glychee: Easy access to Elixir's Benchee from Gleam! 63 69 64 - ## Cryptography 65 - 66 - - [gleam-experiments/crypto](https://github.com/gleam-experiments/crypto) - A Gleam library for the BEAM cryptography functions. 70 + ## Build Tooling 67 71 68 - ## Databases 69 - 70 - - [massivefermion/mungo](https://github.com/massivefermion/mungo) - A MongoDB driver for Gleam. 71 - - [gleam-experiments/pgo](https://github.com/gleam-experiments/pgo) - Use PostgreSQL databases with PGO. 72 - - [lpil/sqlight](https://github.com/lpil/sqlight) - Use SQLite databases with esqlite. 73 - - [massivefermion/radish](https://github.com/massivefermion/radish) - A Redis client for Gleam. 72 + - [esgleam](https://github.com/Enderchief/esgleam) [(docs)](https://hexdocs.pm/esgleam/) - esbuild for Gleam 73 + - [gleescript](https://github.com/lpil/gleescript) [(docs)](https://hexdocs.pm/gleescript/) - Bundle your Gleam-on-Erlang project into an escript, a single executable file! 74 74 75 - ## Data structures 75 + ## Command Line 76 76 77 - Libraries that define generic data structures for use in Gleam projects. 77 + - [argv](https://github.com/lpil/argv) [(docs)](https://hexdocs.pm/argv/) - A cross platform library for getting the command line arguments 78 + - [gleam_community_ansi](https://github.com/gleam-community/ansi) [(docs)](https://hexdocs.pm/gleam_community_ansi/) - ANSI colours, formatting, and control codes 79 + - [glint](https://github.com/TanklesXL/glint) [(docs)](https://hexdocs.pm/glint/) - Gleam command line argument parsing with basic flag support. 80 + - [rad](https://github.com/tynanbe/rad) [(docs)](https://hexdocs.pm/rad/) - A task runner for Gleam projects 81 + - [shellout](https://github.com/tynanbe/shellout) [(docs)](https://hexdocs.pm/shellout/) - A Gleam library for cross-platform shell operations 82 + - [spinner](https://github.com/lpil/spinner) [(docs)](https://hexdocs.pm/spinner/) - Animated progress spinners for your console 78 83 79 - - [gleam-lang/bitwise](https://github.com/gleam-lang/bitwise) - Bitwise operations on integers. 80 - - [gleam-lang/stdlib](https://github.com/gleam-lang/stdlib) - Core data structures and types for Gleam. 81 - - [massivefermion/ranger](https://github.com/massivefermion/ranger) - Create ranges over any type! 82 - - [massivefermion/puddle](https://github.com/massivefermion/puddle) - A resource pool manager for Gleam. 84 + ## Configuration 83 85 84 - ## Date and Time 86 + - [envoy](https://github.com/lpil/envoy) [(docs)](https://hexdocs.pm/envoy/) - A zero dependency cross platform Gleam package for reading environment variables 87 + - [gleam_dotenv](https://github.com/Grubba27/gleam_dotenv) [(docs)](https://hexdocs.pm/gleam_dotenv/) - dotenv for Gleam 88 + - [glenvy](https://github.com/maxdeviant/glenvy) [(docs)](https://hexdocs.pm/glenvy/) - A pleasant way to interact with your environment. 85 89 86 - Libraries for handling date and time 90 + ## Data Structures 87 91 88 - - [massivefermion/birl](https://github.com/massivefermion/birl) - Date and Time handling for Gleam 92 + - [gleam_stdlib](https://github.com/gleam-lang/stdlib) [(docs)](https://hexdocs.pm/gleam_stdlib/) - A standard library for the Gleam programming language 93 + - [glearray](https://github.com/fschwalbe/glearray) [(docs)](https://hexdocs.pm/glearray/) - Immutable arrays for Gleam 94 + - [non_empty_list](https://github.com/giacomocavalieri/non_empty_list) [(docs)](https://hexdocs.pm/non_empty_list/) - Non-empty lists in Gleam 95 + - [tote](https://github.com/giacomocavalieri/tote) [(docs)](https://hexdocs.pm/tote/) - Bags (or multisets) in Gleam 96 + - [trie_again](https://github.com/giacomocavalieri/trie_again) [(docs)](https://hexdocs.pm/trie_again/) - Tries in Gleam 89 97 90 - ## Email 98 + ## Database 91 99 92 - Libraries for sending email. 100 + - [mungo](https://github.com/massivefermion/mungo) [(docs)](https://hexdocs.pm/mungo/) - A MongoDB driver for Gleam (formerly gleam_mongo) 93 101 94 - - [lpil/gleam_sendgrid](https://github.com/lpil/gleam_sendgrid) - A client for the SendGrid transactional email API. 95 - - [lpil/zeptomail](https://github.com/lpil/zeptomail) - A client for the ZeptoMail transactional email API. 96 - - [aosasona/plunk.gleam](https://github.com/aosasona/plunk.gleam) - A client to interact with [Plunk](https://www.useplunk.com/) email API. 102 + ## Databases 97 103 98 - ## Erlang/OTP 104 + - [gleam_pgo](https://github.com/gleam-experiments/pgo) [(docs)](https://hexdocs.pm/gleam_pgo/) - Gleam bindings to the PGO PostgreSQL client 105 + - [radish](https://github.com/massivefermion/radish) [(docs)](https://hexdocs.pm/radish/) - A Redis client for Gleam 106 + - [sqlight](https://github.com/lpil/sqlight) [(docs)](https://hexdocs.pm/sqlight/) - Use SQLite from Gleam! 99 107 100 - Libraries for working with Erlang and OTP. 108 + ## Email 101 109 102 - - [gleam-lang/gleam_erlang](https://github.com/gleam-lang/erlang) - Bindings to common Erlang/OTP types and functions. 103 - - [gleam-lang/otp](https://github.com/gleam-lang/otp) - Write fault tolerant multicore programs with Erlang/OTP. 104 - - [midas-framework/beam](https://github.com/midas-framework/beam) - Interoperating with specific functionality in the Erlang runtime (BEAM). 105 - - [gleam-experiments/otp_code](https://github.com/gleam-experiments/otp_code) - Work with Erlang code at runtime. 110 + - [gleam_sendgrid](https://github.com/lpil/gleam_sendgrid) [(docs)](https://hexdocs.pm/gleam_sendgrid/) - Send emails from Gleam with SendGrid 111 + - [zeptomail](https://github.com/lpil/zeptomail) [(docs)](https://hexdocs.pm/zeptomail/) - A wrapper for ZeptoMail's transactional email API 106 112 107 - ## Error handling 113 + ## Erlang and OTP 108 114 109 - Libraries for working with errors and computations that can fail. 115 + - [gen_core_erlang](https://codeberg.org/kero/gleam_codegen) [(docs)](https://hexdocs.pm/gen_core_erlang/) - Generate Core Erlang from Gleam (wraps the Erlang cerl compiler module) 116 + - [gleam_crypto](https://github.com/gleam-lang/crypto) [(docs)](https://hexdocs.pm/gleam_crypto/) - Gleam bindings to the BEAM cryptography functions 117 + - [gleam_erlang](https://github.com/gleam-lang/erlang) [(docs)](https://hexdocs.pm/gleam_erlang/) - A Gleam library for working with Erlang 118 + - [gleam_otp](https://github.com/gleam-lang/otp) [(docs)](https://hexdocs.pm/gleam_otp/) - Fault tolerant multicore Gleam programs with OTP 119 + - [gts](https://github.com/lunarmagpie/gts) [(docs)](https://hexdocs.pm/gts/) - Opinionated bindings to erlang's ets tables. 120 + - [process_waiter](https://github.com/lpil/process-waiter) [(docs)](https://hexdocs.pm/process_waiter/) - Wait for Erlang processes to exit 121 + - [puddle](https://github.com/massivefermion/puddle) [(docs)](https://hexdocs.pm/puddle/) - A resource pool manager for gleam 110 122 111 - - [gleam-experiments/snag](https://github.com/gleam-experiments/snag) - A boilerplate-free ad-hoc error type. 123 + ## Error Handling 112 124 113 - ## Files 125 + - [exception](https://github.com/lpil/exception) [(docs)](https://hexdocs.pm/exception/) - A tiny package for dealing with exceptions 126 + - [snag](https://github.com/gleam-experiments/snag) [(docs)](https://hexdocs.pm/snag/) - A boilerplate-free ad-hoc error type 114 127 115 - - [bcpeinhardt/simplifile](https://github.com/bcpeinhardt/simplifile) - Simple file operations for Gleam that work on all targets (Erlang/Node/Deno) 116 - - [lpil/filepath](https://github.com/lpil/filepath) - Work with file paths in Gleam! 117 - - [cdaringe/fswalk](https://github.com/cdaringe/fswalk) - Efficiently walk a directory recursively 128 + ## File Formats 118 129 119 - ## Generators 130 + - [gsv](https://github.com/bcpeinhardt/gsv) [(docs)](https://hexdocs.pm/gsv/) - A simple csv parser and generator written in gleam 131 + - [tom](https://github.com/lpil/tom) [(docs)](https://hexdocs.pm/tom/) - A pure Gleam TOML parser! 120 132 121 - - [mrdimosthenis/minigen](https://github.com/mrdimosthenis/minigen) - A library for generating random data in the Erlang ecosystem, written in Gleam. 122 - - [massivefermion/blah](https://github.com/massivefermion/blah) - fake data generation for gleam. 133 + ## File System 123 134 124 - ## HTTP 135 + - [filepath](https://github.com/lpil/filepath) [(docs)](https://hexdocs.pm/filepath/) - Work with file paths in Gleam! 136 + - [simplifile](https://github.com/bcpeinhardt/simplifile) [(docs)](https://hexdocs.pm/simplifile/) - Basic file operations that work on all targets 125 137 126 - - [gleam-lang/http](https://github.com/gleam-lang/http) - Types and functions for HTTP clients and servers! 127 - - [MystPi/conversation](https://github.com/MystPi/conversation) - Bindings for the web standard JavaScript Request and Response APIs 138 + ## Frontend 128 139 129 - ## HTTP clients 140 + - [glailglind](https://github.com/okkdev/glailglind) [(docs)](https://hexdocs.pm/glailglind/) - Gleam modules and functions for installing and invoking TailwindCSS 130 141 131 - Libraries for making HTTP requests. 142 + ## Graphics 132 143 133 - - [gleam-lang/hackney](https://github.com/gleam-lang/hackney) - Bindings to Hackney, the simple Erlang HTTP client. 134 - - [gleam-lang/httpc](https://github.com/gleam-lang/httpc) - Bindings to Erlang's built in HTTP client, httpc. 135 - - [cobbinma/gleamql](https://github.com/cobbinma/gleamql) - A simple GraphQL client. 136 - - [Nicd/finch_gleam](https://gitlab.com/Nicd/finch_gleam) - Bindings to the Finch Elixir HTTP client. 144 + - [gleam_community_colour](https://github.com/gleam-community/colour) [(docs)](https://hexdocs.pm/gleam_community_colour/) - Colour types, conversions, and other utilities 137 145 138 - ## HTTP servers 146 + ## HTML 139 147 140 - Libraries for serving traffic over HTTP. 148 + - [glentities](https://gitlab.com/Nicd/glentities) [(docs)](https://hexdocs.pm/glentities/) - HTML entity encoder/decoder for Gleam 149 + - [htmb](https://github.com/lpil/htmb) [(docs)](https://hexdocs.pm/htmb/) - A tiny HTML builder for Gleam 150 + - [htmgrrrl](https://github.com/lpil/htmgrrrl) [(docs)](https://hexdocs.pm/htmgrrrl/) - Gleam bindings to htmerl, the fast and memory efficient Erlang HTML SAX parser. 141 151 142 - - [gleam-lang/cowboy](https://github.com/gleam-lang/cowboy) - A Gleam HTTP service adapter for the Cowboy web server. 143 - - [gleam-lang/elli](https://github.com/gleam-lang/elli) - A Gleam HTTP service adapter for the Elli web server. 144 - - [gleam-lang/plug](https://github.com/gleam-lang/plug) - A Gleam HTTP service adapter for the Plug web application interface. 145 - - [megapctr/gleam_cors](https://github.com/megapctr/gleam_cors) - A CORS middleware for Gleam. 146 - - [rawhat/mist](https://github.com/rawhat/mist) - A pure Gleam HTTP server with WebSocket support 152 + ## HTTP 147 153 148 - ## JSON 154 + - [gleam_http](https://github.com/gleam-lang/http) [(docs)](https://hexdocs.pm/gleam_http/) - Types and functions for Gleam HTTP clients and servers 155 + - [marceau](https://github.com/lpil/marceau) [(docs)](https://hexdocs.pm/marceau/) - A MIME types library for Gleam 149 156 150 - - [gleam-lang/json](https://github.com/gleam-lang/json) - Work with JSON in Gleam. 157 + ## HTTP Clients 151 158 152 - ## Language Developement 159 + - [gleam_fetch](https://github.com/gleam-lang/fetch) [(docs)](https://hexdocs.pm/gleam_fetch/) - Make HTTP requests in Gleam JavaScript with Fetch 160 + - [gleam_hackney](https://github.com/gleam-lang/hackney) [(docs)](https://hexdocs.pm/gleam_hackney/) - Gleam bindings to the Hackney HTTP client 161 + - [gleam_httpc](https://github.com/gleam-lang/httpc) [(docs)](https://hexdocs.pm/gleam_httpc/) - Gleam bindings to Erlang's built in HTTP client, httpc 153 162 154 - - [lpil/glance](https://github.com/lpil/glance) - A Gleam source code parser, in Gleam! 155 - - [DanielleMaywood/glexer](https://github.com/DanielleMaywood/glexer) - Gleam lexer implemented in Gleam! 156 - - [Willyboar/glove](https://github.com/Willyboar/glove) - A library to generate QBE IR code 163 + ## HTTP Servers 157 164 165 + - [cgi](https://github.com/lpil/cgi) [(docs)](https://hexdocs.pm/cgi/) - Common Gateway Interface (CGI) in Gleam 166 + - [gleam_elli](https://github.com/gleam-lang/elli) [(docs)](https://hexdocs.pm/gleam_elli/) - Run Gleam HTTP services with the Elli web server 167 + - [mist](https://github.com/rawhat/mist) [(docs)](https://hexdocs.pm/mist/) - a misty Gleam web server 158 168 159 - ## Logging 169 + ## Hashing and Encryption 160 170 161 - - [defgenx/glog](https://github.com/defgenx/glog) - A Gleam implementation of an Erlang logger inspired by the Logrus API. 162 - - [johnbjrk/glimt](https://github.com/JohnBjrk/glimt) - A Gleam logging library with support for custom dispatchers/serializers. 171 + - [beecrypt](https://github.com/lpil/beecrypt) [(docs)](https://hexdocs.pm/beecrypt/) - Buzzing Gleam bindings to the Erlang bcrypt hashing library 163 172 164 - ## Machine learning 173 + ## JSON 165 174 166 - - [mrdimosthenis/gleam_synapses](https://github.com/mrdimosthenis/gleam_synapses) - A lightweight library for neural networks. 167 - - [mrdimosthenis/emel](https://github.com/mrdimosthenis/emel) - A simple and functional machine learning library for the Erlang ecosystem 175 + - [gleam_json](https://github.com/gleam-lang/json) [(docs)](https://hexdocs.pm/gleam_json/) - Work with JSON in Gleam 168 176 169 - ## Mimetypes 177 + ## JavaScript 170 178 171 - - [davecaos/benetnasch](https://github.com/davecaos/benetnasch) - Benetnasch a mimetypes library for Gleam. 179 + - [conversation](https://github.com/MystPi/conversation) [(docs)](https://hexdocs.pm/conversation/) - Gleam bindings for the standard JavaScript Request and Response APIs 180 + - [gleam_javascript](https://github.com/gleam-lang/javascript) [(docs)](https://hexdocs.pm/gleam_javascript/) - Work with JavaScript types and values in Gleam 181 + - [plinth](https://github.com/Crowdhailer/plinth) [(docs)](https://hexdocs.pm/plinth/) - Bindings to Node.js and browser platform APIs 172 182 173 - ## Parsing 183 + ## Logging and Monitoring 174 184 175 - Libraries for parsing different kinds of data. 185 + - [glimt](https://github.com/JohnBjrk/glimt) [(docs)](https://hexdocs.pm/glimt/) - A Gleam library for logging 186 + - [glog](https://github.com/defgenx/glog) [(docs)](https://hexdocs.pm/glog/) - A Gleam implementation of Erlang logger 176 187 177 - - [sporto/gleam_codec](https://github.com/sporto/gleam_codec) - Build codecs (encode and decode) to transform data structures between Gleam and Elixir. 178 - - [hayleigh-dot-dev/gleam-nibble](https://github.com/hayleigh-dot-dev/gleam-nibble) - A string parsing library heavily inspired by [elm/parser](https://github.com/elm/parser). 179 - - [sporto/gleam_qs](https://github.com/sporto/gleam_qs) - Parse and work with query strings. 188 + ## Networking 180 189 181 - ## Protocols 190 + - [glisten](https://github.com/rawhat/glisten) [(docs)](https://hexdocs.pm/glisten/) - a shiny Gleam TCP/SSL server 191 + - [mug](https://github.com/lpil/mug) [(docs)](https://hexdocs.pm/mug/) - A TCP client for Gleam! 182 192 183 - - [bwireman/gleam_pb](https://github.com/bwireman/gleam_pb) - Protobuf support for Gleam. 184 - - [massivefermion/bison](https://github.com/massivefermion/bison) - BSON encoder and decoder for Gleam. 193 + ## Numbers 185 194 186 - ## Science 195 + - [gleam_community_maths](https://github.com/gleam-community/maths) [(docs)](https://hexdocs.pm/gleam_community_maths/) - A basic maths library 187 196 188 - - [nicklasxyz/gleam_stats](https://github.com/NicklasXYZ/gleam_stats) - A Gleam mathematics and statistics library that is JavaScript and Erlang compatible. 189 - - [tynanbe/argamak](https://github.com/tynanbe/argamak) - A tensor library for Gleam's Erlang and JavaScript targets. 197 + ## Parsing 190 198 191 - ## TCP/SSL 199 + - [glance](https://github.com/lpil/glance) [(docs)](https://hexdocs.pm/glance/) - A Gleam source code parser, in Gleam! 200 + - [glance_printer](https://github.com/bcpeinhardt/glance_printer) [(docs)](https://hexdocs.pm/glance_printer/) - A pretty_printer for the glance AST 201 + - [glexer](https://github.com/DanielleMaywood/glexer) [(docs)](https://hexdocs.pm/glexer/) - A lexer for Gleam source code 202 + - [jot](https://github.com/lpil/jot) [(docs)](https://hexdocs.pm/jot/) - A parser for Djot, a markdown-like language 203 + - [nibble](https://github.com/hayleigh-dot-dev/gleam-nibble) [(docs)](https://hexdocs.pm/nibble/) - A string parsing library heavily inspired by elm/parser. 192 204 193 - - [rawhat/glisten](https://github.com/rawhat/glisten) - A pure Gleam TCP/SSL server library 205 + ## Push Notifications 194 206 195 - ## Templating 207 + - [wimp](https://github.com/lpil/wimp-pushover) [(docs)](https://hexdocs.pm/wimp/) - A Gleam client for the Pushover push notification API 196 208 197 - Libraries for rendering strings from templates. 209 + ## Randomness 198 210 199 - - [gleam-experiments/bbmustache](https://github.com/gleam-experiments/bbmustache) - Gleam bindings to the bbmustache templating library. 200 - - [michaeljones/matcha](https://github.com/michaeljones/matcha) - Templating system where the templates are transpiled to Gleam modules. 201 - - [hayleigh-dot-dev/gleam-lustre](https://github.com/hayleigh-dot-dev/gleam-lustre) - A framework for building create web apps – powered by Gleam and React. 202 - - [Nicd/glemplate](https://gitlab.com/Nicd/glemplate) - A simplistic Gleam template engine. 211 + - [blah](https://github.com/massivefermion/blah) [(docs)](https://hexdocs.pm/blah/) - fake data generation for gleam 212 + - [minigen](https://github.com/mrdimosthenis/minigen) [(docs)](https://hexdocs.pm/minigen/) - Pure random data generation, appropriate for realistic simulations 213 + - [prng](https://github.com/giacomocavalieri/prng) [(docs)](https://hexdocs.pm/prng/) - A Pure Random Number Generator 203 214 204 215 ## Testing 205 216 206 - Projects for testing Gleam code. 217 + - [exercism_test_runner](https://github.com/exercism/gleam-test-runner) [(docs)](https://hexdocs.pm/exercism_test_runner/) - A test framework for Gleam exercises on Exercism 207 218 208 - - [lpil/gleeunit](https://github.com/lpil/gleeunit) - Gleam bindings to the Erlang EUnit test framework. 209 - - [inoas/glacier]([https://github.com/inoas/glacier) - Gleam incremental interactive unit testing. 210 - 211 - ## Text and numbers 212 - 213 - Libraries for parsing and manipulating text and numbers. 214 - 215 - - [greggreg/pretty_print](https://gitlab.com/greggreg/pretty_print) - An implementation of Christian Lindig's "Strictly Pretty" pretty printing algorithm. 216 - - [giacomocavalieri/glam](https://github.com/giacomocavalieri/glam) - A package to help you easily pretty print structured data ✨ 217 - - [rvcas/ids](https://github.com/rvcas/ids) - A library for generating unique ids such as a cuid or UUID. 218 - - [sporto/gleam_string_builder](https://github.com/sporto/gleam_string_builder) - A library for building and formatting strings. 219 - - [defgenx/gxid](https://github.com/defgenx/gxid) - A library for generating xids 220 - - [johnbjrk/gap](https://github.com/JohnBjrk/gap) - A library for comparing strings/lists, creating structured diffs and visualizing the differences 221 - - [Nicd/glentities](https://gitlab.com/Nicd/glentities) - HTML entity encoding/decoding. 222 - 223 - ## Validation 224 - 225 - - [sporto/gleam-validator](https://github.com/sporto/gleam-validator) - A library for validating custom types. 226 - - [massivefermion/phony](https://github.com/massivefermion/phony) - A library for validating phone numbers around the world. 219 + ## Text 227 220 228 - ## Websockets 221 + - [edit_distance](https://github.com/giacomocavalieri/edit_distance) [(docs)](https://hexdocs.pm/edit_distance/) - A pure Gleam package to compute the edit distance of two strings 222 + - [gap](https://github.com/JohnBjrk/gap) [(docs)](https://hexdocs.pm/gap/) - A Gleam library for comparing strings/lists and producing a textual (styled) representation of the differences. 223 + - [glam](https://github.com/giacomocavalieri/glam) [(docs)](https://hexdocs.pm/glam/) - A package to help you easily pretty print structured data 224 + - [glemplate](https://gitlab.com/Nicd/glemplate) [(docs)](https://hexdocs.pm/glemplate/) - A simple template engine for Gleam 225 + - [hug](https://github.com/brettkolodny/gleam-hug) [(docs)](https://hexdocs.pm/hug/) - Helpful and pretty CLI messages 226 + - [ids](https://github.com/rvcas/ids) [(docs)](https://hexdocs.pm/ids/) - Unique IDs for Gleam 227 + - [iso_8859](https://github.com/richard-viney/iso_8859) [(docs)](https://hexdocs.pm/iso_8859/) - Gleam library to decode ISO/IEC 8859 binary data into native UTF-8 strings. 228 + - [justin](https://github.com/lpil/justin) [(docs)](https://hexdocs.pm/justin/) - Convert between snake_case, camelCase, and other cases in Gleam 229 + - [phony](https://github.com/massivefermion/phony) [(docs)](https://hexdocs.pm/phony/) - An international phone number validator 230 + - [punycode](https://codeberg.org/sotolf/gleam_punycode/) [(docs)](https://hexdocs.pm/punycode/) - Gleam implementation of punycode encoding and decoding 231 + - [rank](https://github.com/lpil/glance) [(docs)](https://hexdocs.pm/rank/) - Ordinals for numbers, e.g. 1st, 2nd, 3rd 229 232 230 - - [lpil/nerf](https://github.com/lpil/nerf) - Gleam bindings to gun, the Erlang HTTP/1.1, HTTP/2 and Websocket client. 233 + ## Time 231 234 232 - # Templates 235 + - [birl](https://github.com/massivefermion/birl) [(docs)](https://hexdocs.pm/birl/) - Date / Time handling for Gleam 233 236 234 - ## Serverless 237 + ## Web frameworks 235 238 236 - - [nicklasxyz/gleam_openfaas](https://github.com/NicklasXYZ/gleam_openfaas) - Gleam function templates to be used with the serverless framework OpenFaaS. 237 - - [nicklasxyz/gleam_openwhisk](https://github.com/NicklasXYZ/gleam_openwhisk) - Gleam function templates to be used with the serverless framework OpenWhisk. 239 + - [wisp](https://github.com/gleam-wisp/wisp) [(docs)](https://hexdocs.pm/wisp/) - A practical web framework for Gleam 238 240 239 241 # Projects 240 242 ··· 245 247 - [gleam-lang/gleam](https://github.com/gleam-lang/gleam) - The Gleam compiler. 246 248 - [gleam-lang/example-lisp-interpreter](https://github.com/gleam-lang/example-lisp-interpreter/) - A toy Lisp interpreter in Gleam. 247 249 248 - 249 - ## Programming Challenges 250 - 251 - - [tanklesxl/gladvent](https://github.com/tanklesxl/gladvent) - An `Advent of Code` runner for Gleam, targeting Erlang. 252 - 253 250 ## Web applications 254 251 255 252 Web applications written in Gleam. 256 253 257 - - [gleam-lang/example-echo-server](https://github.com/gleam-lang/example-url-shortener) - An example Gleam web application. 258 - - [greggreg/gleam_todo](https://gitlab.com/greggreg/gleam_todo) - A serverside only implementation of Todo MVC written in Gleam! 259 - - [QuinnWilton/gleam-chip8](https://github.com/QuinnWilton/gleam-chip8) - A CHIP-8 emulator built with Gleam and Phoenix LiveView, playable [here](http://chip8.quinnwilton.com). 260 - - [toranb/elixir-gleam-match](https://github.com/toranb/elixir-gleam-match) - A game built with Gleam and Phoenix LiveView. 261 - - [rawhat/spades](https://github.com/rawhat/spades) - A multiplayer card game with a Gleam backend and React front-end 254 + - [gleam-lang/example-todomvc](https://github.com/gleam-lang/example-url-shortener) - A serverside only implementation of Todo MVC written in Gleam! 255 + - [gleam-lang/example-echo-server](https://github.com/gleam-lang/example-echo-server) - An example Gleam web application. 256 + - [gleam-lang/packages](https://github.com/gleam-lang/packages) - The Gleam package index website. 262 257 263 258 # Tools 264 259 ··· 281 276 282 277 Websites with Gleam related content. 283 278 284 - - [gleam.run](https://gleam.run) - Gleam's website and introductory guide 279 + - [gleam.run](https://gleam.run) - Gleam's website. 280 + - [tour.gleam.run](https://gleam.run) - Gleam's interactive tour and turorial. 285 281 286 282 ## Courses 287 283 288 284 - [Exercism's Gleam track](https://github.com/exercism/gleam/) - Crowd-sourced code mentorship. Practice having thoughtful conversations about code. 285 + - [tanklesxl/gladvent](https://github.com/tanklesxl/gladvent) - An `Advent of Code` runner for Gleam, targeting Erlang. 289 286 290 287 ## Talks 288 + 291 289 - [Introduction to Gleam](https://fosdem.org/2023/schedule/event/beam_gleam_intro/) - [Harry Bairstow](https://github.com/harryet) 292 290 - [Distributed music programming with Gleam, BEAM, and the Web Audio API](https://fosdem.org/2023/schedule/event/beam_distributed_music_programming_gleam/) - [Hayleigh Thompson](https://github.com/hayleigh-dot-dev) 293 291 - [I learned Gleam in a week. Here's how it went](https://www.youtube.com/watch?v=-8OIK4RIUsg) - [Theo Harris](https://github.com/Theosaurus-Rex)
+24
gleam.toml
··· 1 + name = "awesome" 2 + version = "1.0.0" 3 + 4 + # Fill out these fields if you intend to generate HTML documentation or publish 5 + # your project to the Hex package manager. 6 + # 7 + # description = "" 8 + # licences = ["Apache-2.0"] 9 + # repository = { type = "github", user = "username", repo = "project" } 10 + # links = [{ title = "Website", href = "https://gleam.run" }] 11 + # 12 + # For a full reference of all the available options, you can have a look at 13 + # https://gleam.run/writing-gleam/gleam-toml/. 14 + 15 + [dependencies] 16 + gleam_stdlib = "~> 0.34 or ~> 1.0" 17 + simplifile = "~> 1.2" 18 + gleam_httpc = "~> 2.1" 19 + tom = "~> 0.3" 20 + sqlight = "~> 0.9" 21 + gleam_http = "~> 3.5" 22 + 23 + [dev-dependencies] 24 + gleeunit = "~> 1.0"
-3
hello.gleam
··· 1 - pub fn main() { 2 - "Hello, Joe!" 3 - }
+22
manifest.toml
··· 1 + # This file was generated by Gleam 2 + # You typically do not need to edit this file 3 + 4 + packages = [ 5 + { name = "esqlite", version = "0.8.6", build_tools = ["rebar3"], requirements = [], otp_app = "esqlite", source = "hex", outer_checksum = "607E45F4DA42601D8F530979417F57A4CD629AB49085891849302057E68EA188" }, 6 + { name = "gleam_http", version = "3.5.3", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "C2FC3322203B16F897C1818D9810F5DEFCE347F0751F3B44421E1261277A7373" }, 7 + { name = "gleam_httpc", version = "2.1.2", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_stdlib"], otp_app = "gleam_httpc", source = "hex", outer_checksum = "ACD05CA3BAC7780DF5FFAE334621FD199D1B490FAF6ECDFF74316CAA61CE88E6" }, 8 + { name = "gleam_stdlib", version = "0.34.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "1FB8454D2991E9B4C0C804544D8A9AD0F6184725E20D63C3155F0AEB4230B016" }, 9 + { name = "gleeunit", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "D364C87AFEB26BDB4FB8A5ABDE67D635DC9FA52D6AB68416044C35B096C6882D" }, 10 + { name = "simplifile", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "359CD7006E2F69255025C858CCC6407C11A876EC179E6ED1E46809E8DC6B1AAD" }, 11 + { name = "sqlight", version = "0.9.0", build_tools = ["gleam"], requirements = ["esqlite", "gleam_stdlib"], otp_app = "sqlight", source = "hex", outer_checksum = "2D9C9BA420A5E7DCE7DB2DAAE4CAB0BE6218BEB48FD1531C583550B3D1316E94" }, 12 + { name = "tom", version = "0.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "tom", source = "hex", outer_checksum = "0831C73E45405A2153091226BF98FB485ED16376988602CC01A5FD086B82D577" }, 13 + ] 14 + 15 + [requirements] 16 + gleam_http = { version = "~> 3.5"} 17 + gleam_httpc = { version = "~> 2.1" } 18 + gleam_stdlib = { version = "~> 0.34 or ~> 1.0" } 19 + gleeunit = { version = "~> 1.0" } 20 + simplifile = { version = "~> 1.2" } 21 + sqlight = { version = "~> 0.9" } 22 + tom = { version = "~> 0.3" }
+5
packages/adglent.toml
··· 1 + name = "adglent" 2 + description = "Advent of code helper - automating setup of tests, solution template and problem input" 3 + docs_url = "https://hexdocs.pm/adglent/" 4 + repo_url = "https://github.com/JohnBjrk/adglent" 5 + category = ""
+5
packages/ag_html.toml
··· 1 + name = "ag_html" 2 + description = "A Gleam library for building HTML strings usings functions." 3 + docs_url = "https://hexdocs.pm/ag_html/" 4 + repo_url = "https://github.com/avdgaag/gleam_ag_html" 5 + category = ""
+5
packages/apollo.toml
··· 1 + name = "apollo" 2 + description = "a simple type safe validator" 3 + docs_url = "https://hexdocs.pm/apollo/" 4 + repo_url = "https://github.com/endercheif/apollo" 5 + category = ""
+5
packages/argamak.toml
··· 1 + name = "argamak" 2 + description = "A tensor library for the Gleam programming language" 3 + docs_url = "https://hexdocs.pm/argamak/" 4 + repo_url = "https://github.com/tynanbe/argamak" 5 + category = ""
+5
packages/argv.toml
··· 1 + name = "argv" 2 + description = "A cross platform library for getting the command line arguments" 3 + docs_url = "https://hexdocs.pm/argv/" 4 + repo_url = "https://github.com/lpil/argv" 5 + category = "Command Line"
+5
packages/aws4_request.toml
··· 1 + name = "aws4_request" 2 + description = "An AWS Signature Version 4 client implementation, used for S3 auth, etc" 3 + docs_url = "https://hexdocs.pm/aws4_request/" 4 + repo_url = "https://github.com/lpil/aws4_request" 5 + category = "API Clients"
+5
packages/beecrypt.toml
··· 1 + name = "beecrypt" 2 + description = "Buzzing Gleam bindings to the Erlang bcrypt hashing library" 3 + docs_url = "https://hexdocs.pm/beecrypt/" 4 + repo_url = "https://github.com/lpil/beecrypt" 5 + category = "Hashing and Encryption"
+5
packages/birl.toml
··· 1 + name = "birl" 2 + description = "Date / Time handling for Gleam" 3 + docs_url = "https://hexdocs.pm/birl/" 4 + repo_url = "https://github.com/massivefermion/birl" 5 + category = "Time"
+5
packages/bison.toml
··· 1 + name = "bison" 2 + description = "BSON encoder and decoder for Gleam" 3 + docs_url = "https://hexdocs.pm/bison/" 4 + repo_url = "https://github.com/massivefermion/bison" 5 + category = ""
+5
packages/blah.toml
··· 1 + name = "blah" 2 + description = "fake data generation for gleam" 3 + docs_url = "https://hexdocs.pm/blah/" 4 + repo_url = "https://github.com/massivefermion/blah" 5 + category = "Randomness"
+5
packages/bliss.toml
··· 1 + name = "bliss" 2 + description = "A micro web framework for Gleam" 3 + docs_url = "https://hexdocs.pm/bliss/" 4 + repo_url = "https://github.com/sporto/bliss" 5 + category = ""
+5
packages/cgi.toml
··· 1 + name = "cgi" 2 + description = "Common Gateway Interface (CGI) in Gleam" 3 + docs_url = "https://hexdocs.pm/cgi/" 4 + repo_url = "https://github.com/lpil/cgi" 5 + category = "HTTP Servers"
+5
packages/chip.toml
··· 1 + name = "chip" 2 + description = "A Gleam registry library" 3 + docs_url = "https://hexdocs.pm/chip/" 4 + repo_url = "https://github.com/chouzar/chip" 5 + category = ""
+5
packages/colours.toml
··· 1 + name = "colours" 2 + description = "A Gleam library for adding colours in terminal outputs." 3 + docs_url = "https://hexdocs.pm/colours/" 4 + repo_url = "https://github.com/Willyboar/colours" 5 + category = ""
+5
packages/conversation.toml
··· 1 + name = "conversation" 2 + description = "Gleam bindings for the standard JavaScript Request and Response APIs" 3 + docs_url = "https://hexdocs.pm/conversation/" 4 + repo_url = "https://github.com/MystPi/conversation" 5 + category = "JavaScript"
+5
packages/crossbar.toml
··· 1 + name = "crossbar" 2 + description = "Experimental data validation library in pure Gleam" 3 + docs_url = "https://hexdocs.pm/crossbar/" 4 + repo_url = "https://github.com/aosasona/crossbar" 5 + category = ""
+5
packages/dahlia.toml
··· 1 + name = "dahlia" 2 + description = "Dahlia a simple text formatting package, inspired by the game Minecraft." 3 + docs_url = "https://hexdocs.pm/dahlia/" 4 + repo_url = "https://github.com/dahlia-lib/dahlia-gleam" 5 + category = ""
+5
packages/dew.toml
··· 1 + name = "dew" 2 + description = "a glistening gleam web server" 3 + docs_url = "https://hexdocs.pm/dew/" 4 + repo_url = "https://github.com/rawhat/dew" 5 + category = ""
+5
packages/dot_env.toml
··· 1 + name = "dot_env" 2 + description = "Load environment variables from files" 3 + docs_url = "https://hexdocs.pm/dot_env/" 4 + repo_url = "https://github.com/aosasona/dotenv" 5 + category = ""
+5
packages/dotenv_gleam.toml
··· 1 + name = "dotenv_gleam" 2 + description = "dotenv for Gleam" 3 + docs_url = "https://hexdocs.pm/dotenv_gleam/" 4 + repo_url = "https://github.com/Grubba27/dotenv_gleam" 5 + category = ""
+5
packages/dove.toml
··· 1 + name = "dove" 2 + description = "HTTP client written in and for Gleam" 3 + docs_url = "https://hexdocs.pm/dove/" 4 + repo_url = "https://github.com/massivefermion/dove" 5 + category = ""
+5
packages/edit_distance.toml
··· 1 + name = "edit_distance" 2 + description = "A pure Gleam package to compute the edit distance of two strings" 3 + docs_url = "https://hexdocs.pm/edit_distance/" 4 + repo_url = "https://github.com/giacomocavalieri/edit_distance" 5 + category = "Text"
+5
packages/emel.toml
··· 1 + name = "emel" 2 + description = "Turn data into functions in the Erlang ecosystem" 3 + docs_url = "https://hexdocs.pm/emel/" 4 + repo_url = "https://github.com/mrdimosthenis/emel" 5 + category = ""
+5
packages/envoy.toml
··· 1 + name = "envoy" 2 + description = "A zero dependency cross platform Gleam package for reading environment variables" 3 + docs_url = "https://hexdocs.pm/envoy/" 4 + repo_url = "https://github.com/lpil/envoy" 5 + category = "Configuration"
+5
packages/esgleam.toml
··· 1 + name = "esgleam" 2 + description = "esbuild for Gleam" 3 + docs_url = "https://hexdocs.pm/esgleam/" 4 + repo_url = "https://github.com/Enderchief/esgleam" 5 + category = "Build Tooling"
+5
packages/espresso.toml
··· 1 + name = "espresso" 2 + description = "A simple gleam http server and router built on top of erlang cowboy" 3 + docs_url = "https://hexdocs.pm/espresso/" 4 + repo_url = "https://github.com/espresso-gleam/espresso" 5 + category = ""
+5
packages/espresso_pgo_wrapper.toml
··· 1 + name = "espresso_pgo_wrapper" 2 + description = "Simple wrapper around the espresso PGO tool" 3 + docs_url = "https://hexdocs.pm/espresso_pgo_wrapper/" 4 + repo_url = "https://github.com/espresso-gleam/espresso_pgo_wrapper" 5 + category = ""
+5
packages/eval.toml
··· 1 + name = "eval" 2 + description = "A Gleam package to help you thread state through a series of steps." 3 + docs_url = "https://hexdocs.pm/eval/" 4 + repo_url = "https://github.com/hayleigh-dot-dev/gleam-eval" 5 + category = ""
+5
packages/exception.toml
··· 1 + name = "exception" 2 + description = "A tiny package for dealing with exceptions" 3 + docs_url = "https://hexdocs.pm/exception/" 4 + repo_url = "https://github.com/lpil/exception" 5 + category = "Error Handling"
+5
packages/exercism_test_runner.toml
··· 1 + name = "exercism_test_runner" 2 + description = "A test framework for Gleam exercises on Exercism" 3 + docs_url = "https://hexdocs.pm/exercism_test_runner/" 4 + repo_url = "https://github.com/exercism/gleam-test-runner" 5 + category = "Testing"
+5
packages/facquest.toml
··· 1 + name = "facquest" 2 + description = "A smoother way to send HTTP requests in Gleam, an abstraction over Hackney - see the readme for important notes!" 3 + docs_url = "https://hexdocs.pm/facquest/" 4 + repo_url = "https://github.com/trulyao/facquest" 5 + category = ""
+5
packages/falcon.toml
··· 1 + name = "falcon" 2 + description = "A smoother way to send HTTP requests in Gleam, an abstraction over Hackney - see the readme for important notes!" 3 + docs_url = "https://hexdocs.pm/falcon/" 4 + repo_url = "https://github.com/trulyao/falcon" 5 + category = ""
+5
packages/filepath.toml
··· 1 + name = "filepath" 2 + description = "Work with file paths in Gleam!" 3 + docs_url = "https://hexdocs.pm/filepath/" 4 + repo_url = "https://github.com/lpil/filepath" 5 + category = "File System"
+5
packages/filespy.toml
··· 1 + name = "filespy" 2 + description = "Get notified of filesystem events in Gleam" 3 + docs_url = "https://hexdocs.pm/filespy/" 4 + repo_url = "https://github.com/pta2002/gleam-filespy" 5 + category = ""
+5
packages/finch_gleam.toml
··· 1 + name = "finch_gleam" 2 + description = "Gleam wrapper for the Finch HTTP client" 3 + docs_url = "https://hexdocs.pm/finch_gleam/" 4 + repo_url = "https://gitlab.com/Nicd/finch_gleam" 5 + category = ""
+5
packages/for_the_crows.toml
··· 1 + name = "for_the_crows" 2 + description = "An adaptation of 'For the Crown' game by Jeremy Lennert." 3 + docs_url = "https://hexdocs.pm/for_the_crows/" 4 + repo_url = "https://github.com/chouzar/crow" 5 + category = ""
+5
packages/form_coder.toml
··· 1 + name = "form_coder" 2 + description = "A Gleam library for encoding and decoding `x-www-form-urlencoded` data" 3 + docs_url = "https://hexdocs.pm/form_coder/" 4 + repo_url = "https://github.com/J3RN/form_coder" 5 + category = ""
+5
packages/fp_gl.toml
··· 1 + name = "fp_gl" 2 + description = "A porting of some parts of fp-ts to Gleam" 3 + docs_url = "https://hexdocs.pm/fp_gl/" 4 + repo_url = "https://github.com/lucasavila00/fp_gl" 5 + category = ""
+5
packages/fswalk.toml
··· 1 + name = "fswalk" 2 + description = "Recursively iterate over the filesystem" 3 + docs_url = "https://hexdocs.pm/fswalk/" 4 + repo_url = "https://github.com/cdaringe/fswalk" 5 + category = ""
+5
packages/funtil.toml
··· 1 + name = "funtil" 2 + description = "Handy utilities for better functional programming in Gleam!" 3 + docs_url = "https://hexdocs.pm/funtil/" 4 + repo_url = "https://github.com/hayleigh-dot-dev/gleam-lustre" 5 + category = ""
+5
packages/galant.toml
··· 1 + name = "galant" 2 + description = "A Gleam library for styling string in the terminal with ANSI Escape Sequences" 3 + docs_url = "https://hexdocs.pm/galant/" 4 + repo_url = "https://github.com/JohnBjrk/galant" 5 + category = ""
+5
packages/gap.toml
··· 1 + name = "gap" 2 + description = "A Gleam library for comparing strings/lists and producing a textual (styled) representation of the differences." 3 + docs_url = "https://hexdocs.pm/gap/" 4 + repo_url = "https://github.com/JohnBjrk/gap" 5 + category = "Text"
+5
packages/gen_core_erlang.toml
··· 1 + name = "gen_core_erlang" 2 + description = "Generate Core Erlang from Gleam (wraps the Erlang cerl compiler module)" 3 + docs_url = "https://hexdocs.pm/gen_core_erlang/" 4 + repo_url = "https://codeberg.org/kero/gleam_codegen" 5 + category = "Erlang and OTP"
+5
packages/glacier.toml
··· 1 + name = "glacier" 2 + description = "Glacier brings incremental interactive unit testing to Gleam. It is meant as a drop-in replacement for Gleeunit and depends and wraps a fork of it." 3 + docs_url = "https://hexdocs.pm/glacier/" 4 + repo_url = "https://github.com/inoas/glacier" 5 + category = ""
+5
packages/gladvent.toml
··· 1 + name = "gladvent" 2 + description = "An Advent Of Code runner for gleam" 3 + docs_url = "https://hexdocs.pm/gladvent/" 4 + repo_url = "https://github.com/TanklesXL/gladvent" 5 + category = ""
+5
packages/glailglind.toml
··· 1 + name = "glailglind" 2 + description = "Gleam modules and functions for installing and invoking TailwindCSS" 3 + docs_url = "https://hexdocs.pm/glailglind/" 4 + repo_url = "https://github.com/okkdev/glailglind" 5 + category = "Frontend"
+5
packages/glam.toml
··· 1 + name = "glam" 2 + description = "A package to help you easily pretty print structured data" 3 + docs_url = "https://hexdocs.pm/glam/" 4 + repo_url = "https://github.com/giacomocavalieri/glam" 5 + category = "Text"
+5
packages/glance.toml
··· 1 + name = "glance" 2 + description = "A Gleam source code parser, in Gleam!" 3 + docs_url = "https://hexdocs.pm/glance/" 4 + repo_url = "https://github.com/lpil/glance" 5 + category = "Parsing"
+5
packages/glance_printer.toml
··· 1 + name = "glance_printer" 2 + description = "A pretty_printer for the glance AST" 3 + docs_url = "https://hexdocs.pm/glance_printer/" 4 + repo_url = "https://github.com/bcpeinhardt/glance_printer" 5 + category = "Parsing"
+5
packages/glare.toml
··· 1 + name = "glare" 2 + description = "Bright Gleam Web Framework using SolidJS" 3 + docs_url = "https://hexdocs.pm/glare/" 4 + repo_url = "https://github.com/Endercheif/glare" 5 + category = ""
+5
packages/glats.toml
··· 1 + name = "glats" 2 + description = "A NATS client for Gleam." 3 + docs_url = "https://hexdocs.pm/glats/" 4 + repo_url = "https://github.com/arnarg/glats" 5 + category = ""
+5
packages/glatus.toml
··· 1 + name = "glatus" 2 + description = "Gleam bindings to the API of the Gatus health check tool" 3 + docs_url = "https://hexdocs.pm/glatus/" 4 + repo_url = "https://github.com/lpil/glatus" 5 + category = "API Clients"
+5
packages/gleam.toml
··· 1 + name = "gleam" 2 + description = "Hello, world!" 3 + docs_url = "https://hexdocs.pm/gleam/" 4 + repo_url = "https://github.com/gleam-lang/gleam" 5 + category = ""
+5
packages/gleam_bbmustache.toml
··· 1 + name = "gleam_bbmustache" 2 + description = "Templates in Gleam using bbmustache" 3 + docs_url = "https://hexdocs.pm/gleam_bbmustache/" 4 + repo_url = "https://github.com/gleam-experiments/bbmustache" 5 + category = ""
+5
packages/gleam_bitwise.toml
··· 1 + name = "gleam_bitwise" 2 + description = "Bitwise operations on integers" 3 + docs_url = "https://hexdocs.pm/gleam_bitwise/" 4 + repo_url = "https://github.com/gleam-lang/bitwise" 5 + category = ""
+5
packages/gleam_bson.toml
··· 1 + name = "gleam_bson" 2 + description = "bson encoder and decoder for gleam" 3 + docs_url = "https://hexdocs.pm/gleam_bson/" 4 + repo_url = "https://github.com/massivefermion/gleam_bson" 5 + category = ""
+5
packages/gleam_community_ansi.toml
··· 1 + name = "gleam_community_ansi" 2 + description = "ANSI colours, formatting, and control codes" 3 + docs_url = "https://hexdocs.pm/gleam_community_ansi/" 4 + repo_url = "https://github.com/gleam-community/ansi" 5 + category = "Command Line"
+5
packages/gleam_community_colour.toml
··· 1 + name = "gleam_community_colour" 2 + description = "Colour types, conversions, and other utilities" 3 + docs_url = "https://hexdocs.pm/gleam_community_colour/" 4 + repo_url = "https://github.com/gleam-community/colour" 5 + category = "Graphics"
+5
packages/gleam_community_maths.toml
··· 1 + name = "gleam_community_maths" 2 + description = "A basic maths library" 3 + docs_url = "https://hexdocs.pm/gleam_community_maths/" 4 + repo_url = "https://github.com/gleam-community/maths" 5 + category = "Numbers"
+5
packages/gleam_community_path.toml
··· 1 + name = "gleam_community_path" 2 + description = "Path parsing and manipulation" 3 + docs_url = "https://hexdocs.pm/gleam_community_path/" 4 + repo_url = "https://github.com/gleam-community/path" 5 + category = ""
+5
packages/gleam_cors.toml
··· 1 + name = "gleam_cors" 2 + description = "A CORS middleware for Gleam" 3 + docs_url = "https://hexdocs.pm/gleam_cors/" 4 + repo_url = "https://github.com/megapctr/gleam_cors" 5 + category = ""
+5
packages/gleam_cowboy.toml
··· 1 + name = "gleam_cowboy" 2 + description = "Run Gleam HTTP services with the Cowboy web server" 3 + docs_url = "https://hexdocs.pm/gleam_cowboy/" 4 + repo_url = "https://github.com/gleam-lang/cowboy" 5 + category = ""
+5
packages/gleam_cowboy_websockets.toml
··· 1 + name = "gleam_cowboy_websockets" 2 + description = "An expermimental Gleam library for playing with Cowboy websockets" 3 + docs_url = "https://hexdocs.pm/gleam_cowboy_websockets/" 4 + repo_url = "https://github.com/vstreame/gleam_cowboy_websockets" 5 + category = ""
+5
packages/gleam_crypto.toml
··· 1 + name = "gleam_crypto" 2 + description = "Gleam bindings to the BEAM cryptography functions" 3 + docs_url = "https://hexdocs.pm/gleam_crypto/" 4 + repo_url = "https://github.com/gleam-lang/crypto" 5 + category = "Erlang and OTP"
+5
packages/gleam_deno.toml
··· 1 + name = "gleam_deno" 2 + description = "Nothing here yet..." 3 + docs_url = "https://hexdocs.pm/gleam_deno/" 4 + repo_url = "https://github.com/gleam-lang/gleam" 5 + category = ""
+5
packages/gleam_dotenv.toml
··· 1 + name = "gleam_dotenv" 2 + description = "dotenv for Gleam" 3 + docs_url = "https://hexdocs.pm/gleam_dotenv/" 4 + repo_url = "https://github.com/Grubba27/gleam_dotenv" 5 + category = "Configuration"
+5
packages/gleam_elli.toml
··· 1 + name = "gleam_elli" 2 + description = "Run Gleam HTTP services with the Elli web server" 3 + docs_url = "https://hexdocs.pm/gleam_elli/" 4 + repo_url = "https://github.com/gleam-lang/elli" 5 + category = "HTTP Servers"
+5
packages/gleam_erlang.toml
··· 1 + name = "gleam_erlang" 2 + description = "A Gleam library for working with Erlang" 3 + docs_url = "https://hexdocs.pm/gleam_erlang/" 4 + repo_url = "https://github.com/gleam-lang/erlang" 5 + category = "Erlang and OTP"
+5
packages/gleam_erlexec.toml
··· 1 + name = "gleam_erlexec" 2 + description = "A wrapper for erlexec" 3 + docs_url = "https://hexdocs.pm/gleam_erlexec/" 4 + repo_url = "https://github.com/manveru/gleam_erlexec" 5 + category = ""
+5
packages/gleam_fetch.toml
··· 1 + name = "gleam_fetch" 2 + description = "Make HTTP requests in Gleam JavaScript with Fetch" 3 + docs_url = "https://hexdocs.pm/gleam_fetch/" 4 + repo_url = "https://github.com/gleam-lang/fetch" 5 + category = "HTTP Clients"
+5
packages/gleam_gun.toml
··· 1 + name = "gleam_gun" 2 + description = "Gleam bindings to gun, the HTTP/1.1, HTTP/2 and Websocket client" 3 + docs_url = "https://hexdocs.pm/gleam_gun/" 4 + repo_url = "https://github.com/gilevskaya/gleam_gun" 5 + category = ""
+5
packages/gleam_hackney.toml
··· 1 + name = "gleam_hackney" 2 + description = "Gleam bindings to the Hackney HTTP client" 3 + docs_url = "https://hexdocs.pm/gleam_hackney/" 4 + repo_url = "https://github.com/gleam-lang/hackney" 5 + category = "HTTP Clients"
+5
packages/gleam_hexpm.toml
··· 1 + name = "gleam_hexpm" 2 + description = "Gleam dynamic decoders for the API of Hex, the package manager for the BEAM ecosystem." 3 + docs_url = "https://hexdocs.pm/gleam_hexpm/" 4 + repo_url = "https://github.com/gleam-lang/hexpm" 5 + category = "API Clients"
+5
packages/gleam_http.toml
··· 1 + name = "gleam_http" 2 + description = "Types and functions for Gleam HTTP clients and servers" 3 + docs_url = "https://hexdocs.pm/gleam_http/" 4 + repo_url = "https://github.com/gleam-lang/http" 5 + category = "HTTP"
+5
packages/gleam_httpc.toml
··· 1 + name = "gleam_httpc" 2 + description = "Gleam bindings to Erlang's built in HTTP client, httpc" 3 + docs_url = "https://hexdocs.pm/gleam_httpc/" 4 + repo_url = "https://github.com/gleam-lang/httpc" 5 + category = "HTTP Clients"
+5
packages/gleam_javascript.toml
··· 1 + name = "gleam_javascript" 2 + description = "Work with JavaScript types and values in Gleam" 3 + docs_url = "https://hexdocs.pm/gleam_javascript/" 4 + repo_url = "https://github.com/gleam-lang/javascript" 5 + category = "JavaScript"
+5
packages/gleam_json.toml
··· 1 + name = "gleam_json" 2 + description = "Work with JSON in Gleam" 3 + docs_url = "https://hexdocs.pm/gleam_json/" 4 + repo_url = "https://github.com/gleam-lang/json" 5 + category = "JSON"
+5
packages/gleam_mongo.toml
··· 1 + name = "gleam_mongo" 2 + description = "A mongodb driver for gleam" 3 + docs_url = "https://hexdocs.pm/gleam_mongo/" 4 + repo_url = "https://github.com/massivefermion/gleam_mongo" 5 + category = ""
+5
packages/gleam_nodejs.toml
··· 1 + name = "gleam_nodejs" 2 + description = "Nothing here yet..." 3 + docs_url = "https://hexdocs.pm/gleam_nodejs/" 4 + repo_url = "https://github.com/gleam-lang/gleam" 5 + category = ""
+5
packages/gleam_os_mon.toml
··· 1 + name = "gleam_os_mon" 2 + description = "A wrapper for the os_mon functionality" 3 + docs_url = "https://hexdocs.pm/gleam_os_mon/" 4 + repo_url = "https://github.com/manveru/gleam_os_mon" 5 + category = ""
+5
packages/gleam_otp.toml
··· 1 + name = "gleam_otp" 2 + description = "Fault tolerant multicore Gleam programs with OTP" 3 + docs_url = "https://hexdocs.pm/gleam_otp/" 4 + repo_url = "https://github.com/gleam-lang/otp" 5 + category = "Erlang and OTP"
+5
packages/gleam_pgo.toml
··· 1 + name = "gleam_pgo" 2 + description = "Gleam bindings to the PGO PostgreSQL client" 3 + docs_url = "https://hexdocs.pm/gleam_pgo/" 4 + repo_url = "https://github.com/gleam-experiments/pgo" 5 + category = "Databases"
+5
packages/gleam_qs.toml
··· 1 + name = "gleam_qs" 2 + description = "Parse and encode URL query strings" 3 + docs_url = "https://hexdocs.pm/gleam_qs/" 4 + repo_url = "https://github.com/sporto/gleam_qs" 5 + category = ""
+5
packages/gleam_sendgrid.toml
··· 1 + name = "gleam_sendgrid" 2 + description = "Send emails from Gleam with SendGrid" 3 + docs_url = "https://hexdocs.pm/gleam_sendgrid/" 4 + repo_url = "https://github.com/lpil/gleam_sendgrid" 5 + category = "Email"
+5
packages/gleam_stats.toml
··· 1 + name = "gleam_stats" 2 + description = "A Gleam mathematics and statistics library." 3 + docs_url = "https://hexdocs.pm/gleam_stats/" 4 + repo_url = "https://github.com/nicklasxyz/gleam_stats" 5 + category = ""
+5
packages/gleam_stdlib.toml
··· 1 + name = "gleam_stdlib" 2 + description = "A standard library for the Gleam programming language" 3 + docs_url = "https://hexdocs.pm/gleam_stdlib/" 4 + repo_url = "https://github.com/gleam-lang/stdlib" 5 + category = "Data Structures"
+5
packages/gleam_synapses.toml
··· 1 + name = "gleam_synapses" 2 + description = "A plug-and-play library for neural networks written in Gleam" 3 + docs_url = "https://hexdocs.pm/gleam_synapses/" 4 + repo_url = "https://github.com/mrdimosthenis/gleam_synapses" 5 + category = ""
+5
packages/gleam_zlists.toml
··· 1 + name = "gleam_zlists" 2 + description = "A library for working with lazy lists in Gleam" 3 + docs_url = "https://hexdocs.pm/gleam_zlists/" 4 + repo_url = "https://github.com/mrdimosthenis/gleam_zlists" 5 + category = ""
+5
packages/gleamql.toml
··· 1 + name = "gleamql" 2 + description = "A Simple Graphql Client Written In Gleam (" 3 + docs_url = "https://hexdocs.pm/gleamql/" 4 + repo_url = "https://github.com/cobbinma/gleamql" 5 + category = ""
+5
packages/gleamy_bench.toml
··· 1 + name = "gleamy_bench" 2 + description = "A library for benchmarking gleam code." 3 + docs_url = "https://hexdocs.pm/gleamy_bench/" 4 + repo_url = "https://github.com/schurhammer/gleamy_bench" 5 + category = "Benchmarking"
+5
packages/gleamy_structures.toml
··· 1 + name = "gleamy_structures" 2 + description = "Data structures in pure Gleam." 3 + docs_url = "https://hexdocs.pm/gleamy_structures/" 4 + repo_url = "https://github.com/schurhammer/gleamy_structures" 5 + category = ""
+5
packages/glearray.toml
··· 1 + name = "glearray" 2 + description = "Immutable arrays for Gleam" 3 + docs_url = "https://hexdocs.pm/glearray/" 4 + repo_url = "https://github.com/fschwalbe/glearray" 5 + category = "Data Structures"
+5
packages/gledis.toml
··· 1 + name = "gledis" 2 + description = "Gleam Redis client" 3 + docs_url = "https://hexdocs.pm/gledis/" 4 + repo_url = "https://github.com/HarryET/gledis" 5 + category = ""
+5
packages/gleescript.toml
··· 1 + name = "gleescript" 2 + description = "Bundle your Gleam-on-Erlang project into an escript, a single executable file!" 3 + docs_url = "https://hexdocs.pm/gleescript/" 4 + repo_url = "https://github.com/lpil/gleescript" 5 + category = "Build Tooling"
+5
packages/glemplate.toml
··· 1 + name = "glemplate" 2 + description = "A simple template engine for Gleam" 3 + docs_url = "https://hexdocs.pm/glemplate/" 4 + repo_url = "https://gitlab.com/Nicd/glemplate" 5 + category = "Text"
+5
packages/glentities.toml
··· 1 + name = "glentities" 2 + description = "HTML entity encoder/decoder for Gleam" 3 + docs_url = "https://hexdocs.pm/glentities/" 4 + repo_url = "https://gitlab.com/Nicd/glentities" 5 + category = "HTML"
+5
packages/glenvy.toml
··· 1 + name = "glenvy" 2 + description = "A pleasant way to interact with your environment." 3 + docs_url = "https://hexdocs.pm/glenvy/" 4 + repo_url = "https://github.com/maxdeviant/glenvy" 5 + category = "Configuration"
+5
packages/glerm.toml
··· 1 + name = "glerm" 2 + description = "A terminal wrapper for Gleam" 3 + docs_url = "https://hexdocs.pm/glerm/" 4 + repo_url = "https://github.com/rawhat/glerm" 5 + category = ""
+5
packages/glesha.toml
··· 1 + name = "glesha" 2 + description = "SHA-2 for Gleam" 3 + docs_url = "https://hexdocs.pm/glesha/" 4 + repo_url = "https://github.com/bunopnu/glesha" 5 + category = ""
+5
packages/glevatar.toml
··· 1 + name = "glevatar" 2 + description = "Easily create Gravatar URLs in Gleam" 3 + docs_url = "https://hexdocs.pm/glevatar/" 4 + repo_url = "https://github.com/bunopnu/glevatar" 5 + category = "API Clients"
+5
packages/glexer.toml
··· 1 + name = "glexer" 2 + description = "A lexer for Gleam source code" 3 + docs_url = "https://hexdocs.pm/glexer/" 4 + repo_url = "https://github.com/DanielleMaywood/glexer" 5 + category = "Parsing"
+5
packages/gliew.toml
··· 1 + name = "gliew" 2 + description = "A gleam server-side rendered web framework with live updating UI" 3 + docs_url = "https://hexdocs.pm/gliew/" 4 + repo_url = "https://github.com/arnarg/gliew" 5 + category = ""
+5
packages/glimmer.toml
··· 1 + name = "glimmer" 2 + description = "A concurrency library for Gleam!" 3 + docs_url = "https://hexdocs.pm/glimmer/" 4 + repo_url = "https://github.com/RyanBrewer317/glimmer" 5 + category = ""
+5
packages/glimt.toml
··· 1 + name = "glimt" 2 + description = "A Gleam library for logging" 3 + docs_url = "https://hexdocs.pm/glimt/" 4 + repo_url = "https://github.com/JohnBjrk/glimt" 5 + category = "Logging and Monitoring"
+5
packages/glint.toml
··· 1 + name = "glint" 2 + description = "Gleam command line argument parsing with basic flag support." 3 + docs_url = "https://hexdocs.pm/glint/" 4 + repo_url = "https://github.com/TanklesXL/glint" 5 + category = "Command Line"
+5
packages/glisten.toml
··· 1 + name = "glisten" 2 + description = "a shiny Gleam TCP/SSL server" 3 + docs_url = "https://hexdocs.pm/glisten/" 4 + repo_url = "https://github.com/rawhat/glisten" 5 + category = "Networking"
+5
packages/globe.toml
··· 1 + name = "globe" 2 + description = "Gleam Compiler Backend" 3 + docs_url = "https://hexdocs.pm/globe/" 4 + repo_url = "https://github.com/Willyboar/globe" 5 + category = ""
+5
packages/glog.toml
··· 1 + name = "glog" 2 + description = "A Gleam implementation of Erlang logger" 3 + docs_url = "https://hexdocs.pm/glog/" 4 + repo_url = "https://github.com/defgenx/glog" 5 + category = "Logging and Monitoring"
+5
packages/glome.toml
··· 1 + name = "glome" 2 + description = "A Gleam library to write and run Home Assistant automations." 3 + docs_url = "https://hexdocs.pm/glome/" 4 + repo_url = "https://github.com/dennisschroeder/glome" 5 + category = ""
+5
packages/gloml.toml
··· 1 + name = "gloml" 2 + description = "A gleam library for parsing toml." 3 + docs_url = "https://hexdocs.pm/gloml/" 4 + repo_url = "https://github.com/lunarmagpie/gloml" 5 + category = ""
+5
packages/gloom.toml
··· 1 + name = "gloom" 2 + description = "A hardcore language for buildling extreme systems" 3 + docs_url = "https://hexdocs.pm/gloom/" 4 + repo_url = "https://github.com/gloom-lang/gloom" 5 + category = ""
+5
packages/glove.toml
··· 1 + name = "glove" 2 + description = "Gleam QBE IR Generator" 3 + docs_url = "https://hexdocs.pm/glove/" 4 + repo_url = "https://github.com/Willyboar/glove" 5 + category = ""
+5
packages/glow_auth.toml
··· 1 + name = "glow_auth" 2 + description = "OAuth2 helpers in Gleam..." 3 + docs_url = "https://hexdocs.pm/glow_auth/" 4 + repo_url = "https://github.com/adz/glow_auth" 5 + category = ""
+5
packages/glubs.toml
··· 1 + name = "glubs" 2 + description = "WebVTT and SRT parser and serializer." 3 + docs_url = "https://hexdocs.pm/glubs/" 4 + repo_url = "https://github.com/philipgiuliani/glubs" 5 + category = ""
+5
packages/glucose.toml
··· 1 + name = "glucose" 2 + description = "The sweetest way to interact with the DOM." 3 + docs_url = "https://hexdocs.pm/glucose/" 4 + repo_url = "https://github.com/endercheif/glucose" 5 + category = ""
+5
packages/glue.toml
··· 1 + name = "glue" 2 + description = "Generate functions from your Gleam code!" 3 + docs_url = "https://hexdocs.pm/glue/" 4 + repo_url = "https://github.com/lpil/glue" 5 + category = ""
+5
packages/gluon.toml
··· 1 + name = "gluon" 2 + description = "A Gleam project" 3 + docs_url = "https://hexdocs.pm/gluon/" 4 + repo_url = "https://github.com/thelinuxlich/gluon" 5 + category = ""
+5
packages/glx.toml
··· 1 + name = "glx" 2 + description = "Extensions to the Gleam standard library." 3 + docs_url = "https://hexdocs.pm/glx/" 4 + repo_url = "https://github.com/maxdeviant/glx" 5 + category = ""
+5
packages/glychee.toml
··· 1 + name = "glychee" 2 + description = "Glychee: Easy access to Elixir's Benchee from Gleam!" 3 + docs_url = "https://hexdocs.pm/glychee/" 4 + repo_url = "https://github.com/inoas/glychee" 5 + category = "Benchmarking"
+5
packages/gserde.toml
··· 1 + name = "gserde" 2 + description = "gleam codegen for serialization and deserialization" 3 + docs_url = "https://hexdocs.pm/gserde/" 4 + repo_url = "https://github.com/cdaringe/gserde" 5 + category = ""
+5
packages/gsv.toml
··· 1 + name = "gsv" 2 + description = "A simple csv parser and generator written in gleam " 3 + docs_url = "https://hexdocs.pm/gsv/" 4 + repo_url = "https://github.com/bcpeinhardt/gsv" 5 + category = "File Formats"
+5
packages/gts.toml
··· 1 + name = "gts" 2 + description = "Opinionated bindings to erlang's ets tables." 3 + docs_url = "https://hexdocs.pm/gts/" 4 + repo_url = "https://github.com/lunarmagpie/gts" 5 + category = "Erlang and OTP"
+5
packages/gxid.toml
··· 1 + name = "gxid" 2 + description = "A Gleam implementation of xid" 3 + docs_url = "https://hexdocs.pm/gxid/" 4 + repo_url = "https://github.com/defgenx/gxid" 5 + category = ""
+5
packages/halo.toml
··· 1 + name = "halo" 2 + description = "A Gleam project" 3 + docs_url = "https://hexdocs.pm/halo/" 4 + repo_url = "https://github.com/PROMETHIA-27/halo" 5 + category = ""
+5
packages/howdy.toml
··· 1 + name = "howdy" 2 + description = "A simple and easy to use API created on top of the Mist web server" 3 + docs_url = "https://hexdocs.pm/howdy/" 4 + repo_url = "https://github.com/mikeyjones/howdy" 5 + category = ""
+5
packages/howdy_authentication_cookies.toml
··· 1 + name = "howdy_authentication_cookies" 2 + description = "An authentication library using cookies designed to work with the Howdy web server." 3 + docs_url = "https://hexdocs.pm/howdy_authentication_cookies/" 4 + repo_url = "https://github.com/mikeyjones/project" 5 + category = ""
+5
packages/howdy_uuid.toml
··· 1 + name = "howdy_uuid" 2 + description = "A library for Gleam to parse UUIDs. This is a slightly modify version of gleam_uuid, to work with the latest version of gleam" 3 + docs_url = "https://hexdocs.pm/howdy_uuid/" 4 + repo_url = "https://github.com/mikeyjones/howdy_uuid" 5 + category = ""
+5
packages/htmb.toml
··· 1 + name = "htmb" 2 + description = "A tiny HTML builder for Gleam" 3 + docs_url = "https://hexdocs.pm/htmb/" 4 + repo_url = "https://github.com/lpil/htmb" 5 + category = "HTML"
+5
packages/htmgrrrl.toml
··· 1 + name = "htmgrrrl" 2 + description = "Gleam bindings to htmerl, the fast and memory efficient Erlang HTML SAX parser." 3 + docs_url = "https://hexdocs.pm/htmgrrrl/" 4 + repo_url = "https://github.com/lpil/htmgrrrl" 5 + category = "HTML"
+5
packages/htmz.toml
··· 1 + name = "htmz" 2 + description = "A Gleam library for generating HTML" 3 + docs_url = "https://hexdocs.pm/htmz/" 4 + repo_url = "https://github.com/finalclass/htmz" 5 + category = ""
+5
packages/hug.toml
··· 1 + name = "hug" 2 + description = "Helpful and pretty CLI messages" 3 + docs_url = "https://hexdocs.pm/hug/" 4 + repo_url = "https://github.com/brettkolodny/gleam-hug" 5 + category = "Text"
+5
packages/ids.toml
··· 1 + name = "ids" 2 + description = "Unique IDs for Gleam" 3 + docs_url = "https://hexdocs.pm/ids/" 4 + repo_url = "https://github.com/rvcas/ids" 5 + category = "Text"
+5
packages/iso_8859.toml
··· 1 + name = "iso_8859" 2 + description = "Gleam library to decode ISO/IEC 8859 binary data into native UTF-8 strings." 3 + docs_url = "https://hexdocs.pm/iso_8859/" 4 + repo_url = "https://github.com/richard-viney/iso_8859" 5 + category = "Text"
+5
packages/jbs.toml
··· 1 + name = "jbs" 2 + description = "a collection of helper functions that help to convert your data between json, bson, and struct" 3 + docs_url = "https://hexdocs.pm/jbs/" 4 + repo_url = "https://github.com/bamii/jbs" 5 + category = ""
+5
packages/jot.toml
··· 1 + name = "jot" 2 + description = "A parser for Djot, a markdown-like language" 3 + docs_url = "https://hexdocs.pm/jot/" 4 + repo_url = "https://github.com/lpil/jot" 5 + category = "Parsing"
+5
packages/juno.toml
··· 1 + name = "juno" 2 + description = "Flexible JSON decoding for Gleam" 3 + docs_url = "https://hexdocs.pm/juno/" 4 + repo_url = "https://github.com/massivefermion/juno" 5 + category = ""
+5
packages/justin.toml
··· 1 + name = "justin" 2 + description = "Convert between snake_case, camelCase, and other cases in Gleam" 3 + docs_url = "https://hexdocs.pm/justin/" 4 + repo_url = "https://github.com/lpil/justin" 5 + category = "Text"
+5
packages/lotta.toml
··· 1 + name = "lotta" 2 + description = "package with maybe a lotta javascript stuff to use with Gleam" 3 + docs_url = "https://hexdocs.pm/lotta/" 4 + repo_url = "https://github.com/Enderchief/lotta" 5 + category = ""
+5
packages/lustre.toml
··· 1 + name = "lustre" 2 + description = "An Elm-inspired framework for building web apps in Gleam!" 3 + docs_url = "https://hexdocs.pm/lustre/" 4 + repo_url = "https://github.com/lustre-labs/lustre" 5 + category = ""
+5
packages/lustre_animation.toml
··· 1 + name = "lustre_animation" 2 + description = "Animations for lustre, utilizing JS requestAnimationFrame and setTimeout" 3 + docs_url = "https://hexdocs.pm/lustre_animation/" 4 + repo_url = "https://git.chmeee.org/lustre_animation" 5 + category = ""
+5
packages/lustre_http.toml
··· 1 + name = "lustre_http" 2 + description = "HTTP requests from lustre" 3 + docs_url = "https://hexdocs.pm/lustre_http/" 4 + repo_url = "https://codeberg.org/kero/lustre_http" 5 + category = ""
+5
packages/lustre_ssg.toml
··· 1 + name = "lustre_ssg" 2 + description = "A simple static site generator for Lustre projects." 3 + docs_url = "https://hexdocs.pm/lustre_ssg/" 4 + repo_url = "https://github.com/lustre-labs/ssg" 5 + category = ""
+5
packages/lustre_ui.toml
··· 1 + name = "lustre_ui" 2 + description = "A collection of components and design tokens for building Lustre apps." 3 + docs_url = "https://hexdocs.pm/lustre_ui/" 4 + repo_url = "https://github.com/lustre-labs/lustre_ui" 5 + category = ""
+5
packages/lustre_virtual_list.toml
··· 1 + name = "lustre_virtual_list" 2 + description = "A virtual list componenet for lustre." 3 + docs_url = "https://hexdocs.pm/lustre_virtual_list/" 4 + repo_url = "https://github.com/schurhammer/lustre_virtual_list" 5 + category = ""
+5
packages/lustre_websocket.toml
··· 1 + name = "lustre_websocket" 2 + description = "Web Socket requests from lustre" 3 + docs_url = "https://hexdocs.pm/lustre_websocket/" 4 + repo_url = "https://codeberg.org/kero/lustre_websocket" 5 + category = ""
+5
packages/marceau.toml
··· 1 + name = "marceau" 2 + description = "A MIME types library for Gleam" 3 + docs_url = "https://hexdocs.pm/marceau/" 4 + repo_url = "https://github.com/lpil/marceau" 5 + category = "HTTP"
+5
packages/migrant.toml
··· 1 + name = "migrant" 2 + description = "[ALPHA] Database migrations for SQLite in Gleam" 3 + docs_url = "https://hexdocs.pm/migrant/" 4 + repo_url = "https://github.com/trulyao/migrant" 5 + category = ""
+5
packages/minigen.toml
··· 1 + name = "minigen" 2 + description = "Pure random data generation, appropriate for realistic simulations" 3 + docs_url = "https://hexdocs.pm/minigen/" 4 + repo_url = "https://github.com/mrdimosthenis/minigen" 5 + category = "Randomness"
+5
packages/mist.toml
··· 1 + name = "mist" 2 + description = "a misty Gleam web server" 3 + docs_url = "https://hexdocs.pm/mist/" 4 + repo_url = "https://github.com/rawhat/mist" 5 + category = "HTTP Servers"
+5
packages/mote.toml
··· 1 + name = "mote" 2 + description = "A Gleam project" 3 + docs_url = "https://hexdocs.pm/mote/" 4 + repo_url = "https://github.com/PROMETHIA-27/mote" 5 + category = ""
+5
packages/mug.toml
··· 1 + name = "mug" 2 + description = "A TCP client for Gleam!" 3 + docs_url = "https://hexdocs.pm/mug/" 4 + repo_url = "https://github.com/lpil/mug" 5 + category = "Networking"
+5
packages/mungo.toml
··· 1 + name = "mungo" 2 + description = "A MongoDB driver for Gleam (formerly gleam_mongo)" 3 + docs_url = "https://hexdocs.pm/mungo/" 4 + repo_url = "https://github.com/massivefermion/mungo" 5 + category = "Database"
+5
packages/nakai.toml
··· 1 + name = "nakai" 2 + description = "HTML generation for Gleam, on the server or anywhere else" 3 + docs_url = "https://hexdocs.pm/nakai/" 4 + repo_url = "https://github.com/nakaixo/nakai" 5 + category = ""
+5
packages/nerf.toml
··· 1 + name = "nerf" 2 + description = "Gleam bindings to gun, the HTTP/1.1, HTTP/2 and Websocket client" 3 + docs_url = "https://hexdocs.pm/nerf/" 4 + repo_url = "https://github.com/lpil/nerf" 5 + category = ""
+5
packages/nibble.toml
··· 1 + name = "nibble" 2 + description = "A string parsing library heavily inspired by elm/parser." 3 + docs_url = "https://hexdocs.pm/nibble/" 4 + repo_url = "https://github.com/hayleigh-dot-dev/gleam-nibble" 5 + category = "Parsing"
+5
packages/non_empty_list.toml
··· 1 + name = "non_empty_list" 2 + description = "Non-empty lists in Gleam" 3 + docs_url = "https://hexdocs.pm/non_empty_list/" 4 + repo_url = "https://github.com/giacomocavalieri/non_empty_list" 5 + category = "Data Structures"
+5
packages/outil.toml
··· 1 + name = "outil" 2 + description = "A Gleam library for writing command line tools." 3 + docs_url = "https://hexdocs.pm/outil/" 4 + repo_url = "https://github.com/fabjan/outil" 5 + category = ""
+5
packages/parser_gleam.toml
··· 1 + name = "parser_gleam" 2 + description = "A porting of parser-ts, purescript-eulalie to Gleam" 3 + docs_url = "https://hexdocs.pm/parser_gleam/" 4 + repo_url = "https://github.com/lucasavila00/parser_gleam" 5 + category = ""
+5
packages/party.toml
··· 1 + name = "party" 2 + description = "A little parser combinator library" 3 + docs_url = "https://hexdocs.pm/party/" 4 + repo_url = "https://github.com/RyanBrewer317/party" 5 + category = ""
+5
packages/pb_lite.toml
··· 1 + name = "pb_lite" 2 + description = "protobuf lite library" 3 + docs_url = "https://hexdocs.pm/pb_lite/" 4 + repo_url = "https://github.com/xenomorphtech/pb_lite" 5 + category = ""
+5
packages/phony.toml
··· 1 + name = "phony" 2 + description = "An international phone number validator" 3 + docs_url = "https://hexdocs.pm/phony/" 4 + repo_url = "https://github.com/massivefermion/phony" 5 + category = "Text"
+5
packages/plinth.toml
··· 1 + name = "plinth" 2 + description = "Bindings to Node.js and browser platform APIs" 3 + docs_url = "https://hexdocs.pm/plinth/" 4 + repo_url = "https://github.com/Crowdhailer/plinth" 5 + category = "JavaScript"
+5
packages/plunk.toml
··· 1 + name = "plunk" 2 + description = "Library for interacting with Plunk's API (https://useplunk.com) in Gleam - supports both the Erlang and Javascript targets" 3 + docs_url = "https://hexdocs.pm/plunk/" 4 + repo_url = "https://github.com/aosasona/plunk.gleam" 5 + category = ""
+5
packages/prequel.toml
··· 1 + name = "prequel" 2 + description = "A markup language to define ER schemas" 3 + docs_url = "https://hexdocs.pm/prequel/" 4 + repo_url = "https://github.com/giacomocavalieri/prequel" 5 + category = ""
+5
packages/prng.toml
··· 1 + name = "prng" 2 + description = "A Pure Random Number Generator" 3 + docs_url = "https://hexdocs.pm/prng/" 4 + repo_url = "https://github.com/giacomocavalieri/prng" 5 + category = "Randomness"
+5
packages/process_waiter.toml
··· 1 + name = "process_waiter" 2 + description = "Wait for Erlang processes to exit" 3 + docs_url = "https://hexdocs.pm/process_waiter/" 4 + repo_url = "https://github.com/lpil/process-waiter" 5 + category = "Erlang and OTP"
+5
packages/puddle.toml
··· 1 + name = "puddle" 2 + description = "A resource pool manager for gleam" 3 + docs_url = "https://hexdocs.pm/puddle/" 4 + repo_url = "https://github.com/massivefermion/puddle" 5 + category = "Erlang and OTP"
+5
packages/punycode.toml
··· 1 + name = "punycode" 2 + description = "Gleam implementation of punycode encoding and decoding" 3 + docs_url = "https://hexdocs.pm/punycode/" 4 + repo_url = "https://codeberg.org/sotolf/gleam_punycode/" 5 + category = "Text"
+5
packages/rad.toml
··· 1 + name = "rad" 2 + description = "A task runner for Gleam projects" 3 + docs_url = "https://hexdocs.pm/rad/" 4 + repo_url = "https://github.com/tynanbe/rad" 5 + category = "Command Line"
+5
packages/radiate.toml
··· 1 + name = "radiate" 2 + description = "Hot reloading while in development for Gleam" 3 + docs_url = "https://hexdocs.pm/radiate/" 4 + repo_url = "https://github.com/pta2002/gleam-radiate" 5 + category = ""
+5
packages/radish.toml
··· 1 + name = "radish" 2 + description = "A Redis client for Gleam" 3 + docs_url = "https://hexdocs.pm/radish/" 4 + repo_url = "https://github.com/massivefermion/radish" 5 + category = "Databases"
+5
packages/ranger.toml
··· 1 + name = "ranger" 2 + description = "create ranges over any type" 3 + docs_url = "https://hexdocs.pm/ranger/" 4 + repo_url = "https://github.com/massivefermion/ranger" 5 + category = ""
+5
packages/rank.toml
··· 1 + name = "rank" 2 + description = "Ordinals for numbers, e.g. 1st, 2nd, 3rd" 3 + docs_url = "https://hexdocs.pm/rank/" 4 + repo_url = "https://github.com/lpil/glance" 5 + category = "Text"
+5
packages/react_gleam.toml
··· 1 + name = "react_gleam" 2 + description = "React bindings for Gleam" 3 + docs_url = "https://hexdocs.pm/react_gleam/" 4 + repo_url = "https://github.com/brettkolodny/react-gleam" 5 + category = ""
+5
packages/ream.toml
··· 1 + name = "ream" 2 + description = "REAM is an event sourcing system" 3 + docs_url = "https://hexdocs.pm/ream/" 4 + repo_url = "https://github.com/altenwald/ream" 5 + category = ""
+5
packages/repeatedly.toml
··· 1 + name = "repeatedly" 2 + description = "Call a function repeatedly with a delay between each call" 3 + docs_url = "https://hexdocs.pm/repeatedly/" 4 + repo_url = "https://github.com/lpil/repeatedly" 5 + category = ""
+5
packages/rizzo.toml
··· 1 + name = "rizzo" 2 + description = "A basic rational number library for Gleam" 3 + docs_url = "https://hexdocs.pm/rizzo/" 4 + repo_url = "https://github.com/username/project" 5 + category = ""
+5
packages/runetracer.toml
··· 1 + name = "runetracer" 2 + description = "A gleam import sorter." 3 + docs_url = "https://hexdocs.pm/runetracer/" 4 + repo_url = "https://github.com/lunarmagpie/runetracer" 5 + category = ""
+5
packages/sequin.toml
··· 1 + name = "sequin" 2 + description = "A FABULOUS Gleam library" 3 + docs_url = "https://hexdocs.pm/sequin/" 4 + repo_url = "https://github.com/lpil/sequin" 5 + category = ""
+5
packages/shellout.toml
··· 1 + name = "shellout" 2 + description = "A Gleam library for cross-platform shell operations" 3 + docs_url = "https://hexdocs.pm/shellout/" 4 + repo_url = "https://github.com/tynanbe/shellout" 5 + category = "Command Line"
+5
packages/shimmer.toml
··· 1 + name = "shimmer" 2 + description = "A Gleam library for interacting with the Discord API" 3 + docs_url = "https://hexdocs.pm/shimmer/" 4 + repo_url = "https://github.com/HarryET/shimmer" 5 + category = ""
+5
packages/showtime.toml
··· 1 + name = "showtime" 2 + description = "A Gleam Testing Framework" 3 + docs_url = "https://hexdocs.pm/showtime/" 4 + repo_url = "https://github.com/JohnBjrk/showtime" 5 + category = ""
+5
packages/simplifile.toml
··· 1 + name = "simplifile" 2 + description = "Basic file operations that work on all targets" 3 + docs_url = "https://hexdocs.pm/simplifile/" 4 + repo_url = "https://github.com/bcpeinhardt/simplifile" 5 + category = "File System"
+5
packages/snag.toml
··· 1 + name = "snag" 2 + description = "A boilerplate-free ad-hoc error type" 3 + docs_url = "https://hexdocs.pm/snag/" 4 + repo_url = "https://github.com/gleam-experiments/snag" 5 + category = "Error Handling"
+5
packages/spinner.toml
··· 1 + name = "spinner" 2 + description = "Animated progress spinners for your console" 3 + docs_url = "https://hexdocs.pm/spinner/" 4 + repo_url = "https://github.com/lpil/spinner" 5 + category = "Command Line"
+5
packages/sprocket.toml
··· 1 + name = "sprocket" 2 + description = "A library for building live views and real-time server components in Gleam" 3 + docs_url = "https://hexdocs.pm/sprocket/" 4 + repo_url = "https://github.com/bitbldr/sprocket" 5 + category = ""
+5
packages/sqlight.toml
··· 1 + name = "sqlight" 2 + description = "Use SQLite from Gleam!" 3 + docs_url = "https://hexdocs.pm/sqlight/" 4 + repo_url = "https://github.com/lpil/sqlight" 5 + category = "Databases"
+5
packages/stego.toml
··· 1 + name = "stego" 2 + description = "Deno.serve for Gleam (" 3 + docs_url = "https://hexdocs.pm/stego/" 4 + repo_url = "https://github.com/aslilac/stego" 5 + category = ""
+5
packages/testbldr.toml
··· 1 + name = "testbldr" 2 + description = "A library for programatically building and running test cases" 3 + docs_url = "https://hexdocs.pm/testbldr/" 4 + repo_url = "https://github.com/bcpeinhardt/testbldr" 5 + category = ""
+5
packages/tom.toml
··· 1 + name = "tom" 2 + description = "A pure Gleam TOML parser!" 3 + docs_url = "https://hexdocs.pm/tom/" 4 + repo_url = "https://github.com/lpil/tom" 5 + category = "File Formats"
+5
packages/tote.toml
··· 1 + name = "tote" 2 + description = "Bags (or multisets) in Gleam" 3 + docs_url = "https://hexdocs.pm/tote/" 4 + repo_url = "https://github.com/giacomocavalieri/tote" 5 + category = "Data Structures"
+5
packages/transparent_http.toml
··· 1 + name = "transparent_http" 2 + description = "Simple HTTP client to power API wrappers written in Gleam" 3 + docs_url = "https://hexdocs.pm/transparent_http/" 4 + repo_url = "https://github.com/HarryET/transparent_http" 5 + category = ""
+5
packages/trie_again.toml
··· 1 + name = "trie_again" 2 + description = "Tries in Gleam" 3 + docs_url = "https://hexdocs.pm/trie_again/" 4 + repo_url = "https://github.com/giacomocavalieri/trie_again" 5 + category = "Data Structures"
+5
packages/varasto.toml
··· 1 + name = "varasto" 2 + description = "Typed access to LocalStorage/SessionStorage in Gleam" 3 + docs_url = "https://hexdocs.pm/varasto/" 4 + repo_url = "https://gitlab.com/Nicd/varasto" 5 + category = ""
+5
packages/wasmify.toml
··· 1 + name = "wasmify" 2 + description = "Load and use WebAssembly in your JavaScript compiled Gleam projects" 3 + docs_url = "https://hexdocs.pm/wasmify/" 4 + repo_url = "https://github.com/endercheif/wasmify" 5 + category = ""
+5
packages/wimp.toml
··· 1 + name = "wimp" 2 + description = "A Gleam client for the Pushover push notification API" 3 + docs_url = "https://hexdocs.pm/wimp/" 4 + repo_url = "https://github.com/lpil/wimp-pushover" 5 + category = "Push Notifications"
+5
packages/wisp.toml
··· 1 + name = "wisp" 2 + description = "A practical web framework for Gleam" 3 + docs_url = "https://hexdocs.pm/wisp/" 4 + repo_url = "https://github.com/gleam-wisp/wisp" 5 + category = "Web frameworks"
+5
packages/zeptomail.toml
··· 1 + name = "zeptomail" 2 + description = "A wrapper for ZeptoMail's transactional email API" 3 + docs_url = "https://hexdocs.pm/zeptomail/" 4 + repo_url = "https://github.com/lpil/zeptomail" 5 + category = "Email"
+262
src/awesome.gleam
··· 1 + import gleam/io 2 + import simplifile 3 + import gleam/http/request 4 + import gleam/httpc 5 + import gleam/option.{type Option, Some} 6 + import gleam/dynamic.{type Dynamic} 7 + import gleam/list 8 + import gleam/bool 9 + import gleam/string 10 + import gleam/dict 11 + import tom 12 + import sqlight 13 + 14 + const remote_database_url = "https://packages.gleam.run/packages.sqlite" 15 + 16 + const local_database_path = "database.sqlite" 17 + 18 + const packages_query = " 19 + select 20 + name 21 + , description 22 + , docs_url 23 + , json_extract(links, '$.Repository') as repo_url 24 + from packages 25 + " 26 + 27 + pub fn main() { 28 + io.println("Downloading package index database") 29 + let assert Ok(req) = request.to(remote_database_url) 30 + let req = request.set_body(req, <<>>) 31 + let assert Ok(resp) = httpc.send_bits(req) 32 + let assert 200 = resp.status 33 + let assert Ok(_) = simplifile.write_bits(local_database_path, resp.body) 34 + 35 + io.println("Writing new package config files") 36 + let assert Ok(db) = sqlight.open(local_database_path) 37 + let assert Ok(packages) = 38 + sqlight.query(packages_query, db, [], database_package_decoder) 39 + list.each(packages, write_config) 40 + 41 + io.println("Loading config files") 42 + 43 + let assert Ok(entries) = simplifile.read_directory("packages") 44 + let packages = 45 + entries 46 + |> list.map(read_config) 47 + |> list.filter(fn(p) { p.category != "" }) 48 + |> list.group(fn(p) { p.category }) 49 + |> dict.map_values(fn(_, packages) { 50 + list.sort(packages, fn(a, b) { string.compare(a.name, b.name) }) 51 + }) 52 + |> dict.to_list 53 + |> list.sort(fn(a, b) { string.compare(a.0, b.0) }) 54 + 55 + let markdown = "# Awesome Gleam 56 + 57 + For a full list of packages check out [**the Gleam package index**](https://packages.gleam.run/). 58 + 59 + Have a Gleam project to share with the world? Run `gleam run`, assign a 60 + category for it in `packages/NAME.toml`, and run `gleam run` again. 61 + 62 + Looking for something to build? Check out [the suggestions list][suggestions]. 63 + 64 + [suggestions]: https://github.com/gleam-lang/awesome-gleam/issues/34 65 + 66 + - [Packages](#packages) 67 + " <> string.join(list.map(packages, contents_list_entry), "\n") <> " 68 + - [Templates](#templates) 69 + - [Projects](#projects) 70 + - [Compilers](#compilers) 71 + - [Web applications](#web-applications) 72 + - [Tools](#tools) 73 + - [Editor support](#editor-support) 74 + - [Resources](#resources) 75 + - [Websites](#websites) 76 + - [Courses](#courses) 77 + - [Social Media](#social-media) 78 + 79 + # Packages 80 + 81 + " <> string.join(list.map(packages, category_section), "\n\n") <> " 82 + 83 + # Projects 84 + 85 + ## Compilers 86 + 87 + Compilers for Gleam and compilers written in Gleam. 88 + 89 + - [gleam-lang/gleam](https://github.com/gleam-lang/gleam) - The Gleam compiler. 90 + - [gleam-lang/example-lisp-interpreter](https://github.com/gleam-lang/example-lisp-interpreter/) - A toy Lisp interpreter in Gleam. 91 + 92 + ## Web applications 93 + 94 + Web applications written in Gleam. 95 + 96 + - [gleam-lang/example-todomvc](https://github.com/gleam-lang/example-url-shortener) - A serverside only implementation of Todo MVC written in Gleam! 97 + - [gleam-lang/example-echo-server](https://github.com/gleam-lang/example-echo-server) - An example Gleam web application. 98 + - [gleam-lang/packages](https://github.com/gleam-lang/packages) - The Gleam package index website. 99 + 100 + # Tools 101 + 102 + - [tynanbe/rad](https://github.com/tynanbe/rad) - A flexible task runner companion for the Gleam build manager. 103 + - [inoas/glychee](https://github.com/inoas/glychee) - A simple Gleam benchmark runner which wraps Benchee for the heavy lifting. 104 + 105 + ## Editor support 106 + 107 + - [gleam-lang/gleam.vim](https://github.com/gleam-lang/gleam.vim) - Gleam support for Vim/Neovim. 108 + - [gleam-lang/gleam-mode](https://github.com/gleam-lang/gleam-mode) - An emacs major mode for the Gleam programming language. 109 + - [gleam-lang/vscode-gleam](https://github.com/gleam-lang/vscode-gleam) - Gleam support for VS Code. 110 + - [digitalcora/sublime-text-gleam](https://github.com/digitalcora/sublime-text-gleam) - Gleam support for Sublime Text. 111 + - [sbdchd/neoformat](https://github.com/sbdchd/neoformat) - A Vim/Neovim plugin for formatting code with support for `gleam format`. 112 + - [itsgreggreg/language-gleam](https://github.com/itsgreggreg/language-gleam) - Gleam language support in Atom. 113 + - [DannyLettuce/gleam_gedit](https://github.com/DannyLettuce/gleam_gedit) - Gleam syntax support for Gedit (and other GtkSourceView editors). 114 + 115 + # Resources 116 + 117 + ## Websites 118 + 119 + Websites with Gleam related content. 120 + 121 + - [gleam.run](https://gleam.run) - Gleam's website. 122 + - [tour.gleam.run](https://gleam.run) - Gleam's interactive tour and turorial. 123 + 124 + ## Courses 125 + 126 + - [Exercism's Gleam track](https://github.com/exercism/gleam/) - Crowd-sourced code mentorship. Practice having thoughtful conversations about code. 127 + - [tanklesxl/gladvent](https://github.com/tanklesxl/gladvent) - An `Advent of Code` runner for Gleam, targeting Erlang. 128 + 129 + ## Talks 130 + 131 + - [Introduction to Gleam](https://fosdem.org/2023/schedule/event/beam_gleam_intro/) - [Harry Bairstow](https://github.com/harryet) 132 + - [Distributed music programming with Gleam, BEAM, and the Web Audio API](https://fosdem.org/2023/schedule/event/beam_distributed_music_programming_gleam/) - [Hayleigh Thompson](https://github.com/hayleigh-dot-dev) 133 + - [I learned Gleam in a week. Here's how it went](https://www.youtube.com/watch?v=-8OIK4RIUsg) - [Theo Harris](https://github.com/Theosaurus-Rex) 134 + 135 + ## Social Media 136 + 137 + ### Twitter 138 + 139 + * [#gleamlang hashtag](https://twitter.com/search?q=%23gleamlang&src=typed_query) 140 + * [@gleamlang](https://twitter.com/gleamlang) - The official twitter account. 141 + * [@louispilfold](https://twitter.com/louispilfold) - The creator of Gleam. 142 + 143 + ### Reddit 144 + 145 + * [r/gleamlang](https://reddit.com/r/gleamlang/) 146 + " 147 + 148 + io.println("Writing REAME") 149 + let assert Ok(_) = simplifile.write("README.md", markdown) 150 + 151 + io.println("Done! ✨") 152 + } 153 + 154 + fn category_section(pair: #(String, List(ConfigPackage))) -> String { 155 + let #(name, packages) = pair 156 + 157 + "## " <> name <> " 158 + 159 + " <> string.join(list.map(packages, package_entry), "\n") 160 + } 161 + 162 + fn package_entry(package: ConfigPackage) -> String { 163 + "- [" 164 + <> package.name 165 + <> "](" 166 + <> package.repo_url 167 + <> ") [(docs)](" 168 + <> package.docs_url 169 + <> ") - " 170 + <> package.description 171 + } 172 + 173 + fn contents_list_entry(pair: #(String, _)) -> String { 174 + let name = pair.0 175 + let slug = string.replace(string.lowercase(name), " ", "-") 176 + " - [" <> name <> "](#" <> slug <> ")" 177 + } 178 + 179 + fn read_config(entry: String) -> ConfigPackage { 180 + let assert Ok(toml) = simplifile.read("packages/" <> entry) 181 + let assert Ok(doc) = tom.parse(toml) 182 + 183 + let assert Ok(name) = tom.get_string(doc, ["name"]) 184 + let assert Ok(description) = tom.get_string(doc, ["description"]) 185 + let assert Ok(docs_url) = tom.get_string(doc, ["docs_url"]) 186 + let assert Ok(repo_url) = tom.get_string(doc, ["repo_url"]) 187 + let assert Ok(category) = tom.get_string(doc, ["category"]) 188 + 189 + ConfigPackage( 190 + name: name, 191 + description: description, 192 + docs_url: docs_url, 193 + repo_url: repo_url, 194 + category: category, 195 + ) 196 + } 197 + 198 + fn write_config(package: DatabasePackage) -> Nil { 199 + let exists = simplifile.is_file("packages/" <> package.name <> ".toml") 200 + use <- bool.guard(when: exists, return: Nil) 201 + 202 + case package { 203 + DatabasePackage( 204 + name: name, 205 + description: description, 206 + docs_url: Some(docs_url), 207 + repo_url: Some(repo_url), 208 + ) -> { 209 + let toml = new_toml(name, description, docs_url, repo_url) 210 + let assert Ok(_) = simplifile.write("packages/" <> name <> ".toml", toml) 211 + Nil 212 + } 213 + _ -> Nil 214 + } 215 + } 216 + 217 + fn new_toml( 218 + name: String, 219 + description: String, 220 + docs_url: String, 221 + repo_url: String, 222 + ) -> String { 223 + "name = \"" <> name <> "\" 224 + description = \"" <> description <> "\" 225 + docs_url = \"" <> docs_url <> "\" 226 + repo_url = \"" <> repo_url <> "\" 227 + category = \"\" 228 + " 229 + } 230 + 231 + pub type ConfigPackage { 232 + ConfigPackage( 233 + name: String, 234 + description: String, 235 + docs_url: String, 236 + repo_url: String, 237 + category: String, 238 + ) 239 + } 240 + 241 + pub type DatabasePackage { 242 + DatabasePackage( 243 + name: String, 244 + description: String, 245 + docs_url: Option(String), 246 + repo_url: Option(String), 247 + ) 248 + } 249 + 250 + fn database_package_decoder( 251 + data: Dynamic, 252 + ) -> Result(DatabasePackage, dynamic.DecodeErrors) { 253 + let decoder = 254 + dynamic.decode4( 255 + DatabasePackage, 256 + dynamic.element(0, dynamic.string), 257 + dynamic.element(1, dynamic.string), 258 + dynamic.element(2, dynamic.optional(dynamic.string)), 259 + dynamic.element(3, dynamic.optional(dynamic.string)), 260 + ) 261 + decoder(data) 262 + }
+12
test/awesome_test.gleam
··· 1 + import gleeunit 2 + import gleeunit/should 3 + 4 + pub fn main() { 5 + gleeunit.main() 6 + } 7 + 8 + // gleeunit test functions end in `_test` 9 + pub fn hello_world_test() { 10 + 1 11 + |> should.equal(1) 12 + }