├── .github ├── ISSUE_TEMPLATE │ └── bug.yaml ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── auto-first-comment-pr.yaml │ ├── awesome-list.yaml │ └── check-spammy-issues.yaml ├── CONTRIBUTING.md ├── COVERAGE.md ├── LICENSE ├── MAINTAINERS └── README.md /.github/ISSUE_TEMPLATE/bug.yaml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: Report a bug encountered 3 | labels: ["bug", "pending-review"] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | Thank you very much for opening a bug report at awesome-templ. 9 | 10 | before opening the issue we recommend that you read our [contribution guide](https://github.com/templ-go/awesome-templ/blob/main/CONTRIBUTING.md), there we talk about how you can contribute to awesome-templ. 11 | - type: checkboxes 12 | id: confirm-search 13 | attributes: 14 | label: Search first 15 | description: Please search [existing issues](https://github.com/templ-go/awesome-templ/issues) before reporting. 16 | options: 17 | - label: I searched and no similar issues were found 18 | required: true 19 | - type: textarea 20 | id: problem 21 | attributes: 22 | label: What Happened? 23 | description: | 24 | Please provide as much info as possible. Not doing so may result in your bug not being addressed in a timely manner. 25 | validations: 26 | required: true 27 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## We want to ensure high quality of the packages. Make sure that you've checked the boxes below before sending a pull request. 2 | 3 | - [ ] I have read the [Contribution Guidelines](CONTRIBUTING.md#contribution-guidelines) 4 | - [ ] I have read the [Maintainers Note](CONTRIBUTING.md#maintainers) 5 | - [ ] I have read the [Quality Standards](CONTRIBUTING.md#quality-standards) 6 | 7 | _Not every repository (project) will require every option, but most projects should. Check the Contribution Guidelines for details._ 8 | 9 | - [ ] The repo documentation has a pkg.go.dev link. 10 | - [ ] The repo documentation has a coverage service link. 11 | - [ ] The repo documentation has a goreportcard link. 12 | - [ ] The repo has a version-numbered release and a go.mod file. 13 | - [ ] The repo has a continuous integration process that automatically runs tests that must pass before new pull requests are merged. 14 | - [ ] Continuous integration is used to attempt to catch issues prior to releasing this package to end-users. 15 | 16 | ## Please provide some links to your package to ease the review 17 | 18 | - [ ] forge link (github.com, gitlab.com, etc): 19 | - [ ] pkg.go.dev: 20 | - [ ] goreportcard.com: 21 | - [ ] coverage service link ([codecov](https://codecov.io/), [coveralls](https://coveralls.io/), etc.): 22 | 23 | ## Pull Request content 24 | 25 | - [ ] The package has been added to the list as the last element of its category 26 | - [ ] The package has an appropriate description with correct grammar. 27 | - [ ] As far as I know, the package has not been listed here before. 28 | 29 | ## Category quality 30 | 31 | Packages added a long time ago might not meet the current guidelines anymore. It would be very helpful if you could check 3-5 packages above and below your submission to ensure that they also still meet the Quality Standards. 32 | 33 | Please delete one of the following lines: 34 | 35 | - [ ] The packages around my addition still meet the Quality Standards. 36 | - [ ] I removed the following packages around my addition: (please give a short reason for each removal) 37 | 38 | Thanks for your PR, you're awesome! :sunglasses: 39 | -------------------------------------------------------------------------------- /.github/workflows/auto-first-comment-pr.yaml: -------------------------------------------------------------------------------- 1 | name: First comment in new pull request 2 | 3 | on: 4 | pull_request_target: 5 | types: [opened] 6 | 7 | jobs: 8 | commentCreated: 9 | runs-on: ubuntu-latest 10 | permissions: 11 | pull-requests: write 12 | issues: write 13 | environment: action 14 | env: 15 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 16 | steps: 17 | - name: first comment 18 | uses: peter-evans/create-or-update-comment@v3 19 | with: 20 | token: ${{ secrets.GITHUB_TOKEN }} 21 | issue-number: ${{ github.event.pull_request.number }} 22 | body: | 23 | Thank you for contributing to [awesome-templ](https://github.com/templ-go/awesome-templ). We will review your contribution as soon as possible. 24 | 25 | Make sure you add the links in the body of the pull request that are requested in the [contribution guide](https://github.com/templ-go/awesome-templ/blob/main/CONTRIBUTING.md): 26 | - repo link 27 | - pkg.go.dev 28 | - goreportcard.com 29 | - coverage 30 | 31 | > Your project is under review. It may take a few days to be approved. 32 | -------------------------------------------------------------------------------- /.github/workflows/awesome-list.yaml: -------------------------------------------------------------------------------- 1 | name: Awesome List Linter 2 | on: 3 | pull_request: 4 | branches: [main] 5 | jobs: 6 | Awesome_Lint: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v2 10 | with: 11 | fetch-depth: 0 12 | - run: npx awesome-lint 13 | -------------------------------------------------------------------------------- /.github/workflows/check-spammy-issues.yaml: -------------------------------------------------------------------------------- 1 | name: Issues spammy check 2 | on: 3 | issues: 4 | types: [opened] 5 | 6 | jobs: 7 | mark-as-spam: 8 | name: Remove issues with spammy 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: close issue 12 | uses: balevine/mark-as-spam@v1.0 13 | env: 14 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 15 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | > Please be aware that we want to accept your contribution, but we have **some rules to keep the minimum quality** of the packages listed here. All reviews are **not personal feedback**, even if you are a _developer reviewing your contribution_. **Sorry, if we can't meet your expectations; we do our best**. 4 | 5 | - **To add, remove, or change things on the list:** Submit a pull request 6 | 7 | [awesome-templ](https://github.com/templ-go/awesome-templ) is a curated list of high-quality, actively maintained [templ](https://github.com/a-h/templ) packages. Specifically we want to showcase projects that use or integrate well with templ, more general go projects can be found in the repo that inspired us [awesome-templ](https://github.com/avelino/awesome-templ). 8 | 9 | Please contribute links to packages/projects you have used or are familiar with. This will help ensure high-quality entries. 10 | 11 | > the maintainers do not work full-time on the project, meaning that we do not have a set periodicity for reviewing contributions - rest assured that we will do our best to review and eventually accept contributions 12 | 13 | ## Quality standards 14 | 15 | To be on the list, project repositories should adhere to the following quality standards. 16 | (https://goreportcard.com/report/github.com/ **github_user** / **github_repo**): 17 | 18 | - have an **open source license**, [see list of allowed licenses](https://opensource.org/licenses/alphabetical); 19 | - function as documented and expected; 20 | - be generally useful to the wider community of Go programmers; 21 | - be actively maintained with: 22 | - regular, recent commits; 23 | - or, for finished projects, issues and pull requests are responded to generally within ~2 weeks; 24 | - be stable or progressing toward stable; 25 | - be thoroughly documented (README, pkg.go.dev doc comments, etc.) in the English language, so everyone is able to understand the project's intention and how it works. All public functions and types should have a Go-style documentation header; 26 | - if the library/program is testable, then [coverage](COVERAGE.md) should be >= 80%. (**Note**: the tests will be reviewed too. We will check your coverage manually if your package's coverage is just a benchmark result); 27 | - have at least one official version-numbered release that allows go.mod files to list the file by version number of the form vX.X.X. 28 | 29 | ## Preparing for review 30 | 31 | Projects listed must have the following in their documentation. When submitting, you will be asked 32 | to provide them. 33 | 34 | - A link to the project's pkg.go.dev page 35 | - A link to the project's Go Report Card report 36 | - A link to a code [coverage](COVERAGE.md) report 37 | 38 | One way to accomplish the above is to add badges to your project's README file. 39 | 40 | - Use https://pkg.go.dev/badge/ to create the pkg.go.dev link. 41 | - Go to https://goreportcard.com/ to generate a Go Report Card report, then click on the report badge in the upper-right corner to see details on how to add the badge to your README. 42 | - Codecov, coveralls, and gocover all offer ways to create badges for code coverage reports. Another option is to generate a badge as part of a continuous integration process. See [Code Coverage](COVERAGE.md) for an example. 43 | 44 | ## How to add an item to the list 45 | 46 | Open a pull request against the README.md document that adds the repository to the list. 47 | 48 | - The pull request should add one and only one item to the list. 49 | - The added item should be in alphabetical order within its category. 50 | - The link should be the name of the package or project. 51 | - Descriptions should be clear, concise, and non-promotional. 52 | - Descriptions should follow the link on the same line and end with a punctuation mark. 53 | - Remember to put a period `.` at the end of the project description. 54 | 55 | Fill out the template in your PR with the links asked for. 56 | 57 | ## Maintenance expectations for projects listed here 58 | 59 | To prevent removal from awesome-templ, your project must maintain the following quality standards: 60 | 61 | - Development should be ongoing and maintain code quality. Official releases should be at least once a year if the project is ongoing. 62 | - Or, if development has halted because the project is mature and stable, that can be demonstrated by having no bug reports in the Issues list that are older than 6 months. 63 | - All links to quality reports should be to the most recent official release or current ongoing development. 64 | 65 | Highly recommended but not required: 66 | 67 | - A continuous integration process to be part of the ongoing development process 68 | - That the project uses a pull-request process, and the owners do not commit directly to the repository 69 | - That the pull-request process requires the continuous-integration tests to pass before a pull request can be merged 70 | 71 | ## How to remove an item from the list 72 | 73 | - Open a pull request that deletes the line of the project in question. 74 | - Delete the submission template and substitute a description of which criteria the project is not meeting. It should be a combination of the following. 75 | - The project has not made an official release within the last year and has open issues. 76 | - The project is not responding to bug reports issued within 6 months of submission. 77 | - The project is not meeting quality standards as indicated by the Go Report Card or Code Coverage tests. 78 | - The quality standard links have been removed from the documentation. 79 | - The project is no longer open-sourced. 80 | - The project is incompatible with any Go version issued within the last year (there is hopefully an open PR about this at the project). 81 | 82 | If the project is hosted on GitHub, include a link to the project's submitter and/or author so 83 | that they will be notified of the desire to remove the project and have an opportunity to respond. 84 | The link should be of the form @githubID. 85 | 86 | If the project is not hosted on GitHub, open an issue at the project in question's repository linking to the PR 87 | and stating the following: 88 | 89 | > This project is currently listed at awesome-templ at https://github.com/templ-go/awesome-templ. 90 | > However, it appears that the project is not maintaining the quality standards required to continue to be listed at the awesome-templ project. 91 | > This project is scheduled to be removed within 2 weeks of this posting. To continue to be listed at awesome-templ, please respond at: 92 | > -- link to above PR -- 93 | 94 | Then, comment on your PR at awesome-templ with a link to the removal issue at the project. 95 | 96 | ## Maintainers 97 | 98 | To make sure every PR is checked, we have [team maintainers](MAINTAINERS). Every PR MUST be reviewed by at least one maintainer before it can get merged. 99 | 100 | The maintainers will review your PR and notify you and tag it in case any 101 | information is still missing. They will wait 15 days for your interaction, after 102 | that the PR will be closed. 103 | 104 | ## Reporting issues 105 | 106 | Please open an issue if you would like to discuss anything that could be improved or have suggestions for making the list a more valuable resource. We realize sometimes packages fall into abandonment or have breaking builds for extended periods of time, so if you see that, feel free to change its listing, or please let us know. We also realize that sometimes projects are just going through transitions or are more experimental in nature. These can still be cool, but we can indicate them as transitory or experimental. 107 | 108 | Removal changes will not be applied until they have been pending for a minimum of 1 week (7 days). This grace window benefits projects that may be going through a temporary transition, but are otherwise worthy of being on the list. 109 | 110 | Thanks, everyone! 111 | 112 | ## How decisions are made 113 | 114 | The official group of maintainers has the final decision on what PRs are accepted. Discussions are made openly in issues. Decisions are made by consensus. 115 | 116 | ## How to become a contributor? 117 | 118 | awesome-templ is an open source project (created and maintained by the community), we are always open to new people to help us review the contributions (pull requests), **you don't need permission** or _name on the maintainers list_ to review a contribution and mark it as **LGTM**. 119 | 120 | > Before you do anything, please read [this topic](#quality-standards) very carefully. 121 | 122 | Now that you've read it, let's go! 123 | 124 | Go into the pull requests (PR) and look at the following aspects: 125 | 126 | - **shared links in the body of the PR:** they need to be valid and follow the quality specified above 127 | - **check that the link added to `README.md`** is the same as the link to the repository mentioned in the body of the PR. 128 | - **is it in the correct category?** 129 | 130 | If everything is OK, mark the PR as approved, [read this documentation](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request#starting-a-review) on how to do it. 131 | 132 | **Welcome to awesome-templ!** 133 | 134 | ## How to become an ~~"official maintainer"~~? 135 | 136 | We don't give this name to people who are allowed to accept the PR. 137 | 138 | If you are a person who is constantly active in reviewing PR and contributing to the project, you will be invited by a maintainer. 139 | 140 | > **remember:** if you stop contributing with awesome-templ for a long time, you will automatically be removed from the list of maintainers. 141 | -------------------------------------------------------------------------------- /COVERAGE.md: -------------------------------------------------------------------------------- 1 | # Code Coverage 2 | 3 | While we recommend using one of the free websites available for monitoring code coverage during your continuous integration process, below is an example of how you can incorporate code coverage during the continuous integration process provided by GitHub actions and generate a code coverage report without one of those services. 4 | 5 | This `yaml` file will run tests on multiple system configurations, but will produce a code coverage report on only one of those. It will then create a code coverage badge and add it to the README file. 6 | 7 | This file should be put in the `.github/workflows` directory of your repo: 8 | 9 | ```yaml 10 | name: Go # The name of the workflow that will appear on Github 11 | 12 | on: 13 | push: 14 | branches: [main] 15 | pull_request: 16 | branches: [main] 17 | # Allows you to run this workflow manually from the Actions tab 18 | workflow_dispatch: 19 | 20 | jobs: 21 | build: 22 | runs-on: ${{ matrix.os }} 23 | strategy: 24 | matrix: 25 | os: [ubuntu-latest, windows-latest] 26 | go: [1.16, 1.17] 27 | steps: 28 | - uses: actions/checkout@v2 29 | 30 | - name: Set up Go 31 | uses: actions/setup-go@v2 32 | with: 33 | go-version: ${{ matrix.go }} 34 | 35 | - name: Build 36 | run: go install 37 | 38 | - name: Test 39 | run: | 40 | go test -v -cover ./... -coverprofile coverage.out -coverpkg ./... 41 | go tool cover -func coverage.out -o coverage.out # Replaces coverage.out with the analysis of coverage.out 42 | 43 | - name: Go Coverage Badge 44 | uses: tj-actions/coverage-badge-go@v1 45 | if: ${{ runner.os == 'Linux' && matrix.go == '1.17' }} # Runs this on only one of the ci builds. 46 | with: 47 | green: 80 48 | filename: coverage.out 49 | 50 | - uses: stefanzweifel/git-auto-commit-action@v4 51 | id: auto-commit-action 52 | with: 53 | commit_message: Apply Code Coverage Badge 54 | skip_fetch: true 55 | skip_checkout: true 56 | file_pattern: ./README.md 57 | 58 | - name: Push Changes 59 | if: steps.auto-commit-action.outputs.changes_detected == 'true' 60 | uses: ad-m/github-push-action@master 61 | with: 62 | github_token: ${{ github.token }} 63 | branch: ${{ github.ref }} 64 | ``` 65 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). 6 | 7 | Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. 8 | 9 | For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. 10 | 11 | Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: 12 | i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; 13 | 14 | ii. moral rights retained by the original author(s) and/or performer(s); 15 | 16 | iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; 17 | 18 | iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; 19 | 20 | v. rights protecting the extraction, dissemination, use and reuse of data in a Work; 21 | 22 | vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and 23 | 24 | vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. 25 | 26 | Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. 27 | 28 | Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. 29 | 30 | Limitations and Disclaimers. 31 | 32 | a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. 33 | 34 | b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. 35 | 36 | c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. 37 | 38 | d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. 39 | 40 | For more information, please see https://creativecommons.org/publicdomain/zero/1.0 41 | -------------------------------------------------------------------------------- /MAINTAINERS: -------------------------------------------------------------------------------- 1 | Oudwin (@Oudwins) 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Templ 2 | 3 | [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) 4 | 5 | > A curated list of awesome [templ](https://github.com/a-h/templ) related component libraries, frameworks, libraries, tools and projects. Specifically we want to showcase projects that use or integrate well with templ, more general go projects can be found in the repo that inspired us [awesome-go](https://github.com/avelino/awesome-go). 6 | 7 | **Contributing:** 8 | 9 | Please take a quick gander at the [contribution guidelines](./CONTRIBUTING.md) first. 10 | 11 | > _If you see a package or project here that is no longer maintained or is not a good fit, please submit a pull request to improve this file. Thank you!_ 12 | 13 | ## Contents 14 | 15 | - [Awesome Templ](#awesome-templ) 16 | - [Contents](#contents) 17 | - [Component Libraries](#component-libraries) 18 | - [CSS](#css) 19 | - [Example Applications](#example-applications) 20 | - [SEO](#seo) 21 | - [Translation](#translation) 22 | - [Validation](#validation) 23 | - [Acknowledgements](#acknowledgements) 24 | 25 | **[⬆ back to top](#contents)** 26 | 27 | ## Development Tools 28 | 29 | - [templier](https://github.com/romshark/templier) - A Go Templ web frontend development environment that automatically rebuilds the server and reloads the tab. 30 | 31 | ## Component Libraries 32 | 33 | - [templUI](https://github.com/axzilla/templui) - The UI Kit for templ 34 | 35 | ## CSS 36 | 37 | - [tailwind-merge-go](https://github.com/Oudwins/tailwind-merge-go) - Merge Tailwind CSS classes without style conflicts in Go. Reimplementation in Golang of [tailwind-merge](https://github.com/gjtorikian/tailwind_merge). 38 | 39 | ## Example Applications 40 | 41 | - [Go, Echo, Templ Todo App](https://github.com/emarifer/go-echo-templ-htmx) - A simple todo app built with Go, Echo, and Templ that uses HTMX for client-side interactivity. 42 | - [Islands Demo](https://github.com/romshark/demo-islands/) - An advanced islands of interactivity architecture example built with Go, Templ, HTMX and Shoelace WebComponents. 43 | 44 | ## SEO 45 | 46 | - [teseo](https://github.com/indaco/teseo/) - Go templ components for SEO. 47 | 48 | ## Translation 49 | 50 | - [ctxi18n](https://github.com/invopop/ctxi18n/) - Context aware i18n with a short and concise API, pluralization, interpolation, and `fs.FS` support. YAML locale definitions are based on [Rails i18n](https://guides.rubyonrails.org/i18n.html). 51 | 52 | ## UI Components 53 | 54 | - [goaster](https://github.com/indaco/goaster) - A configurable and themeable toast notification component for Go web applications. 55 | 56 | ## Validation 57 | 58 | - [Zog](https://github.com/Oudwins/zog) - A [Zod](https://github.com/colinhacks/zod) inspired schema builder for runtime value parsing and validation. 59 | 60 | ## Acknowledgements 61 | 62 | - @a-H for creating the awesome templ project 63 | - awesome-go for inspiring us to create this repo & for inspiration regarding quality, contributing guidelines, etc. 64 | --------------------------------------------------------------------------------