In KaiCode’24, we received 412 applications. After a three-phased review of them, the jury made a decision to reward three projects:
The vprusso/toqito project (129★), a Python library for studying various objects in quantum information, demonstrated to us what we call perfect quality of coding and repository organization, with elegant coding practices, linters in CI, high coverage percentage, code documentation, issues, and pull requests as part of development discipline. $2048 was the reward.
The orhun/git-cliff project (8.3K★), a customizable changelog generator, impressed us with its excellent easy-to-read source code, build pipeline organization, integration testing, and active issue triaging. However, code coverage is rather low, some functions are too long, there is a lack of peer reviews, and a lack of clarity in the repository structure. $1024 was the reward.
The codedredd/pinia-orm project (429★), a type-safe ORM for Pinia, showed us awesome coding practices, static analysis in CI, good test coverage, active bug tracking, and pull request organization. However, there are some pretty large source code files, utility classes, a lack of peer reviews, no licensing information in source files, and a pretty weak static analysis. $512 was the reward.
Jury
These programmers are in the jury (in alphabetic order of their GitHub nicknames):
Important Dates
Project submission:
31 May 2024 (Anywhere on Earth)
Authors notification:
1 7 July 2024
Rules
This is how it worked.
First, you submit your open-source product to us. Then, our jury will review it. If your product wins, we give you a monetary reward and a laurel badge that you can attach to your README file.
In order to get into the competition, your product must be:
- Hosted on GitHub
- Larger than 4,000 SLOC
(
cloc
without arguments, counting only first three lines, without comments) - Older than 12 months (since the first commit)
- Younger than 60 months (since the first commit)
- Not yet a winner of KaiCode
To win, your product must demonstrate the highest quality of code and development processes. In particular, the jury pays attention to the following (in no particular order):
- Clean code
- Design choices
- Coding conventions control
- Static analysis
- Unit testing
- Integration testing
- Code coverage control
- Requirements
- Documentation
- Git branching
- Bug and issue tracking
- Code reviews
- Continuous Integration
- Releases and semantic versioning
- Licensing
This doesn’t matter:
- How popular is your product?
- What programming languages do you use?
- What is the license?
- What is the programming paradigm (OOP, FP, etc.)?
One GitHub user may submit up to three projects.
We reserve the right to reject any product without explanation.
Participants
We received 412 applications (excluding duplicates and broken submissions).
Then, we semi-automatically split the list into three groups. The first group contained XXX that didn’t match the criteria of the competition or were obviously not qualified for the winning (we created a software that calculated repository age, size, the presence of CI, the number of issues, pull requests, commits, etc):
- 1hanzla100/developer-portfolio
- aceld/zinx
- 0x7c13/Pal3.Unity
- ada-url/ada
- adam-mcdaniel/chess-engine
- adam-mcdaniel/dune
- adam-mcdaniel/sage
- adamlui/chatgpt-apps
- aimclub/FEDOT
- airtai/faststream
- Akash1362000/Django_Student_Management_System
- Akash1362000/News-Web-App
- akgulebubekir/PdfSharp.Maui
- AlaBouali/bane
- AlaBouali/xtelnet
- albertvaka/bettercounter/
- Alec-Wright/Automated-GuitarAmpModelling
- alexandrehtrb/Pororoca
- alploskov/kithon
- amidos2006/gym-pcgrl
- AminHP/gym-anytrading
- AminHP/gym-mtsim
- AndraxDev/speak-gpt
- andre-fuchs/kerning-pairs
- anggastudio/Printama
- AnonymousX1025/AnonXMusic
- arkivanov/Decompose
- askerlee/adaprompt
- atenreiro/opensquat
- aydinnyunus/wallet-tracker
- bkaankose/Wino-Mail/
- bony2023/react-terminal
- bouncepaw/betula
- BoykaFramework/boyka-framework
- bshishov/ctor
- bshishov/typedi
- camUrban/PteraSoftware
- captbaritone/grats
- cathei/LinqGen
- cedricdelpoux/gatsby-source-google-docs
- ceifa/wasmoon
- cerbero90/json-parser
- clairton/unoapi-cloud
- ClementGre/PDF4Teachers
- Cloud9c/taro
- cloudhead/nakamoto
- CNSeniorious000/free-chat
- CodeBoy722/MediaFacer_Kotlin
- congcoi123/tenio
- crossoverJie/gscript
- crossoverJie/xjson
- ctreminiom/go-atlassian
- CYBERDEVILZ/File-Segregator
- CYBERDEVILZ/Stock-Market-Prediction
- CYBERDEVILZ/YoutubeBot
- CyferShepard/Jellystat
- dailenson/SDT
- dangiu/PicoMemcard
- danieladov/jellyfin-plugin-mergeversions
- danieladov/jellyfin-plugin-skin-manager
- danieladov/jellyfin-plugin-themesongs
- DanielRendox/RoutineTracker
- danilkinkin/buckwheat
- danilrafiqi/react-native-stepper-ui
- daohu527/imap
- DavidRomanovizc/DatingBot
- dbartholomae/lambda-middleware
- dcaribou/transfermarkt-datasets
- deepch/RTSPtoWeb
- deepch/vdk
- DerYeger/yeger
- dev-yakuza/react-native-image-modal
- DingWB/PyComplexHeatmap
- diningphil/PyDGN
- DirkJanJansen/Pandora-Enterprise_Resource_Planning
- DIY0R/kucheza
- dmtrKovalenko/odiff
- dmx-systems/dmx-linqa
- dr-dobermann/gobpm
- drprojects/nora
- ElDavoo/wa-crypt-tools
- eletroswing/roku-tv-dev-fast-refresh
- entropy-cloud/nop-entropy
- expatjedi/cold-wallet-generator
- fastenhealth/fasten-onprem
- fermoya/SwiftUIPager
- fhoedemakers/pico-infonesPlus
- FlameskyDexive/Legends-Of-Heroes
- fohrloop/wakepy/
- gabrielzschmitz/Tomato.C
- garronej/tsafe
- gbaranski/ezsockets
- Genshin-bots/gsuid_core
- GiorgosXou/NeuralNetworks
- gitfrosh/lotr-api
- Glusk/srp6-variables
- godbout/dash-docset-builder
- godzie44/BugStalker
- gokulapap/Reconator
- hackiftekhar/IQListKit
- Hakky54/log-captor
- Hakky54/sslcontext-kickstart
- Hamza417/Inure
- hantmac/fuckdb
- hantmac/tmax
- har5hit/PokeDex-KMP
- hengzhe-zhang/EvolutionaryForest
- hewad-mubariz/reactnative-50-days
- Hirrolot/metalang99
- horsicq/XOpcodeCalc
- HugAILab/HugNLP
- igorkamyshev/farfetched
- ilic5000/pabkvizgenerator
- InseeFrLab/onyxia
- iTeam-S/WebSearch
- itsdrnoob/DataMonitor
- ivanmeler/SamFirm_Reborn
- izivkov/GShockAPI
- jankae/LibreVNA
- JasonXuDeveloper/JEngine
- jawline/Mimic/
- jcaromiq/goku
- jeffpar/pcjs
- JerryI/wolfram-js-frontend
- jivanpal/drat
- jjewuz/JustNotes
- JKme/ass
- JKme/cube
- JKme/DnsWrite
- Jnnshschl/AmeisenBotX
- Jnnshschl/PentestServerSuite
- joamag/boytacean
- JoeyBling/hexo-theme-yilia-plus
- joffrey-bion/krossbow
- jonatasgrosman/findpapers
- jonatasgrosman/huggingsound
- jonathanpeppers/dotnes
- juanluispaz/ts-sql-query
- JustTalDevelops/go-hcaptcha
- KarhouTam/FL-bench
- KarimMokhtar/react-drag-drop-files
- kimlimjustin/xplorer
- klis87/normy
- Kohulan/DECIMER-Image_Transformer
- Kohulan/Smiles-TO-iUpac-Translator
- Kr0oked/Metronome
- krojew/rust-zookeeper
- krojew/springtime
- KudoAI/chatgpt.js
- leoantony72/twitter-backend
- leodevbro/vscode-blockman
- Lissy93/dashy/
- lixuanhng/NLP_related_projects
- louis-e/arnis
- lsndr/weak-identity-map
- luandersonn/MyFTP
- lucaspulliese/next-ecommerce
- lukasmonk/lucaschessR2
- lupantech/chameleon-llm
- lwesterhof/semaphore
- m-i-n-a-r/birday
- MahmoudMabrok/QuranyApp
- mansenfranzen/autodoc_pydantic
- manuel-martos/creative-lab
- marksgraham/OCT-Converter
- markusmoenig/Eldiron
- maxpmaxp/pdfreader
- mdgaziur/findex
- mfaisalkhatri/rest-assured-examples
- mfaisalkhatri/selenium4poc
- mienaiyami/yomikiru/
- mikekeith52/scalecast
- mircea21S/RichCanvas
- miroslavpejic85/mirotalk
- miroslavpejic85/mirotalkc2c
- miroslavpejic85/mirotalksfu
- Mithil467/mitype
- mizosoft/methanol
- module-federation/core
- mpostument/awstaghelper
- mriale/PyDPainter
- mrk-andreev/tornado-swagger
- msgbyte/tailchat
- nene/sql-parser-cst
- Nfactor26/pixel-automation
- Nfactor26/pixel-identity
- niccokunzmann/python-recurring-ical-events/
- nicoespeon/abracadabra
- Niek/chatgpt-web
- noobnooc/AssisChat
- noobnooc/ohmygpt
- nov1n/RemarkablePocket
- nullpainter/sanchez
- ohler55/ojg
- OK-DMR/ok-dmrlib
- olshevski/compose-navigation-reimagined
- ooples/OoplesFinance.StockIndicators
- OptimalScale/LMFlow
- phamquiluan/ResidualMaskingNetwork
- phip1611/diplomarbeit-impl
- photonlines/Go-Web-Server
- photonlines/Procedural-City-Generator
- photonlines/Python-Prolog-Interpreter
- php-strictus/strictus
- pietervdvn/MapComplete/
- pikaz-18/pikaz-location
- pivovarit/parallel-collectors
- PiyushSuthar/Windows-11-Web
- pojol/gobot
- pomponchik/instld
- PopovEvgeniy/graygdk
- prasanaworld/puppeteer-screen-recorder
- PRO100BYTE/ProjectArcade
- proofit404/generics
- qbentil/bentility
- qbentil/Bentilzone-Restaurant
- ramiz-rahman/sort-visualizer
- RaoHammas/Social-Space
- RaoHammas/Windows-Process-Monitor
- RaymanNg/3D-Wind-Field
- realityexpander/Tasky
- realityexpander/Translator_KMM
- reinterpretcat/vrp
- rharish101/regreet
- ricky0123/vad
- rishimohan/pika
- RisingGeek/twitter-clone
- rogergcc/AndroidEducationApp
- Rolands-Laucis/Socio
- romeerez/orchid-orm
- rubilmax/foundry-gas-diff
- s3prl/s3prl
- saalikmubeen/microservices-architectured-app
- saalikmubeen/paperhouses
- saalikmubeen/talkhouse
- sadanandpai/algo-visualizers
- saket/telephoto
- SAPikachu/amae-koromo
- SaptarshiSarkar12/Drifty
- sarub0b0/kubetui
- sarvjeets/lakshmi
- savbell/whisper-writer
- saynotobugsorg/confidence
- Schrodinger-Hat/ImageGoNord
- Schrodinger-Hat/ImageGoNord-pip
- sfatihk/react-world
- shukkkur/VolleyVision/
- sijms/go-ora
- simon-ging/typedparser
- simpleidserver/SimpleIdServer
- sinamics/ztnet
- SitronX/UnityTimeRewinder
- siy/pragmatica-lite
- skydoves/landscapist
- skyhackvip/risk_engine
- slviajero/tinybasic
- sneas/img-comparison-slider
- space-code/flare
- Spagett1/pineflash
- steganogram/stegano-rs
- stephenafamo/bob
- strang1ato/nhi
- sultan99/holycow
- sultan99/stylin
- Sunchit/Coding-Decoded
- SuRGeoNix/Flyleaf
- SysSn13/leetcode-rating-predictor
- t3l3machus/Villain
- tarunvelli/rails-tabler-starter
- Tauseef-Hilal/WhatsUp
- TECH7Fox/asterisk-hass-integration
- TECH7Fox/sip-hass-card
- techreagan/youtube-clone-nodejs-api
- thekiwicoder0/UnityBehaviourTreeEditor
- theothernt/AerialViews
- Timonwa/techroadmap
- timothypholmes/startup-page
- Tomiwa-Ot/moukthar
- Tomiwa-Ot/php-router
- translate-tools/core
- translate-tools/linguist
- tristanisham/zvm
- umair-khanzada/role-based-access-control
- VahidN/EFCoreSecondLevelCacheInterceptor
- vE5li/korangar
- vE5li/lunify
- venugopalkadamba/Movie-Recommendation-System-ML-React-Flask
- vernu/textbee
- victorsouzaleal/lbot-whatsapp
- VishwaGauravIn/colpat
- vitonsky/charmix
- vladpen/cams
- voidful/TextRL
- warp-tech/russh
- weiqinke/react-admin-nest
- WendellAdriel/css-theme-manager
- whoisraibolt/Feature-Detection-and-Matching
- whyboris/utilitarianism.net
- WSTxda/Google-Shortcuts-Launcher
- wvwwvwwv/scalable-concurrent-containers
- xlmnxp/blue-recorder
- xyjigsaw/Knowledge-Graph-And-Visualization-Demo
- yannbf/mealdrop
- yashbhalgat/HashNeRF-pytorch
- yashbhalgat/QualcommAI-MicroNet-submission-MixNet
- YashIndane/platefetcher
- yashs662/rust_kanban
- Yet-Zio/yetCalc
- yiisoft/hydrator
- yousefkotp/8086-Assembly-Projects
- yszhao91/cga.js
- yvann-ba/Robby-chatbot
- zehfernandes/wordnote
- ZhengPeng7/BiRefNet
- zhouhuandev/BaseDemo
- zhouhuandev/SerialPortKit
The software we created for filtering repositories works as follows.
- First it uses GitHub Rest API:
- for repositories
where it checks:
created_at
>= 2019-01-01created_at
<= 2023-05-01public
== truearchived
== falsedisabled
== falseis_template
== false
- for releases where it checks if amount of releases >= 5
- for repository Readme where it checks if amount of lines >= 20
- for issues where it checks if amount of issues >= 10
- for commits where it checks if amount of commits >= 60
- for pull requests where it checks if amount of pull requests >= 10
- for repository action workflows where it checks if amount of action workflows >= 1
- for repositories
where it checks:
- Then it manually clone every repository using
git clone
and checks if:- amount of directories >= 10
- amount of files >= 50
- amount of files with more than 1k lines < 10
Ignored file formats are:
.png
.jpg
.jpeg
.svg
.eot
.ttf
.woff
.pdf
.ico
.rst
.gif
.webp
- Then it excludes all the repositories that are not matching the criteria
The second group consisted of XXX that were manually reviewed by one of jury members and were classified as “not enough quality” to compete for the trophy:
- 1c3t3a/rust-socketio
- acro5piano/react-native-big-calendar
- akgulebubekir/Maui.DataGrid
- artcoholic/akar-icons
- artemsen/swayimg
- ASSERT-KTH/depclean
- BaldissaraMatheus/Tasks.md
- blablatdinov/quranbot-aiogram
- boguszpawlowski/ComposeCalendar
- bouncepaw/mycorrhiza
- bvaughn/react-resizable-panels
- CasperVerswijvelt/Better-Internet-Tiles
- Charles7c/continew-admin
- Delta456/box-cli-maker
- djmango/obsidian-transcription
- dvershinin/lastversion
- gnmyt/myspeed
- Gabb-c/pokenode-ts
- garronej/denoify
- gustavopsantos/Reflex
- google/zx
- Hakky54/certificate-ripper
- HapticX/happyx
- iTeam-S/Ampalibe
- izivkov/CasioGShockSmartSync
- jaikeerthick/Composable-Graphs
- joffrey-bion/chrome-devtools-kotlin
- JonasBernard/FakeStandby
- keycloakify/keycloakify
- knadh/listmonk
- krojew/cdrs-tokio
- leandrocfe/filament-apex-charts
- lukasbach/react-complex-tree
- manups4e/FxEvents
- manups4e/ScaleformUI
- medyo/hackertab.dev
- mfvanek/pg-index-health
- mikel-brostrom/yolo_tracking
- Mythologyli/zju-connect
- nao1215/sqly
- nao1215/gup
- niccokunzmann/open-web-calendar
- ooples/OoplesFinance.YahooFinanceAPI
- owenthereal/upterm
- peterstace/simplefeatures
- piglovesyou/graphql-let
- s0l0ist/node-seal
- sakithb/media-controls
- sassman/t-rec-rs
- sdaqo/anipy-cli
- SergeyShk/ruTS
- sillygod/cdp-cache
- srevinsaju/togomak
- Steinbeck-Lab/cheminformatics-microservice
- sunnamed434/BitMono
- svobik7/next-roots
- taskiq-python/taskiq
- TECH7Fox/asterisk-hass-addons
- toasterofbread/spmp
- Undertone0809/promptulate
- Valexr/Slidy
- WendellAdriel/laravel-validated-dto
- xiaods/k8e
- yasserbdj96/hiphp
- yiisoft/config
- yiisoft/html
- yogeshpaliyal/KeyPass
- zhensherlock/watermark-js-plus
The third group contained XXX, which we considered as candidates for the prize:
- 0x7c13/Notepads
- AnonymouX47/term-image
- citrusvanilla/tinyflux
- cloudhead/rx
- cocogitto/cocogitto
- CodeDredd/pinia-orm
- codegouvfr/react-dsfr
- eigenvivek/DiffDRR
- ekmungai/eloquent-ifrs
- Sunagatov/Iced-Latte
- estruyf/vscode-front-matter
- edoardottt/cariddi
- garronej/tss-react
- elkowar/eww
- eo-cqrs/eo-kafka
- jeertmans/manim-slides
- massquantity/LibRecommender
- maxonfjvipon/elegant-elephant
- mlomb/chat-analytics
- orhun/git-cliff
- scanapi/scanapi
- shufo/vscode-blade-formatter
- sungaila/PDFtoImage
- SuperKogito/spafe
- tatethurston/nextjs-routes
- thetacom/hexabyte
- volodya-lombrozo/jtcop
- vprusso/toqito
Then, we excluded the projects that were submitted by jury members and festival organizers. It was a tough decision but we had to make it. Some of the projects were indeed of a high quality, but for the sake of objectivity we had to remove them from the competition:
Then, we asked our jury to review all projects manually. Every project was reviewed by two jury members. The details are here: kaicode-2024.xlsx
Sponsors
Organizers
These people organized KaiCode (in alphabetic order):