Compare commits

..

1 Commits

Author SHA1 Message Date
BOT
addd743440 Merge 4e1227c2d4 into bad67b06f5 2024-10-31 16:33:03 -05:00
6 changed files with 113 additions and 100 deletions

87
.github/scripts/build.js vendored Normal file
View File

@@ -0,0 +1,87 @@
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'})_ <br> ${repo.description}`).join('\n')
return `## ${category}\n\n${repos}\n`
}).join('\n');
const sponsorList = data.sponsors.map(sponsor => `<td align="center"><a href="${sponsor.link}"><img src="${sponsor.image}" width="60px;" alt=""/><br/><sub><b>${sponsor.name}</b></sub></a></td>`)
const sponsorRows = Math.ceil(sponsorList.length / 6);
let sponsors = '';
for (let i = 1; i <= sponsorRows; i++) {
sponsors += '<tr>';
for(let j = 0; j < 6; j++) {
if (sponsorList.length > i*j) {
sponsors += sponsorList[i*j];
} else if (sponsorRows > 1) {
sponsors += '<td></td>'
}
}
sponsors += '</tr>';
}
sponsors = `<table>${sponsors}</table>`
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;
}

View File

@@ -1,40 +0,0 @@
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)

View File

@@ -7,13 +7,10 @@ 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:
{% 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 %})_ <br> {{ entry.description }}{% endfor %}
{% endfor %}
<% toc %>
<% content %>
## Contribute
@@ -21,11 +18,10 @@ Contributions are welcome! See the [contributing guidelines](CONTRIBUTING.md).
## Thanks to GitHub Sponsors
<table><tr>{% for sponsor in sponsors %}{% if loop.index != 1 and (loop.index - 1) % 6 == 0 %}</tr><tr>{% endif %}<td align="center"><a href="{{ sponsor.link }}"><img src="{{ sponsor.image }}" width="60px;" alt=""/><br/><sub><b>{{ sponsor.name }}</b></sub></a></td>{% endfor %}</tr></table>
<% sponsors %>
## 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.

View File

@@ -13,10 +13,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: install jinja2
run: sudo pip install jinja2
- uses: actions/setup-node@v2
with:
node-version: "16.x"
- name: Build
run: python3 .github/scripts/render-readme.py
run: node .github/scripts/build.js
- name: Commit
run: |
git config --global user.name 'Shmavon Gazanchyan'

View File

