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 %} {{ sponsor.name }} | {% endfor %}
## License
[](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 = ``
-
-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."
+ }
]
}