Merge pull request #1 from VulCodeCom/chore/fresh-stats

Fresh numbers in the org profile, generated from ghapi
This commit is contained in:
dualfroz authored and GitHub committed 2026-10-05 15:41:20 +02:00
commit 95a289d54f
6 files changed
+460 -194

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
name: stats
on:
schedule:
- cron: "17 4 * * *"
workflow_dispatch:
permissions:
contents: write
jobs:
refresh:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Refresh numbers from ghapi
run: python3 scripts/update_readme_stats.py
- name: Commit when something changed
run: |
if git diff --quiet; then exit 0; fi
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git commit -am "chore: refresh readme stats"
git push
+65 -47
View File
@@ -17,7 +17,7 @@
<br>
VulCode is a Polish software house with years of experience. Since 2020 we have delivered high-quality software and written more than **3 million lines of code** across **200+ projects**. We also contributed to **41 open source repositories** with **270,000+ combined stars** on GitHub. We specialize in websites, panels and dashboards, and applications, as well as building scalable platforms, and we actively contribute to dozens of open source projects.
VulCode is a Polish software house with years of experience. Since 2020 we have delivered high-quality software and written more than **5 million lines of code** across **200+ projects**. We also contributed to **53 open source repositories** with **410,000+ combined stars** on GitHub. We specialize in websites, panels and dashboards, and applications, as well as building scalable platforms, and we actively contribute to dozens of open source projects.
## 🧩 What we do
@@ -107,25 +107,27 @@ A transparent, 7-step process from first call to production support:
## 📊 VulCode in numbers
<!-- stats:summary -->
<table>
<tr>
<td align="center" colspan="2" width="50%"><h3>3,324,107</h3>lines of code</td>
<td align="center" width="25%"><h3>17,647</h3>commits</td>
<td align="center" colspan="2" width="50%"><h3>5,994,022</h3>lines of code</td>
<td align="center" width="25%"><h3>23,830</h3>commits</td>
<td align="center" width="25%"><h3>200+</h3>projects</td>
</tr>
<tr>
<td align="center" width="25%"><h3>270,000+</h3>OSS project stars</td>
<td align="center" width="25%"><h3>41</h3>open source projects</td>
<td align="center" width="25%"><h3>410,000+</h3>OSS project stars</td>
<td align="center" width="25%"><h3>53</h3>open source projects</td>
<td align="center" width="25%"><h3>26</h3>languages</td>
<td align="center" width="25%"><h3>1,634</h3>working days</td>
<td align="center" width="25%"><h3>1,655</h3>working days</td>
</tr>
</table>
```diff
+ 3,324,107 lines added
- 502,324 lines removed
! 2,821,783 net lines
+ 5,994,022 lines added
- 778,721 lines removed
! 5,215,301 net lines
```
<!-- /stats:summary -->
<p align="center">
<img src="https://ghapi.dualfroz.com/v2/public/cards/heatmap.svg?lang=en" width="100%" alt="Commit heatmap for the last year">
@@ -137,30 +139,31 @@ A transparent, 7-step process from first call to production support:
<img src="https://ghapi.dualfroz.com/v2/public/cards/top-langs.svg?lang=en" width="495" alt="Programming languages pie chart">
</p>
<!-- stats:languages -->
<table align="center">
<tr><th></th><th align="left">Language</th><th align="right">Lines of code</th><th align="right">Commits</th><th align="right">Share</th></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">1,492,536</td><td align="right">4,406</td><td align="right">54.3% <sub>████████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">255,918</td><td align="right">892</td><td align="right">9.3% <sub>██</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">103,631</td><td align="right">124</td><td align="right">3.8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">102,759</td><td align="right">713</td><td align="right">3.7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">102,702</td><td align="right">356</td><td align="right">3.7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">85,918</td><td align="right">653</td><td align="right">3.1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80,002</td><td align="right">124</td><td align="right">2.9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">78,003</td><td align="right">380</td><td align="right">2.8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">66,884</td><td align="right">252</td><td align="right">2.4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">55,519</td><td align="right">349</td><td align="right">2.0% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">51,503</td><td align="right">388</td><td align="right">1.9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">48,135</td><td align="right">345</td><td align="right">1.7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">44,583</td><td align="right">284</td><td align="right">1.6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">40,525</td><td align="right">283</td><td align="right">1.5% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">37,655</td><td align="right">263</td><td align="right">1.4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">32,053</td><td align="right">206</td><td align="right">1.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">21,747</td><td align="right">193</td><td align="right">0.8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">14,976</td><td align="right">278</td><td align="right">0.5% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">9,922</td><td align="right">66</td><td align="right">0.4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6,013</td><td align="right">40</td><td align="right">0.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">4,857</td><td align="right">92</td><td align="right">0.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=solidity" width="18" alt="Solidity"></td><td><b>Solidity</b></td><td align="right">4,688</td><td align="right">33</td><td align="right">0.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">2,274,503</td><td align="right">6,203</td><td align="right">46.0% <sub>██████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">988,753</td><td align="right">2,516</td><td align="right">20.0% <sub>████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">281,782</td><td align="right">907</td><td align="right">5.7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">206,250</td><td align="right">796</td><td align="right">4.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">162,872</td><td align="right">752</td><td align="right">3.3% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">140,024</td><td align="right">500</td><td align="right">2.8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">130,914</td><td align="right">149</td><td align="right">2.6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">116,812</td><td align="right">437</td><td align="right">2.4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">91,810</td><td align="right">438</td><td align="right">1.9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">84,375</td><td align="right">317</td><td align="right">1.7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80,555</td><td align="right">145</td><td align="right">1.6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">61,717</td><td align="right">502</td><td align="right">1.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">57,275</td><td align="right">358</td><td align="right">1.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">49,346</td><td align="right">355</td><td align="right">1.0% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">44,583</td><td align="right">284</td><td align="right">0.9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">38,114</td><td align="right">590</td><td align="right">0.8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">37,655</td><td align="right">263</td><td align="right">0.8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">32,053</td><td align="right">206</td><td align="right">0.6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">29,411</td><td align="right">263</td><td align="right">0.6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">13,788</td><td align="right">75</td><td align="right">0.3% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6,013</td><td align="right">40</td><td align="right">0.1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=solidity" width="18" alt="Solidity"></td><td><b>Solidity</b></td><td align="right">4,688</td><td align="right">33</td><td align="right">0.1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3,609</td><td align="right">28</td><td align="right">0.1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">3,133</td><td align="right">29</td><td align="right">0.1% <sub>█</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3,017</td><td align="right">18</td><td align="right">0.1% <sub>█</sub></td></tr>
@@ -169,7 +172,8 @@ A transparent, 7-step process from first call to production support:
**Frameworks & tools detected across projects** <sub>(repository count)</sub>
Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Tailwind CSS <sub>24</sub> · Vite <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · Serde <sub>6</sub> · Stripe <sub>5</sub> · Tokio <sub>5</sub> · reqwest <sub>5</sub> · xUnit <sub>5</sub> · Axum <sub>3</sub> · Framer Motion <sub>3</sub> · PHPUnit <sub>3</sub> · Redis <sub>3</sub> · SQLx <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · Avalonia <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Guzzle <sub>2</sub> · JUnit <sub>2</sub> · Jest <sub>2</sub> · Jetpack Compose <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Playwright <sub>2</sub> · Pterodactyl <sub>2</sub> · Spring Boot <sub>2</sub> · Zod <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · webpack <sub>2</sub> · Android <sub>1</sub>
Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Vite <sub>25</sub> · Tailwind CSS <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Serde <sub>10</sub> · Tokio <sub>7</sub> · reqwest <sub>7</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · xUnit <sub>6</sub> · Stripe <sub>5</sub> · Avalonia <sub>4</sub> · Axum <sub>4</sub> · JUnit <sub>4</sub> · PHPUnit <sub>4</sub> · Playwright <sub>4</sub> · SQLx <sub>4</sub> · Framer Motion <sub>3</sub> · Jetpack Compose <sub>3</sub> · Redis <sub>3</sub> · Vitest <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · wasm-bindgen <sub>3</sub> · Android <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Coroutines <sub>2</sub> · Guzzle <sub>2</sub> · Jest <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Pterodactyl <sub>2</sub> · Zod <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · webpack <sub>2</sub> · Cobra <sub>1</sub> · Discord.Net <sub>1</sub> · Docker SDK <sub>1</sub> · Ecto <sub>1</sub> · Electron <sub>1</sub> · Expo <sub>1</sub> · FastAPI <sub>1</sub> · GORM <sub>1</sub> · Gin <sub>1</sub> · HTTPX <sub>1</sub> · Json.NET <sub>1</sub> · Paper <sub>1</sub> · PostgreSQL <sub>1</sub> · Preact <sub>1</sub> · Ratatui <sub>1</sub> · React Native <sub>1</sub> · Spring Boot <sub>1</sub> · Tauri <sub>1</sub> · chi <sub>1</sub> · discordgo <sub>1</sub> · gopher-lua <sub>1</sub> · pytest <sub>1</sub> · tonic <sub>1</sub>
<!-- /stats:languages -->
<sub>Counted by my own API [ghapi.dualfroz.com](https://ghapi.dualfroz.com/v2/public) across every repository, private ones included. Updated daily.</sub>
@@ -303,24 +307,30 @@ Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Tailwind
## 🌍 Open source
Code that made it into projects I use every day. **45** merged pull requests in **41** repositories with **270,000+** stars combined.
<!-- stats:opensource -->
Code that made it into projects we use every day. **70** merged pull requests in **53** repositories with **410,000+** stars combined.
| Project | Stars | Language | Changes |
|---|---|---|---|
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26.1k | C# | <code>+4624</code> <code>-13</code> |
| [PHPMailer/PHPMailer](https://github.com/PHPMailer/PHPMailer) | ⭐ 22.3k | PHP | <code>+8</code> <code>-2</code> |
| [zed-industries/zed](https://github.com/zed-industries/zed) | ⭐ 91.3k | Rust | <code>+123</code> <code>-10</code> |
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26.2k | C# | <code>+4624</code> <code>-13</code> |
| [PHPMailer/PHPMailer](https://github.com/PHPMailer/PHPMailer) | ⭐ 22.3k | PHP | <code>+135</code> <code>-4</code> |
| [postcss/autoprefixer](https://github.com/postcss/autoprefixer) | ⭐ 22.2k | JavaScript | <code>+50</code> <code>-4</code> |
| [Seldaek/monolog](https://github.com/Seldaek/monolog) | ⭐ 21.4k | PHP | <code>+41</code> <code>-2</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21.3k | Rust | <code>+87</code> <code>-19</code> |
| [PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery) | ⭐ 15k | Go | <code>+76</code> <code>-4</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21.4k | Rust | <code>+88</code> <code>-20</code> |
| [briannesbitt/Carbon](https://github.com/briannesbitt/Carbon) | ⭐ 16.6k | PHP | <code>+87</code> <code>-0</code> |
| [PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery) | ⭐ 15k | Go | <code>+183</code> <code>-18</code> |
| [App-vNext/Polly](https://github.com/App-vNext/Polly) | ⭐ 14.2k | C# | <code>+19</code> <code>-1</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13.5k | Go | <code>+14</code> <code>-13</code> |
| [filp/whoops](https://github.com/filp/whoops) | ⭐ 13.2k | PHP | <code>+42</code> <code>-1</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12.2k | JavaScript | <code>+65</code> <code>-5</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9.9k | PHP | <code>+76</code> <code>-6</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13.5k | Go | <code>+19</code> <code>-13</code> |
| [filp/whoops](https://github.com/filp/whoops) | ⭐ 13.2k | PHP | <code>+115</code> <code>-3</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12.2k | JavaScript | <code>+124</code> <code>-11</code> |
| [doctrine/lexer](https://github.com/doctrine/lexer) | ⭐ 11.1k | PHP | <code>+72</code> <code>-2</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9.9k | PHP | <code>+127</code> <code>-7</code> |
| [FluentValidation/FluentValidation](https://github.com/FluentValidation/FluentValidation) | ⭐ 9.8k | C# | <code>+14</code> <code>-1</code> |
| [serilog/serilog](https://github.com/serilog/serilog) | ⭐ 8k | C# | <code>+12</code> <code>-0</code> |
| [vscode-neovim/vscode-neovim](https://github.com/vscode-neovim/vscode-neovim) | ⭐ 7.8k | TypeScript | <code>+65</code> <code>-2</code> |
| [NLog/NLog](https://github.com/NLog/NLog) | ⭐ 6.5k | C# | <code>+19</code> <code>-0</code> |
| [maildev/maildev](https://github.com/maildev/maildev) | ⭐ 6.1k | TypeScript | <code>+69</code> <code>-13</code> |
| [Pagefind/pagefind](https://github.com/Pagefind/pagefind) | ⭐ 5.5k | Rust | <code>+48</code> <code>-2</code> |
| [xoofx/markdig](https://github.com/xoofx/markdig) | ⭐ 5.3k | C# | <code>+223</code> <code>-7</code> |
| [spencermountain/spacetime](https://github.com/spencermountain/spacetime) | ⭐ 4.1k | JavaScript | <code>+15</code> <code>-40</code> |
@@ -329,25 +339,33 @@ Code that made it into projects I use every day. **45** merged pull requests in
| [thephpleague/csv](https://github.com/thephpleague/csv) | ⭐ 3.5k | PHP | <code>+22</code> <code>-9</code> |
| [composer/satis](https://github.com/composer/satis) | ⭐ 3.3k | PHP | <code>+55</code> <code>-10</code> |
| [montanaflynn/stats](https://github.com/montanaflynn/stats) | ⭐ 3k | Go | <code>+66</code> <code>-23</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 3k | Go | <code>+124</code> <code>-14</code> |
| [thephpleague/commonmark](https://github.com/thephpleague/commonmark) | ⭐ 3k | PHP | <code>+17</code> <code>-0</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 2.9k | Go | <code>+124</code> <code>-14</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2.4k | PHP | <code>+135</code> <code>-11</code> |
| [gookit/goutil](https://github.com/gookit/goutil) | ⭐ 2.4k | Go | <code>+12</code> <code>-0</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2.3k | PHP | <code>+135</code> <code>-11</code> |
| [pelican/panel](https://github.com/pelican/panel) | ⭐ 2.3k | PHP | <code>+64</code> <code>-3</code> |
| [dedoc/scramble](https://github.com/dedoc/scramble) | ⭐ 2.2k | PHP | <code>+23</code> <code>-0</code> |
| [gocarina/gocsv](https://github.com/gocarina/gocsv) | ⭐ 2.2k | Go | <code>+89</code> <code>-2</code> |
| [thephpleague/html-to-markdown](https://github.com/thephpleague/html-to-markdown) | ⭐ 1.9k | PHP | <code>+3</code> <code>-2</code> |
| [AfterShip/email-verifier](https://github.com/AfterShip/email-verifier) | ⭐ 1.6k | Go | <code>+99</code> <code>-3</code> |
| [gookit/color](https://github.com/gookit/color) | ⭐ 1.6k | Go | <code>+12</code> <code>-1</code> |
| [fabiocaccamo/python-benedict](https://github.com/fabiocaccamo/python-benedict) | ⭐ 1.6k | Python | <code>+66</code> <code>-5</code> |
| [olebedev/when](https://github.com/olebedev/when) | ⭐ 1.5k | Go | <code>+45</code> <code>-1</code> |
| [dgilland/pydash](https://github.com/dgilland/pydash) | ⭐ 1.4k | Python | <code>+18</code> <code>-5</code> |
| [cakephp/chronos](https://github.com/cakephp/chronos) | ⭐ 1.4k | PHP | <code>+17</code> <code>-2</code> |
| [go-playground/form](https://github.com/go-playground/form) | ⭐ 930 | Go | <code>+35</code> <code>-0</code> |
| [mkideal/cli](https://github.com/mkideal/cli) | ⭐ 722 | Go | <code>+22</code> <code>-1</code> |
| [mkideal/cli](https://github.com/mkideal/cli) | ⭐ 723 | Go | <code>+22</code> <code>-1</code> |
| [gookit/config](https://github.com/gookit/config) | ⭐ 585 | Go | <code>+29</code> <code>-8</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 503 | Rust | <code>+24</code> <code>-2</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 336 | Python | <code>+14</code> <code>-1</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 504 | Rust | <code>+24</code> <code>-2</code> |
| [kelindar/bitmap](https://github.com/kelindar/bitmap) | ⭐ 384 | Assembly | <code>+146</code> <code>-12</code> |
| [brick/date-time](https://github.com/brick/date-time) | ⭐ 361 | PHP | <code>+67</code> <code>-36</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 338 | Python | <code>+124</code> <code>-1</code> |
| [rodaine/table](https://github.com/rodaine/table) | ⭐ 324 | Go | <code>+32</code> <code>-2</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 86 | Rust | <code>+22</code> <code>-1</code> |
| [wroberts/pytimeparse](https://github.com/wroberts/pytimeparse) | ⭐ 299 | Python | <code>+5</code> <code>-1</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 87 | Rust | <code>+22</code> <code>-1</code> |
| [thephpleague/uri-src](https://github.com/thephpleague/uri-src) | ⭐ 51 | PHP | <code>+18</code> <code>-2</code> |
| [spiral/testing](https://github.com/spiral/testing) | ⭐ 7 | PHP | <code>+255</code> <code>-6</code> |
<!-- /stats:opensource -->
## ❓ Frequently asked questions
+68 -50
View File
@@ -17,7 +17,7 @@
<br>
VulCode to polski software house z wieloletnim doświadczeniem. Od 2020 roku dostarczamy oprogramowanie wysokiej jakości i napisaliśmy już ponad **3 mln linijek kodu** w **200+ projektach**. Dołożyliśmy też swoją cegiełkę do **41 repozytoriów open source**, które łącznie mają **270 000+ gwiazdek** na GitHubie. Specjalizujemy się w stronach internetowych, panelach i dashboardach oraz aplikacjach, a także w budowie skalowalnych platform. Aktywnie kontrybuujemy do dziesiątek projektów open source.
VulCode to polski software house z wieloletnim doświadczeniem. Od 2020 roku dostarczamy oprogramowanie wysokiej jakości i napisaliśmy już ponad **5 mln linijek kodu** w **200+ projektach**. Dołożyliśmy też swoją cegiełkę do **53 repozytoriów open source**, które łącznie mają **410 000+ gwiazdek** na GitHubie. Specjalizujemy się w stronach internetowych, panelach i dashboardach oraz aplikacjach, a także w budowie skalowalnych platform. Aktywnie kontrybuujemy do dziesiątek projektów open source.
## 🧩 Czym się zajmujemy?
@@ -107,25 +107,27 @@ Przejrzysty, 7-etapowy proces realizacji projektu:
## 📊 VulCode w liczbach
<!-- stats:summary -->
<table>
<tr>
<td align="center" colspan="2" width="50%"><h3>3 324 107</h3>linii kodu</td>
<td align="center" width="25%"><h3>17 647</h3>commitów</td>
<td align="center" colspan="2" width="50%"><h3>5 994 022</h3>linii kodu</td>
<td align="center" width="25%"><h3>23 830</h3>commitów</td>
<td align="center" width="25%"><h3>200+</h3>projektów</td>
</tr>
<tr>
<td align="center" width="25%"><h3>270 000+</h3>gwiazdek projektów OSS</td>
<td align="center" width="25%"><h3>41</h3>projektów open source</td>
<td align="center" width="25%"><h3>410 000+</h3>gwiazdek projektów OSS</td>
<td align="center" width="25%"><h3>53</h3>projektów open source</td>
<td align="center" width="25%"><h3>26</h3>języków</td>
<td align="center" width="25%"><h3>1 634</h3>dni pracy</td>
<td align="center" width="25%"><h3>1 655</h3>dni pracy</td>
</tr>
</table>
```diff
+ 3 324 107 linii dodanych
- 502 324 linii usuniętych
! 2 821 783 linii netto
+ 5 994 022 linii dodanych
- 778 721 linii usuniętych
! 5 215 301 linii netto
```
<!-- /stats:summary -->
### Języki
@@ -133,39 +135,41 @@ Przejrzysty, 7-etapowy proces realizacji projektu:
<img src="https://ghapi.dualfroz.com/v2/public/cards/top-langs.svg" width="495" alt="Wykres kołowy języków programowania">
</p>
<!-- stats:languages -->
<table align="center">
<tr><th></th><th align="left">Język</th><th align="right">Linie kodu</th><th align="right">Commity</th><th align="right">Udział</th></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">1 492 536</td><td align="right">4 406</td><td align="right">54,3% <sub>████████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">255 918</td><td align="right">892</td><td align="right">9,3% <sub>██</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">103 631</td><td align="right">124</td><td align="right">3,8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">102 759</td><td align="right">713</td><td align="right">3,7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">102 702</td><td align="right">356</td><td align="right">3,7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">85 918</td><td align="right">653</td><td align="right">3,1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80 002</td><td align="right">124</td><td align="right">2,9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">78 003</td><td align="right">380</td><td align="right">2,8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">66 884</td><td align="right">252</td><td align="right">2,4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">55 519</td><td align="right">349</td><td align="right">2,0% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">51 503</td><td align="right">388</td><td align="right">1,9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">48 135</td><td align="right">345</td><td align="right">1,7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">44 583</td><td align="right">284</td><td align="right">1,6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">40 525</td><td align="right">283</td><td align="right">1,5% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">37 655</td><td align="right">263</td><td align="right">1,4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">32 053</td><td align="right">206</td><td align="right">1,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">21 747</td><td align="right">193</td><td align="right">0,8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">14 976</td><td align="right">278</td><td align="right">0,5% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">9 922</td><td align="right">66</td><td align="right">0,4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6 013</td><td align="right">40</td><td align="right">0,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">4 857</td><td align="right">92</td><td align="right">0,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=solidity" width="18" alt="Solidity"></td><td><b>Solidity</b></td><td align="right">4 688</td><td align="right">33</td><td align="right">0,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3 609</td><td align="right">28</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">3 133</td><td align="right">29</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3 017</td><td align="right">18</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">2 274 503</td><td align="right">6 203</td><td align="right">46,0% <sub>██████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">988 753</td><td align="right">2 516</td><td align="right">20,0% <sub>████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">281 782</td><td align="right">907</td><td align="right">5,7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">206 250</td><td align="right">796</td><td align="right">4,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">162 872</td><td align="right">752</td><td align="right">3,3% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">140 024</td><td align="right">500</td><td align="right">2,8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">130 914</td><td align="right">149</td><td align="right">2,6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">116 812</td><td align="right">437</td><td align="right">2,4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">91 810</td><td align="right">438</td><td align="right">1,9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">84 375</td><td align="right">317</td><td align="right">1,7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80 555</td><td align="right">145</td><td align="right">1,6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">61 717</td><td align="right">502</td><td align="right">1,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">57 275</td><td align="right">358</td><td align="right">1,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">49 346</td><td align="right">355</td><td align="right">1,0% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">44 583</td><td align="right">284</td><td align="right">0,9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">38 114</td><td align="right">590</td><td align="right">0,8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">37 655</td><td align="right">263</td><td align="right">0,8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">32 053</td><td align="right">206</td><td align="right">0,6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">29 411</td><td align="right">263</td><td align="right">0,6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">13 788</td><td align="right">75</td><td align="right">0,3% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6 013</td><td align="right">40</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=solidity" width="18" alt="Solidity"></td><td><b>Solidity</b></td><td align="right">4 688</td><td align="right">33</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3 609</td><td align="right">28</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">3 133</td><td align="right">29</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3 017</td><td align="right">18</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/assembly.png" width="18" alt="Assembly"></td><td><b>Assembly</b></td><td align="right">397</td><td align="right">6</td><td align="right">0,0% <sub>█</sub></td></tr>
</table>
**Frameworki i narzędzia wykryte w projektach** <sub>(liczba repozytoriów)</sub>
Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Tailwind CSS <sub>24</sub> · Vite <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · Serde <sub>6</sub> · Stripe <sub>5</sub> · Tokio <sub>5</sub> · reqwest <sub>5</sub> · xUnit <sub>5</sub> · Axum <sub>3</sub> · Framer Motion <sub>3</sub> · PHPUnit <sub>3</sub> · Redis <sub>3</sub> · SQLx <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · Avalonia <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Guzzle <sub>2</sub> · JUnit <sub>2</sub> · Jest <sub>2</sub> · Jetpack Compose <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Playwright <sub>2</sub> · Pterodactyl <sub>2</sub> · Spring Boot <sub>2</sub> · Zod <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · webpack <sub>2</sub> · Android <sub>1</sub>
Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Vite <sub>25</sub> · Tailwind CSS <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Serde <sub>10</sub> · Tokio <sub>7</sub> · reqwest <sub>7</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · xUnit <sub>6</sub> · Stripe <sub>5</sub> · Avalonia <sub>4</sub> · Axum <sub>4</sub> · JUnit <sub>4</sub> · PHPUnit <sub>4</sub> · Playwright <sub>4</sub> · SQLx <sub>4</sub> · Framer Motion <sub>3</sub> · Jetpack Compose <sub>3</sub> · Redis <sub>3</sub> · Vitest <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · wasm-bindgen <sub>3</sub> · Android <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Coroutines <sub>2</sub> · Guzzle <sub>2</sub> · Jest <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Pterodactyl <sub>2</sub> · Zod <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · webpack <sub>2</sub> · Cobra <sub>1</sub> · Discord.Net <sub>1</sub> · Docker SDK <sub>1</sub> · Ecto <sub>1</sub> · Electron <sub>1</sub> · Expo <sub>1</sub> · FastAPI <sub>1</sub> · GORM <sub>1</sub> · Gin <sub>1</sub> · HTTPX <sub>1</sub> · Json.NET <sub>1</sub> · Paper <sub>1</sub> · PostgreSQL <sub>1</sub> · Preact <sub>1</sub> · Ratatui <sub>1</sub> · React Native <sub>1</sub> · Spring Boot <sub>1</sub> · Tauri <sub>1</sub> · chi <sub>1</sub> · discordgo <sub>1</sub> · gopher-lua <sub>1</sub> · pytest <sub>1</sub> · tonic <sub>1</sub>
<!-- /stats:languages -->
<sub>Liczone przez moje API [ghapi.dualfroz.com](https://ghapi.dualfroz.com/v2/public) ze wszystkich repozytoriów, także prywatnych. Aktualizowane raz na 24 godziny.</sub>
@@ -297,24 +301,30 @@ Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Tailwind
## 🌍 Open source
> Projekty, do których regularnie kontrybuujemy (tylko te z zaakceptowanymi zmianami). Projekty posortowane według liczby gwiazdek. Łącznie 270 000+ ⭐ w 41 repozytoriach.
<!-- stats:opensource -->
> Projekty, do których regularnie kontrybuujemy (tylko te z zaakceptowanymi zmianami). Projekty posortowane według liczby gwiazdek. Łącznie 410 000+ ⭐ w 53 repozytoriach.
| Projekt | Gwiazdki | Język | Zmiany |
|---|---|---|---|
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26,1 tys. | C# | <code>+4624</code> <code>-13</code> |
| [PHPMailer/PHPMailer](https://github.com/PHPMailer/PHPMailer) | ⭐ 22,3 tys. | PHP | <code>+8</code> <code>-2</code> |
| [zed-industries/zed](https://github.com/zed-industries/zed) | ⭐ 91,3 tys. | Rust | <code>+123</code> <code>-10</code> |
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26,2 tys. | C# | <code>+4624</code> <code>-13</code> |
| [PHPMailer/PHPMailer](https://github.com/PHPMailer/PHPMailer) | ⭐ 22,3 tys. | PHP | <code>+135</code> <code>-4</code> |
| [postcss/autoprefixer](https://github.com/postcss/autoprefixer) | ⭐ 22,2 tys. | JavaScript | <code>+50</code> <code>-4</code> |
| [Seldaek/monolog](https://github.com/Seldaek/monolog) | ⭐ 21,4 tys. | PHP | <code>+41</code> <code>-2</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21,3 tys. | Rust | <code>+87</code> <code>-19</code> |
| [PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery) | ⭐ 15 tys. | Go | <code>+76</code> <code>-4</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21,4 tys. | Rust | <code>+88</code> <code>-20</code> |
| [briannesbitt/Carbon](https://github.com/briannesbitt/Carbon) | ⭐ 16,6 tys. | PHP | <code>+87</code> <code>-0</code> |
| [PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery) | ⭐ 15 tys. | Go | <code>+183</code> <code>-18</code> |
| [App-vNext/Polly](https://github.com/App-vNext/Polly) | ⭐ 14,2 tys. | C# | <code>+19</code> <code>-1</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13,5 tys. | Go | <code>+14</code> <code>-13</code> |
| [filp/whoops](https://github.com/filp/whoops) | ⭐ 13,2 tys. | PHP | <code>+42</code> <code>-1</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12,2 tys. | JavaScript | <code>+65</code> <code>-5</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9,9 tys. | PHP | <code>+76</code> <code>-6</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13,5 tys. | Go | <code>+19</code> <code>-13</code> |
| [filp/whoops](https://github.com/filp/whoops) | ⭐ 13,2 tys. | PHP | <code>+115</code> <code>-3</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12,2 tys. | JavaScript | <code>+124</code> <code>-11</code> |
| [doctrine/lexer](https://github.com/doctrine/lexer) | ⭐ 11,1 tys. | PHP | <code>+72</code> <code>-2</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9,9 tys. | PHP | <code>+127</code> <code>-7</code> |
| [FluentValidation/FluentValidation](https://github.com/FluentValidation/FluentValidation) | ⭐ 9,8 tys. | C# | <code>+14</code> <code>-1</code> |
| [serilog/serilog](https://github.com/serilog/serilog) | ⭐ 8 tys. | C# | <code>+12</code> <code>-0</code> |
| [vscode-neovim/vscode-neovim](https://github.com/vscode-neovim/vscode-neovim) | ⭐ 7,8 tys. | TypeScript | <code>+65</code> <code>-2</code> |
| [NLog/NLog](https://github.com/NLog/NLog) | ⭐ 6,5 tys. | C# | <code>+19</code> <code>-0</code> |
| [maildev/maildev](https://github.com/maildev/maildev) | ⭐ 6,1 tys. | TypeScript | <code>+69</code> <code>-13</code> |
| [Pagefind/pagefind](https://github.com/Pagefind/pagefind) | ⭐ 5,5 tys. | Rust | <code>+48</code> <code>-2</code> |
| [xoofx/markdig](https://github.com/xoofx/markdig) | ⭐ 5,3 tys. | C# | <code>+223</code> <code>-7</code> |
| [spencermountain/spacetime](https://github.com/spencermountain/spacetime) | ⭐ 4,1 tys. | JavaScript | <code>+15</code> <code>-40</code> |
@@ -323,25 +333,33 @@ Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Tailwind
| [thephpleague/csv](https://github.com/thephpleague/csv) | ⭐ 3,5 tys. | PHP | <code>+22</code> <code>-9</code> |
| [composer/satis](https://github.com/composer/satis) | ⭐ 3,3 tys. | PHP | <code>+55</code> <code>-10</code> |
| [montanaflynn/stats](https://github.com/montanaflynn/stats) | ⭐ 3 tys. | Go | <code>+66</code> <code>-23</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 3 tys. | Go | <code>+124</code> <code>-14</code> |
| [thephpleague/commonmark](https://github.com/thephpleague/commonmark) | ⭐ 3 tys. | PHP | <code>+17</code> <code>-0</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 2,9 tys. | Go | <code>+124</code> <code>-14</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2,4 tys. | PHP | <code>+135</code> <code>-11</code> |
| [gookit/goutil](https://github.com/gookit/goutil) | ⭐ 2,4 tys. | Go | <code>+12</code> <code>-0</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2,3 tys. | PHP | <code>+135</code> <code>-11</code> |
| [pelican/panel](https://github.com/pelican/panel) | ⭐ 2,3 tys. | PHP | <code>+64</code> <code>-3</code> |
| [dedoc/scramble](https://github.com/dedoc/scramble) | ⭐ 2,2 tys. | PHP | <code>+23</code> <code>-0</code> |
| [gocarina/gocsv](https://github.com/gocarina/gocsv) | ⭐ 2,2 tys. | Go | <code>+89</code> <code>-2</code> |
| [thephpleague/html-to-markdown](https://github.com/thephpleague/html-to-markdown) | ⭐ 1,9 tys. | PHP | <code>+3</code> <code>-2</code> |
| [AfterShip/email-verifier](https://github.com/AfterShip/email-verifier) | ⭐ 1,6 tys. | Go | <code>+99</code> <code>-3</code> |
| [gookit/color](https://github.com/gookit/color) | ⭐ 1,6 tys. | Go | <code>+12</code> <code>-1</code> |
| [fabiocaccamo/python-benedict](https://github.com/fabiocaccamo/python-benedict) | ⭐ 1,6 tys. | Python | <code>+66</code> <code>-5</code> |
| [olebedev/when](https://github.com/olebedev/when) | ⭐ 1,5 tys. | Go | <code>+45</code> <code>-1</code> |
| [dgilland/pydash](https://github.com/dgilland/pydash) | ⭐ 1,4 tys. | Python | <code>+18</code> <code>-5</code> |
| [cakephp/chronos](https://github.com/cakephp/chronos) | ⭐ 1,4 tys. | PHP | <code>+17</code> <code>-2</code> |
| [go-playground/form](https://github.com/go-playground/form) | ⭐ 930 | Go | <code>+35</code> <code>-0</code> |
| [mkideal/cli](https://github.com/mkideal/cli) | ⭐ 722 | Go | <code>+22</code> <code>-1</code> |
| [mkideal/cli](https://github.com/mkideal/cli) | ⭐ 723 | Go | <code>+22</code> <code>-1</code> |
| [gookit/config](https://github.com/gookit/config) | ⭐ 585 | Go | <code>+29</code> <code>-8</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 503 | Rust | <code>+24</code> <code>-2</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 336 | Python | <code>+14</code> <code>-1</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 504 | Rust | <code>+24</code> <code>-2</code> |
| [kelindar/bitmap](https://github.com/kelindar/bitmap) | ⭐ 384 | Assembly | <code>+146</code> <code>-12</code> |
| [brick/date-time](https://github.com/brick/date-time) | ⭐ 361 | PHP | <code>+67</code> <code>-36</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 338 | Python | <code>+124</code> <code>-1</code> |
| [rodaine/table](https://github.com/rodaine/table) | ⭐ 324 | Go | <code>+32</code> <code>-2</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 86 | Rust | <code>+22</code> <code>-1</code> |
| [wroberts/pytimeparse](https://github.com/wroberts/pytimeparse) | ⭐ 299 | Python | <code>+5</code> <code>-1</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 87 | Rust | <code>+22</code> <code>-1</code> |
| [thephpleague/uri-src](https://github.com/thephpleague/uri-src) | ⭐ 51 | PHP | <code>+18</code> <code>-2</code> |
| [spiral/testing](https://github.com/spiral/testing) | ⭐ 7 | PHP | <code>+255</code> <code>-6</code> |
<!-- /stats:opensource -->
## ❓ Najczęstsze pytania
+65 -47
View File
@@ -17,7 +17,7 @@
<br>
VulCode is a Polish software house with years of experience. Since 2020 we have delivered high-quality software and written more than **3 million lines of code** across **200+ projects**. We also contributed to **41 open source repositories** with **270,000+ combined stars** on GitHub. We specialize in websites, panels and dashboards, and applications, as well as building scalable platforms, and we actively contribute to dozens of open source projects.
VulCode is a Polish software house with years of experience. Since 2020 we have delivered high-quality software and written more than **5 million lines of code** across **200+ projects**. We also contributed to **53 open source repositories** with **410,000+ combined stars** on GitHub. We specialize in websites, panels and dashboards, and applications, as well as building scalable platforms, and we actively contribute to dozens of open source projects.
## 🧩 What we do
@@ -107,25 +107,27 @@ A transparent, 7-step process from first call to production support:
## 📊 VulCode in numbers
<!-- stats:summary -->
<table>
<tr>
<td align="center" colspan="2" width="50%"><h3>3,324,107</h3>lines of code</td>
<td align="center" width="25%"><h3>17,647</h3>commits</td>
<td align="center" colspan="2" width="50%"><h3>5,994,022</h3>lines of code</td>
<td align="center" width="25%"><h3>23,830</h3>commits</td>
<td align="center" width="25%"><h3>200+</h3>projects</td>
</tr>
<tr>
<td align="center" width="25%"><h3>270,000+</h3>OSS project stars</td>
<td align="center" width="25%"><h3>41</h3>open source projects</td>
<td align="center" width="25%"><h3>410,000+</h3>OSS project stars</td>
<td align="center" width="25%"><h3>53</h3>open source projects</td>
<td align="center" width="25%"><h3>26</h3>languages</td>
<td align="center" width="25%"><h3>1,634</h3>working days</td>
<td align="center" width="25%"><h3>1,655</h3>working days</td>
</tr>
</table>
```diff
+ 3,324,107 lines added
- 502,324 lines removed
! 2,821,783 net lines
+ 5,994,022 lines added
- 778,721 lines removed
! 5,215,301 net lines
```
<!-- /stats:summary -->
<p align="center">
<img src="https://ghapi.dualfroz.com/v2/public/cards/heatmap.svg?lang=en" width="100%" alt="Commit heatmap for the last year">
@@ -137,30 +139,31 @@ A transparent, 7-step process from first call to production support:
<img src="https://ghapi.dualfroz.com/v2/public/cards/top-langs.svg?lang=en" width="495" alt="Programming languages pie chart">
</p>
<!-- stats:languages -->
<table align="center">
<tr><th></th><th align="left">Language</th><th align="right">Lines of code</th><th align="right">Commits</th><th align="right">Share</th></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">1,492,536</td><td align="right">4,406</td><td align="right">54.3% <sub>████████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">255,918</td><td align="right">892</td><td align="right">9.3% <sub>██</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">103,631</td><td align="right">124</td><td align="right">3.8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">102,759</td><td align="right">713</td><td align="right">3.7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">102,702</td><td align="right">356</td><td align="right">3.7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">85,918</td><td align="right">653</td><td align="right">3.1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80,002</td><td align="right">124</td><td align="right">2.9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">78,003</td><td align="right">380</td><td align="right">2.8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">66,884</td><td align="right">252</td><td align="right">2.4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">55,519</td><td align="right">349</td><td align="right">2.0% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">51,503</td><td align="right">388</td><td align="right">1.9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">48,135</td><td align="right">345</td><td align="right">1.7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">44,583</td><td align="right">284</td><td align="right">1.6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">40,525</td><td align="right">283</td><td align="right">1.5% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">37,655</td><td align="right">263</td><td align="right">1.4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">32,053</td><td align="right">206</td><td align="right">1.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">21,747</td><td align="right">193</td><td align="right">0.8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">14,976</td><td align="right">278</td><td align="right">0.5% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">9,922</td><td align="right">66</td><td align="right">0.4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6,013</td><td align="right">40</td><td align="right">0.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">4,857</td><td align="right">92</td><td align="right">0.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=solidity" width="18" alt="Solidity"></td><td><b>Solidity</b></td><td align="right">4,688</td><td align="right">33</td><td align="right">0.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">2,274,503</td><td align="right">6,203</td><td align="right">46.0% <sub>██████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">988,753</td><td align="right">2,516</td><td align="right">20.0% <sub>████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">281,782</td><td align="right">907</td><td align="right">5.7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">206,250</td><td align="right">796</td><td align="right">4.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">162,872</td><td align="right">752</td><td align="right">3.3% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">140,024</td><td align="right">500</td><td align="right">2.8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">130,914</td><td align="right">149</td><td align="right">2.6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">116,812</td><td align="right">437</td><td align="right">2.4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">91,810</td><td align="right">438</td><td align="right">1.9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">84,375</td><td align="right">317</td><td align="right">1.7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80,555</td><td align="right">145</td><td align="right">1.6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">61,717</td><td align="right">502</td><td align="right">1.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">57,275</td><td align="right">358</td><td align="right">1.2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">49,346</td><td align="right">355</td><td align="right">1.0% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">44,583</td><td align="right">284</td><td align="right">0.9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">38,114</td><td align="right">590</td><td align="right">0.8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">37,655</td><td align="right">263</td><td align="right">0.8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">32,053</td><td align="right">206</td><td align="right">0.6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">29,411</td><td align="right">263</td><td align="right">0.6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">13,788</td><td align="right">75</td><td align="right">0.3% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6,013</td><td align="right">40</td><td align="right">0.1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=solidity" width="18" alt="Solidity"></td><td><b>Solidity</b></td><td align="right">4,688</td><td align="right">33</td><td align="right">0.1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3,609</td><td align="right">28</td><td align="right">0.1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">3,133</td><td align="right">29</td><td align="right">0.1% <sub>█</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3,017</td><td align="right">18</td><td align="right">0.1% <sub>█</sub></td></tr>
@@ -169,7 +172,8 @@ A transparent, 7-step process from first call to production support:
**Frameworks & tools detected across projects** <sub>(repository count)</sub>
Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Tailwind CSS <sub>24</sub> · Vite <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · Serde <sub>6</sub> · Stripe <sub>5</sub> · Tokio <sub>5</sub> · reqwest <sub>5</sub> · xUnit <sub>5</sub> · Axum <sub>3</sub> · Framer Motion <sub>3</sub> · PHPUnit <sub>3</sub> · Redis <sub>3</sub> · SQLx <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · Avalonia <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Guzzle <sub>2</sub> · JUnit <sub>2</sub> · Jest <sub>2</sub> · Jetpack Compose <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Playwright <sub>2</sub> · Pterodactyl <sub>2</sub> · Spring Boot <sub>2</sub> · Zod <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · webpack <sub>2</sub> · Android <sub>1</sub>
Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Vite <sub>25</sub> · Tailwind CSS <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Serde <sub>10</sub> · Tokio <sub>7</sub> · reqwest <sub>7</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · xUnit <sub>6</sub> · Stripe <sub>5</sub> · Avalonia <sub>4</sub> · Axum <sub>4</sub> · JUnit <sub>4</sub> · PHPUnit <sub>4</sub> · Playwright <sub>4</sub> · SQLx <sub>4</sub> · Framer Motion <sub>3</sub> · Jetpack Compose <sub>3</sub> · Redis <sub>3</sub> · Vitest <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · wasm-bindgen <sub>3</sub> · Android <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Coroutines <sub>2</sub> · Guzzle <sub>2</sub> · Jest <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Pterodactyl <sub>2</sub> · Zod <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · webpack <sub>2</sub> · Cobra <sub>1</sub> · Discord.Net <sub>1</sub> · Docker SDK <sub>1</sub> · Ecto <sub>1</sub> · Electron <sub>1</sub> · Expo <sub>1</sub> · FastAPI <sub>1</sub> · GORM <sub>1</sub> · Gin <sub>1</sub> · HTTPX <sub>1</sub> · Json.NET <sub>1</sub> · Paper <sub>1</sub> · PostgreSQL <sub>1</sub> · Preact <sub>1</sub> · Ratatui <sub>1</sub> · React Native <sub>1</sub> · Spring Boot <sub>1</sub> · Tauri <sub>1</sub> · chi <sub>1</sub> · discordgo <sub>1</sub> · gopher-lua <sub>1</sub> · pytest <sub>1</sub> · tonic <sub>1</sub>
<!-- /stats:languages -->
<sub>Counted by my own API [ghapi.dualfroz.com](https://ghapi.dualfroz.com/v2/public) across every repository, private ones included. Updated daily.</sub>
@@ -303,24 +307,30 @@ Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Tailwind
## 🌍 Open source
Code that made it into projects I use every day. **45** merged pull requests in **41** repositories with **270,000+** stars combined.
<!-- stats:opensource -->
Code that made it into projects we use every day. **70** merged pull requests in **53** repositories with **410,000+** stars combined.
| Project | Stars | Language | Changes |
|---|---|---|---|
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26.1k | C# | <code>+4624</code> <code>-13</code> |
| [PHPMailer/PHPMailer](https://github.com/PHPMailer/PHPMailer) | ⭐ 22.3k | PHP | <code>+8</code> <code>-2</code> |
| [zed-industries/zed](https://github.com/zed-industries/zed) | ⭐ 91.3k | Rust | <code>+123</code> <code>-10</code> |
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26.2k | C# | <code>+4624</code> <code>-13</code> |
| [PHPMailer/PHPMailer](https://github.com/PHPMailer/PHPMailer) | ⭐ 22.3k | PHP | <code>+135</code> <code>-4</code> |
| [postcss/autoprefixer](https://github.com/postcss/autoprefixer) | ⭐ 22.2k | JavaScript | <code>+50</code> <code>-4</code> |
| [Seldaek/monolog](https://github.com/Seldaek/monolog) | ⭐ 21.4k | PHP | <code>+41</code> <code>-2</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21.3k | Rust | <code>+87</code> <code>-19</code> |
| [PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery) | ⭐ 15k | Go | <code>+76</code> <code>-4</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21.4k | Rust | <code>+88</code> <code>-20</code> |
| [briannesbitt/Carbon](https://github.com/briannesbitt/Carbon) | ⭐ 16.6k | PHP | <code>+87</code> <code>-0</code> |
| [PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery) | ⭐ 15k | Go | <code>+183</code> <code>-18</code> |
| [App-vNext/Polly](https://github.com/App-vNext/Polly) | ⭐ 14.2k | C# | <code>+19</code> <code>-1</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13.5k | Go | <code>+14</code> <code>-13</code> |
| [filp/whoops](https://github.com/filp/whoops) | ⭐ 13.2k | PHP | <code>+42</code> <code>-1</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12.2k | JavaScript | <code>+65</code> <code>-5</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9.9k | PHP | <code>+76</code> <code>-6</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13.5k | Go | <code>+19</code> <code>-13</code> |
| [filp/whoops](https://github.com/filp/whoops) | ⭐ 13.2k | PHP | <code>+115</code> <code>-3</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12.2k | JavaScript | <code>+124</code> <code>-11</code> |
| [doctrine/lexer](https://github.com/doctrine/lexer) | ⭐ 11.1k | PHP | <code>+72</code> <code>-2</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9.9k | PHP | <code>+127</code> <code>-7</code> |
| [FluentValidation/FluentValidation](https://github.com/FluentValidation/FluentValidation) | ⭐ 9.8k | C# | <code>+14</code> <code>-1</code> |
| [serilog/serilog](https://github.com/serilog/serilog) | ⭐ 8k | C# | <code>+12</code> <code>-0</code> |
| [vscode-neovim/vscode-neovim](https://github.com/vscode-neovim/vscode-neovim) | ⭐ 7.8k | TypeScript | <code>+65</code> <code>-2</code> |
| [NLog/NLog](https://github.com/NLog/NLog) | ⭐ 6.5k | C# | <code>+19</code> <code>-0</code> |
| [maildev/maildev](https://github.com/maildev/maildev) | ⭐ 6.1k | TypeScript | <code>+69</code> <code>-13</code> |
| [Pagefind/pagefind](https://github.com/Pagefind/pagefind) | ⭐ 5.5k | Rust | <code>+48</code> <code>-2</code> |
| [xoofx/markdig](https://github.com/xoofx/markdig) | ⭐ 5.3k | C# | <code>+223</code> <code>-7</code> |
| [spencermountain/spacetime](https://github.com/spencermountain/spacetime) | ⭐ 4.1k | JavaScript | <code>+15</code> <code>-40</code> |
@@ -329,25 +339,33 @@ Code that made it into projects I use every day. **45** merged pull requests in
| [thephpleague/csv](https://github.com/thephpleague/csv) | ⭐ 3.5k | PHP | <code>+22</code> <code>-9</code> |
| [composer/satis](https://github.com/composer/satis) | ⭐ 3.3k | PHP | <code>+55</code> <code>-10</code> |
| [montanaflynn/stats](https://github.com/montanaflynn/stats) | ⭐ 3k | Go | <code>+66</code> <code>-23</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 3k | Go | <code>+124</code> <code>-14</code> |
| [thephpleague/commonmark](https://github.com/thephpleague/commonmark) | ⭐ 3k | PHP | <code>+17</code> <code>-0</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 2.9k | Go | <code>+124</code> <code>-14</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2.4k | PHP | <code>+135</code> <code>-11</code> |
| [gookit/goutil](https://github.com/gookit/goutil) | ⭐ 2.4k | Go | <code>+12</code> <code>-0</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2.3k | PHP | <code>+135</code> <code>-11</code> |
| [pelican/panel](https://github.com/pelican/panel) | ⭐ 2.3k | PHP | <code>+64</code> <code>-3</code> |
| [dedoc/scramble](https://github.com/dedoc/scramble) | ⭐ 2.2k | PHP | <code>+23</code> <code>-0</code> |
| [gocarina/gocsv](https://github.com/gocarina/gocsv) | ⭐ 2.2k | Go | <code>+89</code> <code>-2</code> |
| [thephpleague/html-to-markdown](https://github.com/thephpleague/html-to-markdown) | ⭐ 1.9k | PHP | <code>+3</code> <code>-2</code> |
| [AfterShip/email-verifier](https://github.com/AfterShip/email-verifier) | ⭐ 1.6k | Go | <code>+99</code> <code>-3</code> |
| [gookit/color](https://github.com/gookit/color) | ⭐ 1.6k | Go | <code>+12</code> <code>-1</code> |
| [fabiocaccamo/python-benedict](https://github.com/fabiocaccamo/python-benedict) | ⭐ 1.6k | Python | <code>+66</code> <code>-5</code> |
| [olebedev/when](https://github.com/olebedev/when) | ⭐ 1.5k | Go | <code>+45</code> <code>-1</code> |
| [dgilland/pydash](https://github.com/dgilland/pydash) | ⭐ 1.4k | Python | <code>+18</code> <code>-5</code> |
| [cakephp/chronos](https://github.com/cakephp/chronos) | ⭐ 1.4k | PHP | <code>+17</code> <code>-2</code> |
| [go-playground/form](https://github.com/go-playground/form) | ⭐ 930 | Go | <code>+35</code> <code>-0</code> |
| [mkideal/cli](https://github.com/mkideal/cli) | ⭐ 722 | Go | <code>+22</code> <code>-1</code> |
| [mkideal/cli](https://github.com/mkideal/cli) | ⭐ 723 | Go | <code>+22</code> <code>-1</code> |
| [gookit/config](https://github.com/gookit/config) | ⭐ 585 | Go | <code>+29</code> <code>-8</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 503 | Rust | <code>+24</code> <code>-2</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 336 | Python | <code>+14</code> <code>-1</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 504 | Rust | <code>+24</code> <code>-2</code> |
| [kelindar/bitmap](https://github.com/kelindar/bitmap) | ⭐ 384 | Assembly | <code>+146</code> <code>-12</code> |
| [brick/date-time](https://github.com/brick/date-time) | ⭐ 361 | PHP | <code>+67</code> <code>-36</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 338 | Python | <code>+124</code> <code>-1</code> |
| [rodaine/table](https://github.com/rodaine/table) | ⭐ 324 | Go | <code>+32</code> <code>-2</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 86 | Rust | <code>+22</code> <code>-1</code> |
| [wroberts/pytimeparse](https://github.com/wroberts/pytimeparse) | ⭐ 299 | Python | <code>+5</code> <code>-1</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 87 | Rust | <code>+22</code> <code>-1</code> |
| [thephpleague/uri-src](https://github.com/thephpleague/uri-src) | ⭐ 51 | PHP | <code>+18</code> <code>-2</code> |
| [spiral/testing](https://github.com/spiral/testing) | ⭐ 7 | PHP | <code>+255</code> <code>-6</code> |
<!-- /stats:opensource -->
## ❓ Frequently asked questions
+68 -50
View File
@@ -17,7 +17,7 @@
<br>
VulCode to polski software house z wieloletnim doświadczeniem. Od 2020 roku dostarczamy oprogramowanie wysokiej jakości i napisaliśmy już ponad **3 mln linijek kodu** w **200+ projektach**. Dołożyliśmy też swoją cegiełkę do **41 repozytoriów open source**, które łącznie mają **270 000+ gwiazdek** na GitHubie. Specjalizujemy się w stronach internetowych, panelach i dashboardach oraz aplikacjach, a także w budowie skalowalnych platform. Aktywnie kontrybuujemy do dziesiątek projektów open source.
VulCode to polski software house z wieloletnim doświadczeniem. Od 2020 roku dostarczamy oprogramowanie wysokiej jakości i napisaliśmy już ponad **5 mln linijek kodu** w **200+ projektach**. Dołożyliśmy też swoją cegiełkę do **53 repozytoriów open source**, które łącznie mają **410 000+ gwiazdek** na GitHubie. Specjalizujemy się w stronach internetowych, panelach i dashboardach oraz aplikacjach, a także w budowie skalowalnych platform. Aktywnie kontrybuujemy do dziesiątek projektów open source.
## 🧩 Czym się zajmujemy?
@@ -107,25 +107,27 @@ Przejrzysty, 7-etapowy proces realizacji projektu:
## 📊 VulCode w liczbach
<!-- stats:summary -->
<table>
<tr>
<td align="center" colspan="2" width="50%"><h3>3 324 107</h3>linii kodu</td>
<td align="center" width="25%"><h3>17 647</h3>commitów</td>
<td align="center" colspan="2" width="50%"><h3>5 994 022</h3>linii kodu</td>
<td align="center" width="25%"><h3>23 830</h3>commitów</td>
<td align="center" width="25%"><h3>200+</h3>projektów</td>
</tr>
<tr>
<td align="center" width="25%"><h3>270 000+</h3>gwiazdek projektów OSS</td>
<td align="center" width="25%"><h3>41</h3>projektów open source</td>
<td align="center" width="25%"><h3>410 000+</h3>gwiazdek projektów OSS</td>
<td align="center" width="25%"><h3>53</h3>projektów open source</td>
<td align="center" width="25%"><h3>26</h3>języków</td>
<td align="center" width="25%"><h3>1 634</h3>dni pracy</td>
<td align="center" width="25%"><h3>1 655</h3>dni pracy</td>
</tr>
</table>
```diff
+ 3 324 107 linii dodanych
- 502 324 linii usuniętych
! 2 821 783 linii netto
+ 5 994 022 linii dodanych
- 778 721 linii usuniętych
! 5 215 301 linii netto
```
<!-- /stats:summary -->
### Języki
@@ -133,39 +135,41 @@ Przejrzysty, 7-etapowy proces realizacji projektu:
<img src="https://ghapi.dualfroz.com/v2/public/cards/top-langs.svg" width="495" alt="Wykres kołowy języków programowania">
</p>
<!-- stats:languages -->
<table align="center">
<tr><th></th><th align="left">Język</th><th align="right">Linie kodu</th><th align="right">Commity</th><th align="right">Udział</th></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">1 492 536</td><td align="right">4 406</td><td align="right">54,3% <sub>████████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">255 918</td><td align="right">892</td><td align="right">9,3% <sub>██</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">103 631</td><td align="right">124</td><td align="right">3,8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">102 759</td><td align="right">713</td><td align="right">3,7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">102 702</td><td align="right">356</td><td align="right">3,7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">85 918</td><td align="right">653</td><td align="right">3,1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80 002</td><td align="right">124</td><td align="right">2,9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">78 003</td><td align="right">380</td><td align="right">2,8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">66 884</td><td align="right">252</td><td align="right">2,4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">55 519</td><td align="right">349</td><td align="right">2,0% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">51 503</td><td align="right">388</td><td align="right">1,9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">48 135</td><td align="right">345</td><td align="right">1,7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">44 583</td><td align="right">284</td><td align="right">1,6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">40 525</td><td align="right">283</td><td align="right">1,5% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">37 655</td><td align="right">263</td><td align="right">1,4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">32 053</td><td align="right">206</td><td align="right">1,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">21 747</td><td align="right">193</td><td align="right">0,8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">14 976</td><td align="right">278</td><td align="right">0,5% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">9 922</td><td align="right">66</td><td align="right">0,4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6 013</td><td align="right">40</td><td align="right">0,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">4 857</td><td align="right">92</td><td align="right">0,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=solidity" width="18" alt="Solidity"></td><td><b>Solidity</b></td><td align="right">4 688</td><td align="right">33</td><td align="right">0,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3 609</td><td align="right">28</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">3 133</td><td align="right">29</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3 017</td><td align="right">18</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">2 274 503</td><td align="right">6 203</td><td align="right">46,0% <sub>██████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">988 753</td><td align="right">2 516</td><td align="right">20,0% <sub>████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">281 782</td><td align="right">907</td><td align="right">5,7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">206 250</td><td align="right">796</td><td align="right">4,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">162 872</td><td align="right">752</td><td align="right">3,3% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">140 024</td><td align="right">500</td><td align="right">2,8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">130 914</td><td align="right">149</td><td align="right">2,6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">116 812</td><td align="right">437</td><td align="right">2,4% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">91 810</td><td align="right">438</td><td align="right">1,9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">84 375</td><td align="right">317</td><td align="right">1,7% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80 555</td><td align="right">145</td><td align="right">1,6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">61 717</td><td align="right">502</td><td align="right">1,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">57 275</td><td align="right">358</td><td align="right">1,2% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">49 346</td><td align="right">355</td><td align="right">1,0% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">44 583</td><td align="right">284</td><td align="right">0,9% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">38 114</td><td align="right">590</td><td align="right">0,8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">37 655</td><td align="right">263</td><td align="right">0,8% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">32 053</td><td align="right">206</td><td align="right">0,6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">29 411</td><td align="right">263</td><td align="right">0,6% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">13 788</td><td align="right">75</td><td align="right">0,3% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6 013</td><td align="right">40</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=solidity" width="18" alt="Solidity"></td><td><b>Solidity</b></td><td align="right">4 688</td><td align="right">33</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3 609</td><td align="right">28</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">3 133</td><td align="right">29</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3 017</td><td align="right">18</td><td align="right">0,1% <sub>█</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/assembly.png" width="18" alt="Assembly"></td><td><b>Assembly</b></td><td align="right">397</td><td align="right">6</td><td align="right">0,0% <sub>█</sub></td></tr>
</table>
**Frameworki i narzędzia wykryte w projektach** <sub>(liczba repozytoriów)</sub>
Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Tailwind CSS <sub>24</sub> · Vite <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · Serde <sub>6</sub> · Stripe <sub>5</sub> · Tokio <sub>5</sub> · reqwest <sub>5</sub> · xUnit <sub>5</sub> · Axum <sub>3</sub> · Framer Motion <sub>3</sub> · PHPUnit <sub>3</sub> · Redis <sub>3</sub> · SQLx <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · Avalonia <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Guzzle <sub>2</sub> · JUnit <sub>2</sub> · Jest <sub>2</sub> · Jetpack Compose <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Playwright <sub>2</sub> · Pterodactyl <sub>2</sub> · Spring Boot <sub>2</sub> · Zod <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · webpack <sub>2</sub> · Android <sub>1</sub>
Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Vite <sub>25</sub> · Tailwind CSS <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Serde <sub>10</sub> · Tokio <sub>7</sub> · reqwest <sub>7</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · xUnit <sub>6</sub> · Stripe <sub>5</sub> · Avalonia <sub>4</sub> · Axum <sub>4</sub> · JUnit <sub>4</sub> · PHPUnit <sub>4</sub> · Playwright <sub>4</sub> · SQLx <sub>4</sub> · Framer Motion <sub>3</sub> · Jetpack Compose <sub>3</sub> · Redis <sub>3</sub> · Vitest <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · wasm-bindgen <sub>3</sub> · Android <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Coroutines <sub>2</sub> · Guzzle <sub>2</sub> · Jest <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Pterodactyl <sub>2</sub> · Zod <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · webpack <sub>2</sub> · Cobra <sub>1</sub> · Discord.Net <sub>1</sub> · Docker SDK <sub>1</sub> · Ecto <sub>1</sub> · Electron <sub>1</sub> · Expo <sub>1</sub> · FastAPI <sub>1</sub> · GORM <sub>1</sub> · Gin <sub>1</sub> · HTTPX <sub>1</sub> · Json.NET <sub>1</sub> · Paper <sub>1</sub> · PostgreSQL <sub>1</sub> · Preact <sub>1</sub> · Ratatui <sub>1</sub> · React Native <sub>1</sub> · Spring Boot <sub>1</sub> · Tauri <sub>1</sub> · chi <sub>1</sub> · discordgo <sub>1</sub> · gopher-lua <sub>1</sub> · pytest <sub>1</sub> · tonic <sub>1</sub>
<!-- /stats:languages -->
<sub>Liczone przez moje API [ghapi.dualfroz.com](https://ghapi.dualfroz.com/v2/public) ze wszystkich repozytoriów, także prywatnych. Aktualizowane raz na 24 godziny.</sub>
@@ -297,24 +301,30 @@ Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Tailwind
## 🌍 Open source
> Projekty, do których regularnie kontrybuujemy (tylko te z zaakceptowanymi zmianami). Projekty posortowane według liczby gwiazdek. Łącznie 270 000+ ⭐ w 41 repozytoriach.
<!-- stats:opensource -->
> Projekty, do których regularnie kontrybuujemy (tylko te z zaakceptowanymi zmianami). Projekty posortowane według liczby gwiazdek. Łącznie 410 000+ ⭐ w 53 repozytoriach.
| Projekt | Gwiazdki | Język | Zmiany |
|---|---|---|---|
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26,1 tys. | C# | <code>+4624</code> <code>-13</code> |
| [PHPMailer/PHPMailer](https://github.com/PHPMailer/PHPMailer) | ⭐ 22,3 tys. | PHP | <code>+8</code> <code>-2</code> |
| [zed-industries/zed](https://github.com/zed-industries/zed) | ⭐ 91,3 tys. | Rust | <code>+123</code> <code>-10</code> |
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26,2 tys. | C# | <code>+4624</code> <code>-13</code> |
| [PHPMailer/PHPMailer](https://github.com/PHPMailer/PHPMailer) | ⭐ 22,3 tys. | PHP | <code>+135</code> <code>-4</code> |
| [postcss/autoprefixer](https://github.com/postcss/autoprefixer) | ⭐ 22,2 tys. | JavaScript | <code>+50</code> <code>-4</code> |
| [Seldaek/monolog](https://github.com/Seldaek/monolog) | ⭐ 21,4 tys. | PHP | <code>+41</code> <code>-2</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21,3 tys. | Rust | <code>+87</code> <code>-19</code> |
| [PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery) | ⭐ 15 tys. | Go | <code>+76</code> <code>-4</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21,4 tys. | Rust | <code>+88</code> <code>-20</code> |
| [briannesbitt/Carbon](https://github.com/briannesbitt/Carbon) | ⭐ 16,6 tys. | PHP | <code>+87</code> <code>-0</code> |
| [PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery) | ⭐ 15 tys. | Go | <code>+183</code> <code>-18</code> |
| [App-vNext/Polly](https://github.com/App-vNext/Polly) | ⭐ 14,2 tys. | C# | <code>+19</code> <code>-1</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13,5 tys. | Go | <code>+14</code> <code>-13</code> |
| [filp/whoops](https://github.com/filp/whoops) | ⭐ 13,2 tys. | PHP | <code>+42</code> <code>-1</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12,2 tys. | JavaScript | <code>+65</code> <code>-5</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9,9 tys. | PHP | <code>+76</code> <code>-6</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13,5 tys. | Go | <code>+19</code> <code>-13</code> |
| [filp/whoops](https://github.com/filp/whoops) | ⭐ 13,2 tys. | PHP | <code>+115</code> <code>-3</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12,2 tys. | JavaScript | <code>+124</code> <code>-11</code> |
| [doctrine/lexer](https://github.com/doctrine/lexer) | ⭐ 11,1 tys. | PHP | <code>+72</code> <code>-2</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9,9 tys. | PHP | <code>+127</code> <code>-7</code> |
| [FluentValidation/FluentValidation](https://github.com/FluentValidation/FluentValidation) | ⭐ 9,8 tys. | C# | <code>+14</code> <code>-1</code> |
| [serilog/serilog](https://github.com/serilog/serilog) | ⭐ 8 tys. | C# | <code>+12</code> <code>-0</code> |
| [vscode-neovim/vscode-neovim](https://github.com/vscode-neovim/vscode-neovim) | ⭐ 7,8 tys. | TypeScript | <code>+65</code> <code>-2</code> |
| [NLog/NLog](https://github.com/NLog/NLog) | ⭐ 6,5 tys. | C# | <code>+19</code> <code>-0</code> |
| [maildev/maildev](https://github.com/maildev/maildev) | ⭐ 6,1 tys. | TypeScript | <code>+69</code> <code>-13</code> |
| [Pagefind/pagefind](https://github.com/Pagefind/pagefind) | ⭐ 5,5 tys. | Rust | <code>+48</code> <code>-2</code> |
| [xoofx/markdig](https://github.com/xoofx/markdig) | ⭐ 5,3 tys. | C# | <code>+223</code> <code>-7</code> |
| [spencermountain/spacetime](https://github.com/spencermountain/spacetime) | ⭐ 4,1 tys. | JavaScript | <code>+15</code> <code>-40</code> |
@@ -323,25 +333,33 @@ Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Tailwind
| [thephpleague/csv](https://github.com/thephpleague/csv) | ⭐ 3,5 tys. | PHP | <code>+22</code> <code>-9</code> |
| [composer/satis](https://github.com/composer/satis) | ⭐ 3,3 tys. | PHP | <code>+55</code> <code>-10</code> |
| [montanaflynn/stats](https://github.com/montanaflynn/stats) | ⭐ 3 tys. | Go | <code>+66</code> <code>-23</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 3 tys. | Go | <code>+124</code> <code>-14</code> |
| [thephpleague/commonmark](https://github.com/thephpleague/commonmark) | ⭐ 3 tys. | PHP | <code>+17</code> <code>-0</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 2,9 tys. | Go | <code>+124</code> <code>-14</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2,4 tys. | PHP | <code>+135</code> <code>-11</code> |
| [gookit/goutil](https://github.com/gookit/goutil) | ⭐ 2,4 tys. | Go | <code>+12</code> <code>-0</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2,3 tys. | PHP | <code>+135</code> <code>-11</code> |
| [pelican/panel](https://github.com/pelican/panel) | ⭐ 2,3 tys. | PHP | <code>+64</code> <code>-3</code> |
| [dedoc/scramble](https://github.com/dedoc/scramble) | ⭐ 2,2 tys. | PHP | <code>+23</code> <code>-0</code> |
| [gocarina/gocsv](https://github.com/gocarina/gocsv) | ⭐ 2,2 tys. | Go | <code>+89</code> <code>-2</code> |
| [thephpleague/html-to-markdown](https://github.com/thephpleague/html-to-markdown) | ⭐ 1,9 tys. | PHP | <code>+3</code> <code>-2</code> |
| [AfterShip/email-verifier](https://github.com/AfterShip/email-verifier) | ⭐ 1,6 tys. | Go | <code>+99</code> <code>-3</code> |
| [gookit/color](https://github.com/gookit/color) | ⭐ 1,6 tys. | Go | <code>+12</code> <code>-1</code> |
| [fabiocaccamo/python-benedict](https://github.com/fabiocaccamo/python-benedict) | ⭐ 1,6 tys. | Python | <code>+66</code> <code>-5</code> |
| [olebedev/when](https://github.com/olebedev/when) | ⭐ 1,5 tys. | Go | <code>+45</code> <code>-1</code> |
| [dgilland/pydash](https://github.com/dgilland/pydash) | ⭐ 1,4 tys. | Python | <code>+18</code> <code>-5</code> |
| [cakephp/chronos](https://github.com/cakephp/chronos) | ⭐ 1,4 tys. | PHP | <code>+17</code> <code>-2</code> |
| [go-playground/form](https://github.com/go-playground/form) | ⭐ 930 | Go | <code>+35</code> <code>-0</code> |
| [mkideal/cli](https://github.com/mkideal/cli) | ⭐ 722 | Go | <code>+22</code> <code>-1</code> |
| [mkideal/cli](https://github.com/mkideal/cli) | ⭐ 723 | Go | <code>+22</code> <code>-1</code> |
| [gookit/config](https://github.com/gookit/config) | ⭐ 585 | Go | <code>+29</code> <code>-8</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 503 | Rust | <code>+24</code> <code>-2</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 336 | Python | <code>+14</code> <code>-1</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 504 | Rust | <code>+24</code> <code>-2</code> |
| [kelindar/bitmap](https://github.com/kelindar/bitmap) | ⭐ 384 | Assembly | <code>+146</code> <code>-12</code> |
| [brick/date-time](https://github.com/brick/date-time) | ⭐ 361 | PHP | <code>+67</code> <code>-36</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 338 | Python | <code>+124</code> <code>-1</code> |
| [rodaine/table](https://github.com/rodaine/table) | ⭐ 324 | Go | <code>+32</code> <code>-2</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 86 | Rust | <code>+22</code> <code>-1</code> |
| [wroberts/pytimeparse](https://github.com/wroberts/pytimeparse) | ⭐ 299 | Python | <code>+5</code> <code>-1</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 87 | Rust | <code>+22</code> <code>-1</code> |
| [thephpleague/uri-src](https://github.com/thephpleague/uri-src) | ⭐ 51 | PHP | <code>+18</code> <code>-2</code> |
| [spiral/testing](https://github.com/spiral/testing) | ⭐ 7 | PHP | <code>+255</code> <code>-6</code> |
<!-- /stats:opensource -->
## ❓ Najczęstsze pytania
+170
View File
@@ -0,0 +1,170 @@
#!/usr/bin/env python3
"""Refresh the numbers in the VulCodeCom profile READMEs (pl and en) from ghapi.
Rewrites four places, all from https://ghapi.dualfroz.com/v2/public:
- the intro sentence with lines of code and open source totals,
- the "In numbers" table and the diff block (between <!-- stats:summary --> markers),
- the languages table and the frameworks line (<!-- stats:languages -->),
- the open source list (<!-- stats:opensource -->).
Run it from the repository root: python3 scripts/update_readme_stats.py
"""
import json
import re
import urllib.request
API = "https://ghapi.dualfroz.com/v2/public"
FILES = {"pl": ["profile/README.md", "README.md"], "en": ["profile/README.en.md", "README.en.md"]}
TEXT = {
"pl": {
"loc": "linii kodu", "commits": "commitów", "projects": "projektów",
"oss_stars": "gwiazdek projektów OSS", "oss_projects": "projektów open source",
"languages": "języków", "days": "dni pracy",
"added": "linii dodanych", "removed": "linii usuniętych", "net": "linii netto",
"head": ("Język", "Linie kodu", "Commity", "Udział"),
"oss_intro": "> Projekty, do których regularnie kontrybuujemy (tylko te z zaakceptowanymi zmianami). "
"Projekty posortowane według liczby gwiazdek. Łącznie {stars}+ ⭐ w {repos} repozytoriach.",
"oss_head": "| Projekt | Gwiazdki | Język | Zmiany |",
},
"en": {
"loc": "lines of code", "commits": "commits", "projects": "projects",
"oss_stars": "OSS project stars", "oss_projects": "open source projects",
"languages": "languages", "days": "working days",
"added": "lines added", "removed": "lines removed", "net": "net lines",
"head": ("Language", "Lines of code", "Commits", "Share"),
"oss_intro": "Code that made it into projects we use every day. **{prs}** merged pull requests "
"in **{repos}** repositories with **{stars}+** stars combined.",
"oss_head": "| Project | Stars | Language | Changes |",
},
}
def get(path):
request = urllib.request.Request(f"{API}{path}", headers={"User-Agent": "dualfroz-readme"})
with urllib.request.urlopen(request, timeout=60) as response:
return json.load(response)
def num(value, lang):
text = f"{int(value):,}"
return text.replace(",", " ") if lang == "pl" else text
def floor_to(value, step):
return value // step * step
def stars_short(value, lang):
if value < 1000:
return str(value)
k = f"{value / 1000:.1f}".rstrip("0").rstrip(".")
return f"{k.replace('.', ',')} tys." if lang == "pl" else f"{k}k"
def block(content, name, body):
start, end = f"<!-- stats:{name} -->", f"<!-- /stats:{name} -->"
pattern = re.compile(re.escape(start) + r".*?" + re.escape(end), re.S)
if not pattern.search(content):
raise SystemExit(f"missing {start} markers")
return pattern.sub(lambda _: f"{start}\n{body}\n{end}", content)
def summary(s, lang):
t, oss = s["totals"], s["openSource"]["contributed"]
T = TEXT[lang]
net = t["linesAdded"] - t["linesRemoved"]
return f"""<table>
<tr>
<td align="center" colspan="2" width="50%"><h3>{num(t["linesAdded"], lang)}</h3>{T["loc"]}</td>
<td align="center" width="25%"><h3>{num(t["commits"], lang)}</h3>{T["commits"]}</td>
<td align="center" width="25%"><h3>200+</h3>{T["projects"]}</td>
</tr>
<tr>
<td align="center" width="25%"><h3>{num(floor_to(oss["stars"], 10_000), lang)}+</h3>{T["oss_stars"]}</td>
<td align="center" width="25%"><h3>{num(oss["repos"], lang)}</h3>{T["oss_projects"]}</td>
<td align="center" width="25%"><h3>{num(t["languages"], lang)}</h3>{T["languages"]}</td>
<td align="center" width="25%"><h3>{num(t["activeDays"], lang)}</h3>{T["days"]}</td>
</tr>
</table>
```diff
+ {num(t["linesAdded"], lang)} {T["added"]}
- {num(t["linesRemoved"], lang)} {T["removed"]}
! {num(net, lang)} {T["net"]}
```"""
def languages(langs, frameworks, icons, lang):
T = TEXT[lang]
rows = []
for item in langs:
pct = item["share"] * 100
share = f"{pct:.1f}%"
if lang == "pl":
share = share.replace(".", ",")
bar = "█" * max(1, round(pct / 4.5))
icon = icons.get(item["name"], "")
icon_td = f'<img src="{icon}" width="18" alt="{item["name"]}">' if icon else ""
rows.append(
f' <tr><td>{icon_td}</td><td><b>{item["name"]}</b></td>'
f'<td align="right">{num(item["linesAdded"], lang)}</td>'
f'<td align="right">{num(item["commits"], lang)}</td>'
f'<td align="right">{share} <sub>{bar}</sub></td></tr>'
)
head = "".join(f'<th align="{"left" if i == 0 else "right"}">{h}</th>' for i, h in enumerate(T["head"]))
table = '<table align="center">\n <tr><th></th>' + head + "</tr>\n" + "\n".join(rows) + "\n</table>"
fw = " · ".join(f'{f["name"]} <sub>{f["repos"]}</sub>' for f in frameworks)
heading = ("**Frameworki i narzędzia wykryte w projektach** <sub>(liczba repozytoriów)</sub>" if lang == "pl"
else "**Frameworks & tools detected across projects** <sub>(repository count)</sub>")
return f"{table}\n\n{heading}\n\n{fw}"
def opensource(oss, lang):
T = TEXT[lang]
merged = sorted((p for p in oss["projects"] if p["merged"] > 0), key=lambda p: -p["stars"])
stars = floor_to(oss["contributed"]["stars"], 10_000)
intro_line = T["oss_intro"].format(stars=num(stars, lang), repos=len(merged), prs=num(oss["pullRequests"]["merged"], lang))
lines = [intro_line, "", T["oss_head"], "|---|---|---|---|"]
for p in merged:
lines.append(
f'| [{p["name"]}]({p["url"]}) | ⭐ {stars_short(p["stars"], lang)} | {p.get("language") or "-"} | '
f'<code>+{p["linesAdded"]}</code> <code>-{p["linesRemoved"]}</code> |'
)
return "\n".join(lines)
def intro(content, s, lang):
t, oss = s["totals"], s["openSource"]["contributed"]
millions = t["linesAdded"] // 1_000_000
stars = floor_to(oss["stars"], 10_000)
if lang == "pl":
content = re.sub(r"ponad \*\*\d+ mln linijek kodu\*\*", f"ponad **{millions} mln linijek kodu**", content)
content = re.sub(r"cegiełkę do \*\*\d+ repozytoriów open source\*\*", f"cegiełkę do **{oss['repos']} repozytoriów open source**", content)
content = re.sub(r"mają \*\*[\d ]+\+ gwiazdek\*\*", f"mają **{num(stars, lang)}+ gwiazdek**", content)
else:
content = re.sub(r"more than \*\*\d+ million lines of code\*\*", f"more than **{millions} million lines of code**", content)
content = re.sub(r"contributed to \*\*\d+ open source repositories\*\*", f"contributed to **{oss['repos']} open source repositories**", content)
content = re.sub(r"\*\*[\d,]+\+ combined stars\*\*", f"**{num(stars, lang)}+ combined stars**", content)
return content
def main():
frameworks = get("/frameworks")["frameworks"]
oss = get("/opensource?limit=500")
for lang, paths in FILES.items():
s = get(f"/summary?lang={lang}")
langs = get(f"/languages?limit=100&lang={lang}")["languages"]
for path in paths:
content = open(path, encoding="utf-8").read()
icons = dict((m.group(2), m.group(1)) for m in re.finditer(
r'<tr><td><img src="([^"]+)" width="18" alt="([^"]+)"></td>', content))
content = intro(content, s, lang)
content = block(content, "summary", summary(s, lang))
content = block(content, "languages", languages(langs, frameworks, icons, lang))
content = block(content, "opensource", opensource(oss, lang))
open(path, "w", encoding="utf-8").write(content)
print(f"{path}: updated")
if __name__ == "__main__":
main()