@@ -22,7 +22,6 @@ 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)
@@ -30,7 +29,6 @@ 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)
@@ -163,7 +161,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)_ <br> Just a blogging platform
- [grommet](https://github.com/grommet/grommet) _(label: good first issue)_ <br> 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)_ <br> 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-language/hmpl) _(label: good first issue)_ <br> Server-oriented customizable templating for JavaScript.
- [HMPL](https://github.com/hmpl-lang/hmpl) _(label: good first issue)_ <br> Template language for displaying UI from server to client.
- [Hoppscotch](https://github.com/hoppscotch/hoppscotch) _(label: good first issue)_ <br> A free, fast and beautiful API request builder.
- [HueHive](https://github.com/croma-app/croma) _(label: good first issue)_ <br> A open source react native app iOS and android for color palette management
- [Hyper](https://github.com/zeit/hyper) _(label: good first issue)_ <br> JS/HTML/CSS Terminal
@@ -173,6 +171,7 @@ 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)_ <br> 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)_ <br> An offline-first JavaScript client leveraging the Kinto API for remote data synchronization.
- [Leaflet](https://github.com/Leaflet/Leaflet) _(label: good first issue)_ <br> JavaScript library for mobile-friendly interactive maps.
- [Letra Extension](https://github.com/jayehernandez/letra-extension) _(label: good first issue)_ <br> 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)_ <br> 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)_ <br> Open source Slack-alternative in Golang and React
- [Meteor](https://github.com/meteor/meteor) _(label: good first issue)_ <br> Meteor is an ultra-simple environment for building modern web applications.
@@ -189,7 +188,6 @@ If you are not a programmer but would like to contribute, check out the [Awesome
- [PouchDB](https://github.com/pouchdb/pouchdb) _(label: help-wanted)_ <br> PouchDB is a pocket-sized database.
- [Predator](https://github.com/Zooz/predator) _(label: good first issue)_ <br> A powerful open-source platform for load testing APIs.
- [ramda-adjunct](https://github.com/char0n/ramda-adjunct) _(label: help-wanted)_ <br> 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)_ <br> 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)_ <br> A declarative, efficient, and flexible JavaScript library for building user interfaces.
- [React Native](https://github.com/facebook/react-native) _(label: Good-first-issue)_ <br> A framework for building native apps with React.
- [React server](https://github.com/redfin/react-server) _(label: good-first-contribution)_ <br> React framework with server render for blazing fast page load and seamless transitions between pages in the browser.
@@ -218,10 +216,6 @@ 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)_ <br> Next-gen browser and mobile automation test framework for Node.js
- [Yarn](https://github.com/yarnpkg/yarn) _(label: good first issue)_ <br> Fast, reliable, and secure dependency management.
## JSON
- [Rawsec Cybersecurity Inventory](https://gitlab.com/rawsec/rawsec-cybersecurity-list) _(label: difficulty::easy)_ <br> 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)_ <br> Julia Projects for Beginners — Easy Ideas to Get Started Coding in Julia
@@ -268,10 +262,6 @@ 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)_ <br> The open source ecommerce solution to start your online business and start selling online.
- [Symfony](https://github.com/symfony/symfony) _(label: good first issue)_ <br> 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)_ <br> 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)_ <br> activist.org is a network for political action that allows people to coordinate and collaborate on the issues that matter most to them.
@@ -287,10 +277,9 @@ If you are not a programmer but would like to contribute, check out the [Awesome
- [django cookiecutter](https://github.com/pydanny/cookiecutter-django) _(label: hacktoberfest)_ <br> An implementation of Python for backend web development.
- [Embedchain](https://github.com/embedchain/embedchain/) _(label: good first issue)_ <br> Embedchain is a framework to easily create LLM powered bots over any dataset.
- [Fabric](https://github.com/fabric/fabric) _(label: Low-hanging-fruit)_ <br> Pythonic remote execution and deployment.
- [FastAPI](https://github.com/tiangolo/fastapi) _(label: good first issue)_ <br> 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)_ <br> 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)_ <br> Sample AI Apps built with H2O Wave.
- [Harmony](https://github.com/harmonydata/harmony) _(label: Good First Issue)_ <br> Natural language processing tool for psychologists to analyse and compare datasets with AI and LLMs.<br>Up for a challenge? Try [this LLM training competition](https://harmonydata.ac.uk/doxa/) for a chance to win up to £500!
- [Harmony](https://github.com/harmonydata/harmony) _(label: Good First Issue)_ <br> Natural language processing tool for psychologists to analyse and compare datasets with AI and LLMs.
- [jarvis](https://github.com/sukeesh/Jarvis) _(label: difficulty/newcomer)_ <br> A personal assistant for Linux, MacOs and Windows based on Command line Interface.
- [Jupyter notebook](https://github.com/jupyter/notebook) _(label: good first issue)_ <br> Jupyter interactive notebook.
- [Kinto](https://github.com/Kinto/kinto) _(label: easy-pick)_ <br> A lightweight JSON storage service with synchronisation and sharing abilities.
@@ -350,7 +339,6 @@ 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)_ <br> Application to comfortably monitor network traffic.
- [TiKV](https://github.com/tikv/tikv) _(label: difficulty/easy)_ <br> A distributed transactional key-value database
- [Veloren](https://gitlab.com/veloren/veloren/-/issues?label_name[]=beginner) _(label: n/a)_ <br> Veloren is a multiplayer voxel RPG written in Rust.
- [zoom-rs](https://github.com/security-union/zoom-rs) _(label: good first issue)_ <br> Teleconference system with a web based user interface written in Rust
## Scala

View File

@@ -605,12 +605,12 @@
},
{
"name": "HMPL",
"link": "https://github.com/hmpl-language/hmpl",
"link": "https://github.com/hmpl-lang/hmpl",
"label": "good first issue",
"technologies": [
"JavaScript"
],
"description": "Server-oriented customizable templating for JavaScript."
"description": "Template language for displaying UI from server to client."
},
{
"name": "Moment.js",
@@ -1035,6 +1035,15 @@
],
"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",
@@ -2135,7 +2144,7 @@
"technologies": [
"Python"
],
"description": "Natural language processing tool for psychologists to analyse and compare datasets with AI and LLMs.<br>Up for a challenge? Try [this LLM training competition](https://harmonydata.ac.uk/doxa/) for a chance to win up to £500!"
"description": "Natural language processing tool for psychologists to analyse and compare datasets with AI and LLMs."
},
{
"name": "SuperDuperDB",
@@ -2197,36 +2206,8 @@
"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."
}
]
}