diff --git a/.github/tpl.md b/.github/README-template.j2 similarity index 60% rename from .github/tpl.md rename to .github/README-template.j2 index 85fe672..67942e2 100644 --- a/.github/tpl.md +++ b/.github/README-template.j2 @@ -7,10 +7,13 @@ If you are a maintainer of open-source projects, add the label `first-timers-onl If you are not a programmer but would like to contribute, check out the [Awesome for non-programmers](https://github.com/szabgab/awesome-for-non-programmers) list. ## Table of Contents: - -<% toc %> - -<% content %> +{% for category in categories %} +- [{{ category.title }}](#{{ category.link_id }}){% endfor %} +{% for category in categories %} +## {{ category.title }} +{% for entry in category.entries %} +- [{{ entry.name }}]({{ entry.link }}) _(label: {% if entry.label is defined %}{{ entry.label }}{% else %}n/a{% endif %})_
{{ entry.description }}{% endfor %} +{% endfor %} ## Contribute @@ -18,10 +21,11 @@ Contributions are welcome! See the [contributing guidelines](CONTRIBUTING.md). ## Thanks to GitHub Sponsors -<% sponsors %> +{% for sponsor in sponsors %}{% if loop.index != 1 and (loop.index - 1) % 6 == 0 %}{% endif %}{% endfor %}

{{ sponsor.name }}
## License [![CC0](http://i.creativecommons.org/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/) To the extent possible under law, the author has waived all copyrights and related or neighboring rights to this work. + diff --git a/.github/scripts/build.js b/.github/scripts/build.js deleted file mode 100644 index cb9d433..0000000 --- a/.github/scripts/build.js +++ /dev/null @@ -1,87 +0,0 @@ -const fs = require('fs'); -const data = require('../../data.json'); - -const TPL_FILE = './.github/tpl.md'; -const TARGET = './README.md'; - -const tpl = getTemplate(TPL_FILE); - -const categories = {}; - -data.repositories.sort((a, b) => { - const nameA = a.name.toUpperCase(); - const nameB = b.name.toUpperCase(); - if (nameA < nameB) { - return -1; - } - if (nameA > nameB) { - return 1; - } - return 0; -}).forEach(repo => - repo.technologies.forEach(tech => { - if (!categories.hasOwnProperty(tech)) { - categories[tech] = []; - } - categories[tech].push(repo); - })) - -const sortedCategories = Object.fromEntries(Object.entries(categories).sort((a, b) => { - const nameA = a[0].toUpperCase(); - const nameB = b[0].toUpperCase(); - if (nameA < nameB) { - return -1; - } - if (nameA > nameB) { - return 1; - } - return 0; -})); - -const toc = Object.keys(sortedCategories) - .map(t => `- [${t}](#${data.technologies[t] || t.toLowerCase()})`) - .join('\n'); - -const content = Object.keys(sortedCategories) - .map(category => { - const repos = sortedCategories[category].map(repo => `- [${repo.name}](${repo.link}) _(label: ${repo.label || 'n/a'})_
${repo.description}`).join('\n') - return `## ${category}\n\n${repos}\n` - }).join('\n'); - -const sponsorList = data.sponsors.map(sponsor => `
${sponsor.name}
`) -const sponsorRows = Math.ceil(sponsorList.length / 6); - -let sponsors = ''; - -for (let i = 1; i <= sponsorRows; i++) { - sponsors += ''; - for(let j = 0; j < 6; j++) { - if (sponsorList.length > i*j) { - sponsors += sponsorList[i*j]; - } else if (sponsorRows > 1) { - sponsors += '' - } - } - sponsors += ''; -} - -sponsors = `${sponsors}
` - -saveFile(TARGET, render(tpl, { toc, content, sponsors })); - -function getTemplate(file) { - return fs.readFileSync(file).toString(); -} - -function saveFile(file, contents) { - return fs.writeFileSync(file, contents); -} - -function render(template, variables) { - Object - .entries(variables) - .forEach(([key, value]) => { - template = template.replace(new RegExp(`<% ${key} %>`, 'g'), value); - }); - return template; -} diff --git a/.github/scripts/render-readme.py b/.github/scripts/render-readme.py new file mode 100755 index 0000000..94aa30a --- /dev/null +++ b/.github/scripts/render-readme.py @@ -0,0 +1,40 @@ +from jinja2 import Environment, FileSystemLoader +import json + +DATAFILE = "./data.json" +TEMPLATEPATH = "./.github/" +TEMPLATEFILE = "README-template.j2" +TARGETFILE = "./README.md" + +technologies = {} + +with open(DATAFILE, 'r') as datafile: + data = json.loads(datafile.read()) + +for technology in data["technologies"]: + technologies[technology] = {"link_id": data["technologies"][technology], "entries": []} + +for repository in data["repositories"]: + repo_technologies = repository["technologies"] + for repo_technology in repo_technologies: + if not technologies.get(repo_technology, False): + technologies[repo_technology] = {"link_id": repo_technology.lower(), "entries": []} + technologies[repo_technology]["entries"].append(repository) + +env = Environment(loader = FileSystemLoader(TEMPLATEPATH)) + +template = env.get_template(TEMPLATEFILE) + +categories = [] +for key, value in zip(technologies.keys(), technologies.values()): + categories.append({"title": key, "link_id": value["link_id"], "entries": value["entries"]}) + +categories = sorted(categories, key=lambda x: x["title"].upper()) +for category in categories: + category["entries"] = sorted(category["entries"], key=lambda x: x["name"].upper()) + +sponsors = data["sponsors"] + +output = template.render(categories=categories, sponsors=sponsors) + +open(TARGETFILE, "w").write(output) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9ede61e..aaafdcc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,11 +13,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v2 - with: - node-version: "16.x" + - name: install jinja2 + run: sudo pip install jinja2 - name: Build - run: node .github/scripts/build.js + run: python3 .github/scripts/render-readme.py - name: Commit run: | git config --global user.name 'Shmavon Gazanchyan' diff --git a/README.md b/README.md index 5809c01..4d6d67c 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ If you are not a programmer but would like to contribute, check out the [Awesome - [Haskell](#haskell) - [Java](#java) - [JavaScript](#javascript) +- [JSON](#json) - [Julia](#julia) - [Kotlin](#kotlin) - [LaTeX](#latex) @@ -29,6 +30,7 @@ If you are not a programmer but would like to contribute, check out the [Awesome - [MLOps](#mlops) - [Perl](#perl) - [PHP](#php) +- [Pug](#pug) - [Python](#python) - [Ruby](#ruby) - [Rust](#rust) @@ -84,6 +86,7 @@ If you are not a programmer but would like to contribute, check out the [Awesome - [dart.dev](https://github.com/dart-lang/site-www) _(label: beginner)_
A website covering Dart language and common libraries, for developers of Dart libraries, web apps, server-side code, and mobile (Flutter) apps. - [flutter](https://github.com/flutter/flutter) _(label: good first issue)_
Flutter is Google's UI toolkit for building beautiful, natively compiled applications for mobile, web, desktop, and embedded devices from a single codebase. +- [OpenFoodFacts](https://github.com/openfoodfacts/smooth-app) _(label: good first issue)_
Collaborative, free and open database of food products from around the world. Scan barcode to get info or add a product ## Elixir @@ -160,7 +163,7 @@ If you are not a programmer but would like to contribute, check out the [Awesome - [Ghost](https://github.com/TryGhost/Ghost) _(label: good first issue)_
Just a blogging platform - [grommet](https://github.com/grommet/grommet) _(label: good first issue)_
a react-based framework that provides accessibility, modularity, responsiveness, and theming in a tidy package - [Habitica](https://github.com/HabitRPG/habitica) _(label: good first issue)_
Habitica is a gamified task manager, webapp and android/ios app, really wonderful atmosphere. Guidance for contributing here (mongo, express, vue, node stack for webapp) -- [HMPL](https://github.com/hmpl-lang/hmpl) _(label: good first issue)_
Template language for displaying UI from server to client. +- [HMPL](https://github.com/hmpl-language/hmpl) _(label: good first issue)_
Server-oriented customizable templating for JavaScript. - [Hoppscotch](https://github.com/hoppscotch/hoppscotch) _(label: good first issue)_
A free, fast and beautiful API request builder. - [HueHive](https://github.com/croma-app/croma) _(label: good first issue)_
A open source react native app iOS and android for color palette management - [Hyper](https://github.com/zeit/hyper) _(label: good first issue)_
JS/HTML/CSS Terminal @@ -170,7 +173,6 @@ If you are not a programmer but would like to contribute, check out the [Awesome - [json-editor](https://github.com/json-editor/json-editor) _(label: good first issue)_
JSON Schema Based Editor. JSON Editor takes a JSON Schema and uses it to generate an HTML form. It has full support for JSON Schema version 3 and 4 and can integrate with several popular CSS frameworks (bootstrap, spectre, tailwind). - [Kinto.js](https://github.com/Kinto/kinto.js) _(label: easy-pick)_
An offline-first JavaScript client leveraging the Kinto API for remote data synchronization. - [Leaflet](https://github.com/Leaflet/Leaflet) _(label: good first issue)_
JavaScript library for mobile-friendly interactive maps. -- [Letra Extension](https://github.com/jayehernandez/letra-extension) _(label: good first issue)_
Passively learn a new language every time you open a new tab. - [material-ui](https://github.com/mui-org/material-ui) _(label: good first issue)_
React components for faster and easier web development. Build your own design system, or start with Material Design. - [Mattermost](https://github.com/mattermost/mattermost-server/issues?utf8=✓&q=is:open+label:"Up+For+Grabs"+label:"Difficulty/1:Easy"+label:"Tech/Go") _(label: n/a)_
Open source Slack-alternative in Golang and React - [Meteor](https://github.com/meteor/meteor) _(label: good first issue)_
Meteor is an ultra-simple environment for building modern web applications. @@ -187,8 +189,8 @@ If you are not a programmer but would like to contribute, check out the [Awesome - [PouchDB](https://github.com/pouchdb/pouchdb) _(label: help-wanted)_
PouchDB is a pocket-sized database. - [Predator](https://github.com/Zooz/predator) _(label: good first issue)_
A powerful open-source platform for load testing APIs. - [ramda-adjunct](https://github.com/char0n/ramda-adjunct) _(label: help-wanted)_
Ramda Adjunct is the most popular and most comprehensive set of functional utilities for use with Ramda, providing a variety of useful, well tested functions with excellent documentation. +- [Rawsec Cybersecurity Inventory](https://gitlab.com/rawsec/rawsec-cybersecurity-list) _(label: difficulty::easy)_
An inventory of tools and resources that aims to help people to find everything related to CyberSecurity. - [React](https://github.com/facebook/react) _(label: good first issue)_
A declarative, efficient, and flexible JavaScript library for building user interfaces. -- [React Help Create](https://github.com/Omar-Belghaouti/react-help-create) _(label: first-timers-only)_
This command line helps you create components, pages and even redux implementation for your react project. - [React Native](https://github.com/facebook/react-native) _(label: Good-first-issue)_
A framework for building native apps with React. - [React server](https://github.com/redfin/react-server) _(label: good-first-contribution)_
React framework with server render for blazing fast page load and seamless transitions between pages in the browser. - [React-content-loader](https://github.com/danilowoz/create-content-loader) _(label: good first issue)_
Tool to create your own react-content-loader easily. @@ -216,6 +218,10 @@ If you are not a programmer but would like to contribute, check out the [Awesome - [webdriver.io](https://github.com/webdriverio/webdriverio) _(label: first-timers-only)_
Next-gen browser and mobile automation test framework for Node.js - [Yarn](https://github.com/yarnpkg/yarn) _(label: good first issue)_
Fast, reliable, and secure dependency management. +## JSON + +- [Rawsec Cybersecurity Inventory](https://gitlab.com/rawsec/rawsec-cybersecurity-list) _(label: difficulty::easy)_
An inventory of tools and resources that aims to help people to find everything related to CyberSecurity. + ## Julia - [Julia](https://github.com/JuliaLang/julia) _(label: good first issue)_
Julia Projects for Beginners — Easy Ideas to Get Started Coding in Julia @@ -227,6 +233,7 @@ If you are not a programmer but would like to contribute, check out the [Awesome - [Atrium](https://github.com/robstoll/atrium) _(label: good first issue)_
Multiplatform assertion library for Kotlin - [Hexagon](https://github.com/hexagonkt/hexagon) _(label: help-wanted)_
A microservices toolkit written in Kotlin - [Non-Blocking SirixDB HTTP(S)-Server](https://github.com/sirixdb/sirix) _(label: good first issue)_
A non-blocking HTTP(S)-Server for SirixDB, a temporal, evolutionary NoSQL document store for XML and JSON. +- [OpenCalc](https://github.com/Darkempire78/OpenCalc) _(label: good first issue)_
A simple and beautiful calculator for Android. ## LaTeX @@ -261,6 +268,10 @@ If you are not a programmer but would like to contribute, check out the [Awesome - [PrestaShop](https://github.com/PrestaShop/PrestaShop) _(label: good first issue)_
The open source ecommerce solution to start your online business and start selling online. - [Symfony](https://github.com/symfony/symfony) _(label: good first issue)_
Symfony is a PHP framework for web applications and a set of reusable PHP components. +## Pug + +- [Rawsec Cybersecurity Inventory](https://gitlab.com/rawsec/rawsec-cybersecurity-list) _(label: difficulty::easy)_
An inventory of tools and resources that aims to help people to find everything related to CyberSecurity. + ## Python - [activist](https://github.com/activist-org/activist) _(label: good first issue)_
activist.org is a network for political action that allows people to coordinate and collaborate on the issues that matter most to them. @@ -272,14 +283,14 @@ If you are not a programmer but would like to contribute, check out the [Awesome - [coala](https://github.com/coala/coala) _(label: n/a)_
A unified command-line interface for linting and fixing all your code, regardless of the programming languages you use. - [Colossal-AI](https://github.com/hpcaitech/ColossalAI) _(label: good first issue)_
An open-source deep learning system for large-scale model training and inference with high efficiency and low cost. - [cookiecutter](https://github.com/cookiecutter/cookiecutter) _(label: good first issue)_
A command-line utility that creates projects from cookiecutters (project templates). E.g. Python package projects, jQuery plugin projects. -- [Create aio app](https://github.com/aio-libs/create-aio-app) _(label: good first issue)_
A command line utility that creates the aiohttp template with the best practices. - [datascience](https://github.com/data-8/datascience) _(label: good first issue)_
A Jupyter notebook Python library for introductory data science. - [django cookiecutter](https://github.com/pydanny/cookiecutter-django) _(label: hacktoberfest)_
An implementation of Python for backend web development. - [Embedchain](https://github.com/embedchain/embedchain/) _(label: good first issue)_
Embedchain is a framework to easily create LLM powered bots over any dataset. - [Fabric](https://github.com/fabric/fabric) _(label: Low-hanging-fruit)_
Pythonic remote execution and deployment. +- [FastAPI](https://github.com/tiangolo/fastapi) _(label: good first issue)_
A modern, fast (high-performance) web framework for building APIs with Python 3.6+ based on standard Python type hints. - [H2O Wave](https://github.com/h2oai/wave) _(label: good first issue)_
Realtime Web Apps and Dashboards framework for Python and R. Suited (not only) for AI audience. - [H2O Wave Apps](https://github.com/h2oai/wave-apps) _(label: hacktoberfest)_
Sample AI Apps built with H2O Wave. -- [Harmony](https://github.com/harmonydata/harmony) _(label: Good First Issue)_
Natural language processing tool for psychologists to analyse and compare datasets with AI and LLMs. +- [Harmony](https://github.com/harmonydata/harmony) _(label: Good First Issue)_
Natural language processing tool for psychologists to analyse and compare datasets with AI and LLMs.
Up for a challenge? Try [this LLM training competition](https://harmonydata.ac.uk/doxa/) for a chance to win up to £500! - [jarvis](https://github.com/sukeesh/Jarvis) _(label: difficulty/newcomer)_
A personal assistant for Linux, MacOs and Windows based on Command line Interface. - [Jupyter notebook](https://github.com/jupyter/notebook) _(label: good first issue)_
Jupyter interactive notebook. - [Kinto](https://github.com/Kinto/kinto) _(label: easy-pick)_
A lightweight JSON storage service with synchronisation and sharing abilities. @@ -339,6 +350,7 @@ If you are not a programmer but would like to contribute, check out the [Awesome - [Sniffnet](https://github.com/GyulyVGC/sniffnet) _(label: good first issue)_
Application to comfortably monitor network traffic. - [TiKV](https://github.com/tikv/tikv) _(label: difficulty/easy)_
A distributed transactional key-value database - [Veloren](https://gitlab.com/veloren/veloren/-/issues?label_name[]=beginner) _(label: n/a)_
Veloren is a multiplayer voxel RPG written in Rust. +- [zoom-rs](https://github.com/security-union/zoom-rs) _(label: good first issue)_
Teleconference system with a web based user interface written in Rust ## Scala @@ -352,7 +364,6 @@ If you are not a programmer but would like to contribute, check out the [Awesome ## Swift - [Basic-Car-Maintenance](https://github.com/mikaelacaron/Basic-Car-Maintenance) _(label: good first issue)_
A basic app to track your car's maintenance events, like fixes, oil changes, etc. -- [OpenFoodFacts-iOS](https://github.com/openfoodfacts/openfoodfacts-ios) _(label: help-wanted)_
Collaborative, free and open database of food products from around the world. Scan barcode to get info or add a product ## TypeScript diff --git a/data.json b/data.json index 9f8e20a..fc5efda 100644 --- a/data.json +++ b/data.json @@ -605,12 +605,12 @@ }, { "name": "HMPL", - "link": "https://github.com/hmpl-lang/hmpl", + "link": "https://github.com/hmpl-language/hmpl", "label": "good first issue", "technologies": [ "JavaScript" ], - "description": "Template language for displaying UI from server to client." + "description": "Server-oriented customizable templating for JavaScript." }, { "name": "Moment.js", @@ -972,6 +972,15 @@ ], "description": "A powerful open-source platform for load testing APIs." }, + { + "name": "OpenCalc", + "link": "https://github.com/Darkempire78/OpenCalc", + "label": "good first issue", + "technologies": [ + "Kotlin" + ], + "description": "A simple and beautiful calculator for Android." + }, { "name": "Time to Leave", "link": "https://github.com/thamara/time-to-leave", @@ -1026,15 +1035,6 @@ ], "description": "Drag & Drop internal tool builder" }, - { - "name": "Letra Extension", - "link": "https://github.com/jayehernandez/letra-extension", - "label": "good first issue", - "technologies": [ - "JavaScript" - ], - "description": "Passively learn a new language every time you open a new tab." - }, { "name": "Jasmine", "link": "https://github.com/jasmine/jasmine", @@ -1437,15 +1437,6 @@ ], "description": "A simple IT automation platform" }, - { - "name": "Create aio app", - "link": "https://github.com/aio-libs/create-aio-app", - "label": "good first issue", - "technologies": [ - "Python" - ], - "description": "A command line utility that creates the aiohttp template with the best practices." - }, { "name": "opsdroid", "link": "https://github.com/opsdroid/opsdroid", @@ -1833,11 +1824,11 @@ "description": "A dynamic reflective pure object-oriented language supporting live programming inspired by Smalltalk." }, { - "name": "OpenFoodFacts-iOS", - "link": "https://github.com/openfoodfacts/openfoodfacts-ios", - "label": "help-wanted", + "name": "OpenFoodFacts", + "link": "https://github.com/openfoodfacts/smooth-app", + "label": "good first issue", "technologies": [ - "Swift" + "Dart" ], "description": "Collaborative, free and open database of food products from around the world. Scan barcode to get info or add a product" }, @@ -1958,15 +1949,6 @@ ], "description": "Amplication is an open-source development tool. It helps you develop quality Node.js applications without spending time on repetitive coding tasks." }, - { - "name": "React Help Create", - "link": "https://github.com/Omar-Belghaouti/react-help-create", - "label": "first-timers-only", - "technologies": [ - "JavaScript" - ], - "description": "This command line helps you create components, pages and even redux implementation for your react project." - }, { "name": "pythonping", "link": "https://github.com/alessandromaggio/pythonping", @@ -2153,7 +2135,7 @@ "technologies": [ "Python" ], - "description": "Natural language processing tool for psychologists to analyse and compare datasets with AI and LLMs." + "description": "Natural language processing tool for psychologists to analyse and compare datasets with AI and LLMs.
Up for a challenge? Try [this LLM training competition](https://harmonydata.ac.uk/doxa/) for a chance to win up to £500!" }, { "name": "SuperDuperDB", @@ -2215,8 +2197,36 @@ "label": "good-first-issue", "technologies": ["JavaScript"], "description": "A simple todo list app built with HTML, CSS, and JavaScript. Features include adding, completing, deleting tasks, and persistent storage using localStorage." - } - + }, + { + "name": "Rawsec Cybersecurity Inventory", + "link": "https://gitlab.com/rawsec/rawsec-cybersecurity-list", + "label": "difficulty::easy", + "technologies": [ + "JavaScript", + "JSON", + "Pug" + ], + "description": "An inventory of tools and resources that aims to help people to find everything related to CyberSecurity." + }, + { + "name": "zoom-rs", + "link": "https://github.com/security-union/zoom-rs", + "label": "good first issue", + "technologies": [ + "Rust" + ], + "description": "Teleconference system with a web based user interface written in Rust" + }, + { + "name": "FastAPI", + "link": "https://github.com/tiangolo/fastapi", + "label": "good first issue", + "technologies": [ + "Python" + ], + "description": "A modern, fast (high-performance) web framework for building APIs with Python 3.6+ based on standard Python type hints." + } ] }