├── ui ├── .nvmrc ├── .yarnrc.yml ├── src │ ├── vite-env.d.ts │ ├── assets │ │ ├── logo.png │ │ └── fonts │ │ │ ├── Satoshi-Black.eot │ │ │ ├── Satoshi-Black.ttf │ │ │ ├── Satoshi-Bold.eot │ │ │ ├── Satoshi-Bold.ttf │ │ │ ├── Satoshi-Bold.woff │ │ │ ├── Satoshi-Light.eot │ │ │ ├── Satoshi-Light.ttf │ │ │ ├── Satoshi-Black.woff │ │ │ ├── Satoshi-Black.woff2 │ │ │ ├── Satoshi-Bold.woff2 │ │ │ ├── Satoshi-Italic.eot │ │ │ ├── Satoshi-Italic.ttf │ │ │ ├── Satoshi-Italic.woff │ │ │ ├── Satoshi-Light.woff │ │ │ ├── Satoshi-Light.woff2 │ │ │ ├── Satoshi-Medium.eot │ │ │ ├── Satoshi-Medium.ttf │ │ │ ├── Satoshi-Medium.woff │ │ │ ├── Satoshi-Regular.eot │ │ │ ├── Satoshi-Regular.ttf │ │ │ ├── Satoshi-BoldItalic.eot │ │ │ ├── Satoshi-BoldItalic.ttf │ │ │ ├── Satoshi-Italic.woff2 │ │ │ ├── Satoshi-Medium.woff2 │ │ │ ├── Satoshi-Regular.woff │ │ │ ├── Satoshi-Regular.woff2 │ │ │ ├── Satoshi-Variable.eot │ │ │ ├── Satoshi-Variable.ttf │ │ │ ├── Satoshi-Variable.woff │ │ │ ├── Satoshi-Variable.woff2 │ │ │ ├── Satoshi-BlackItalic.eot │ │ │ ├── Satoshi-BlackItalic.ttf │ │ │ ├── Satoshi-BlackItalic.woff │ │ │ ├── Satoshi-BoldItalic.woff │ │ │ ├── Satoshi-BoldItalic.woff2 │ │ │ ├── Satoshi-LightItalic.eot │ │ │ ├── Satoshi-LightItalic.ttf │ │ │ ├── Satoshi-LightItalic.woff │ │ │ ├── Satoshi-MediumItalic.eot │ │ │ ├── Satoshi-MediumItalic.ttf │ │ │ ├── Satoshi-BlackItalic.woff2 │ │ │ ├── Satoshi-LightItalic.woff2 │ │ │ ├── Satoshi-MediumItalic.woff │ │ │ ├── Satoshi-MediumItalic.woff2 │ │ │ ├── Satoshi-VariableItalic.eot │ │ │ ├── Satoshi-VariableItalic.ttf │ │ │ ├── Satoshi-VariableItalic.woff │ │ │ └── Satoshi-VariableItalic.woff2 │ ├── types │ │ └── index.ts │ ├── styles │ │ ├── globals.css │ │ └── satoshi.css │ ├── App.tsx │ ├── provider.tsx │ ├── layouts │ │ └── default.tsx │ ├── main.tsx │ ├── config │ │ └── site.ts │ ├── components │ │ ├── primitives.ts │ │ ├── navbar.tsx │ │ ├── theme-switch.tsx │ │ ├── icons.tsx │ │ └── repos-table.tsx │ ├── hooks │ │ └── use-theme.ts │ └── pages │ │ └── index.tsx ├── favicon.ico ├── vercel.json ├── postcss.config.js ├── vite.config.ts ├── tsconfig.node.json ├── .eslintignore ├── README.md ├── .gitignore ├── tailwind.config.js ├── tsconfig.json ├── index.html ├── LICENSE ├── package.json └── .eslintrc.json ├── .prettierignore ├── .gitignore ├── data ├── analytics_urls.txt ├── chart_report_pro.json ├── test_report_pro.json ├── others_report_pro.json ├── mobile_desktop_report_pro.json ├── ui_framework_report_pro.json ├── backend_framework_report_pro.json ├── full_stack_framework_report_pro.json ├── state_management_report_pro.json ├── auth_urls.txt ├── analytics_report_pro.json ├── ai_providers_urls.txt ├── monitoring_urls.txt ├── db_report_pro.json ├── state_management_urls.txt ├── full_stack_framework_urls.txt ├── mobile_desktop_urls.txt ├── ui_framework_urls.txt ├── test_urls.txt ├── monitoring_report_pro.json ├── icons_urls.txt ├── db_urls.txt ├── backend_framework_urls.txt ├── icons_report_pro.json ├── others_urls.txt ├── comp_report_pro.json ├── analytics_report.json ├── ai_gateway_pro.json ├── comp_urls.txt ├── auth_report_pro.txt ├── ai_providers_report.json ├── auth_report.json ├── monitoring_report.json ├── full_stack_framework_report.json ├── state_management_report.json ├── chart_urls.txt ├── mobile_desktop_report.json ├── test_report.json ├── ui_framework_report.json ├── icons_report.json ├── db_report.json ├── others_report.json ├── backend_framework_report.json └── comp_report.json ├── api ├── requirements.txt ├── README.md ├── tests │ ├── mock_github_repo_response.json │ └── test_report_analyzer.py ├── .flake8 └── repo_report.py ├── LICENSE ├── README.md └── .github └── workflows └── python-app.yml /ui/.nvmrc: -------------------------------------------------------------------------------- 1 | 20.0.0 -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | *.md -------------------------------------------------------------------------------- /ui/.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .env 3 | __pycache__/ -------------------------------------------------------------------------------- /ui/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /ui/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/favicon.ico -------------------------------------------------------------------------------- /data/analytics_urls.txt: -------------------------------------------------------------------------------- 1 | https://github.com/plausible/analytics 2 | https://github.com/PostHog/posthog -------------------------------------------------------------------------------- /ui/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/logo.png -------------------------------------------------------------------------------- /ui/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "rewrites": [ 3 | { "source": "/(.*)", "destination": "/" } 4 | ] 5 | } -------------------------------------------------------------------------------- /ui/postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Black.eot -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Black.ttf -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Bold.eot -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Bold.ttf -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Bold.woff -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Light.eot -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Light.ttf -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Black.woff -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Black.woff2 -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Bold.woff2 -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Italic.eot -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Italic.ttf -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Italic.woff -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Light.woff -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Light.woff2 -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Medium.eot -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Medium.ttf -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Medium.woff -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Regular.eot -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Regular.ttf -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-BoldItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-BoldItalic.eot -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-BoldItalic.ttf -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Italic.woff2 -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Medium.woff2 -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Regular.woff -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Regular.woff2 -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Variable.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Variable.eot -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Variable.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Variable.ttf -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Variable.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Variable.woff -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-Variable.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-Variable.woff2 -------------------------------------------------------------------------------- /data/chart_report_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "", 5 | "description": "", 6 | "url": "" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /data/test_report_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "", 5 | "description": "", 6 | "url": "" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-BlackItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-BlackItalic.eot -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-BlackItalic.ttf -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-BlackItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-BlackItalic.woff -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-BoldItalic.woff -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-BoldItalic.woff2 -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-LightItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-LightItalic.eot -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-LightItalic.ttf -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-LightItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-LightItalic.woff -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-MediumItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-MediumItalic.eot -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-MediumItalic.ttf -------------------------------------------------------------------------------- /data/others_report_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "", 5 | "description": "", 6 | "url": "" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-BlackItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-BlackItalic.woff2 -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-LightItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-LightItalic.woff2 -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-MediumItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-MediumItalic.woff -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-MediumItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-MediumItalic.woff2 -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-VariableItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-VariableItalic.eot -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-VariableItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-VariableItalic.ttf -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-VariableItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-VariableItalic.woff -------------------------------------------------------------------------------- /ui/src/types/index.ts: -------------------------------------------------------------------------------- 1 | import { SVGProps } from "react"; 2 | 3 | export type IconSvgProps = SVGProps & { 4 | size?: number; 5 | }; 6 | -------------------------------------------------------------------------------- /data/mobile_desktop_report_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "", 5 | "description": "", 6 | "url": "" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /data/ui_framework_report_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "", 5 | "description": "", 6 | "url": "" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /ui/src/assets/fonts/Satoshi-VariableItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifeparticle/SelectStar/HEAD/ui/src/assets/fonts/Satoshi-VariableItalic.woff2 -------------------------------------------------------------------------------- /data/backend_framework_report_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "", 5 | "description": "", 6 | "url": "" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /data/full_stack_framework_report_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "", 5 | "description": "", 6 | "url": "" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /data/state_management_report_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "", 5 | "description": "", 6 | "url": "" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /data/auth_urls.txt: -------------------------------------------------------------------------------- 1 | https://github.com/nextauthjs/next-auth 2 | https://github.com/jaredhanson/passport 3 | https://github.com/supertokens/supertokens-core 4 | https://github.com/ory/kratos 5 | 6 | -------------------------------------------------------------------------------- /ui/src/styles/globals.css: -------------------------------------------------------------------------------- 1 | @import url("satoshi.css"); 2 | 3 | @tailwind base; 4 | @tailwind components; 5 | @tailwind utilities; 6 | 7 | html, 8 | body { 9 | font-family: Satoshi-Light, sans-serif; 10 | } 11 | -------------------------------------------------------------------------------- /data/analytics_report_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "Plausible", 5 | "description": "Traffic based plans that match your growth.", 6 | "url": "https://plausible.io/#pricing" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /api/requirements.txt: -------------------------------------------------------------------------------- 1 | certifi==2024.7.4 2 | charset-normalizer==3.3.2 3 | flake8==7.1.1 4 | idna==3.7 5 | mccabe==0.7.0 6 | pycodestyle==2.12.1 7 | pyflakes==3.2.0 8 | python-dotenv==1.0.1 9 | requests==2.32.3 10 | urllib3==2.2.2 11 | -------------------------------------------------------------------------------- /data/ai_providers_urls.txt: -------------------------------------------------------------------------------- 1 | https://github.com/openai/openai-node 2 | https://github.com/anthropics/anthropic-sdk-typescript 3 | https://github.com/googleapis/js-genai 4 | https://github.com/openai/openai-node 5 | https://github.com/mistralai/client-ts -------------------------------------------------------------------------------- /api/README.md: -------------------------------------------------------------------------------- 1 | # Developer Guide 2 | 3 | - Run report locally: 4 | 5 | ```shell 6 | python repo_report.py monitoring_urls.txt monitoring_report.json 7 | ``` 8 | 9 | - Run the Python Flake8 locally: 10 | 11 | ```shell 12 | flake8 repo_report.py 13 | ``` 14 | -------------------------------------------------------------------------------- /data/monitoring_urls.txt: -------------------------------------------------------------------------------- 1 | https://github.com/louislam/uptime-kuma 2 | https://github.com/netdata/netdata 3 | https://github.com/mikaku/Monitorix 4 | https://github.com/getsentry/sentry 5 | https://github.com/grafana/grafana 6 | https://github.com/prometheus/prometheus 7 | -------------------------------------------------------------------------------- /ui/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | import tsconfigPaths from 'vite-tsconfig-paths' 4 | 5 | // https://vitejs.dev/config/ 6 | export default defineConfig({ 7 | plugins: [react(), tsconfigPaths()], 8 | }) 9 | -------------------------------------------------------------------------------- /ui/src/App.tsx: -------------------------------------------------------------------------------- 1 | import { Route, Routes } from "react-router-dom"; 2 | 3 | import IndexPage from "@/pages/index"; 4 | 5 | function App() { 6 | return ( 7 | 8 | } path="/" /> 9 | 10 | ); 11 | } 12 | 13 | export default App; 14 | -------------------------------------------------------------------------------- /ui/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "bundler", 7 | "allowSyntheticDefaultImports": true, 8 | "strict": true 9 | }, 10 | "include": ["vite.config.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /data/db_report_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "AWS Databases", 5 | "description": "High-performance, secure, and reliable foundation to power generative AI solutions and data-driven applications at any scale", 6 | "url": "https://aws.amazon.com/products/databases/" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /ui/.eslintignore: -------------------------------------------------------------------------------- 1 | .now/* 2 | *.css 3 | .changeset 4 | dist 5 | esm/* 6 | public/* 7 | tests/* 8 | scripts/* 9 | *.config.js 10 | .DS_Store 11 | node_modules 12 | coverage 13 | .next 14 | build 15 | !.commitlintrc.cjs 16 | !.lintstagedrc.cjs 17 | !jest.config.js 18 | !plopfile.js 19 | !react-shim.js 20 | !tsup.config.ts -------------------------------------------------------------------------------- /ui/src/provider.tsx: -------------------------------------------------------------------------------- 1 | import { NextUIProvider } from "@nextui-org/system"; 2 | import { useNavigate } from "react-router-dom"; 3 | 4 | export function Provider({ children }: { children: React.ReactNode }) { 5 | const navigate = useNavigate(); 6 | 7 | return {children}; 8 | } 9 | -------------------------------------------------------------------------------- /ui/README.md: -------------------------------------------------------------------------------- 1 | # Project Setup 2 | 3 | ## Prerequisites 4 | 5 | Before you start, make sure you have the following installed: 6 | 7 | - **Node.js**: v20.0.0 or higher 8 | 9 | ## Installation 10 | 11 | Install the required dependencies: 12 | 13 | ```shell 14 | cd ui 15 | yarn install 16 | ``` 17 | 18 | ## Run the project 19 | 20 | ```shell 21 | yarn dev 22 | ``` 23 | -------------------------------------------------------------------------------- /data/state_management_urls.txt: -------------------------------------------------------------------------------- 1 | https://github.com/reduxjs/redux 2 | https://github.com/mobxjs/mobx 3 | https://github.com/facebookexperimental/Recoil 4 | https://github.com/pmndrs/zustand 5 | https://github.com/pmndrs/jotai 6 | https://github.com/statelyai/xstate 7 | https://github.com/salesforce/akita 8 | https://github.com/cerebral/overmind 9 | https://github.com/avkonst/hookstate -------------------------------------------------------------------------------- /data/full_stack_framework_urls.txt: -------------------------------------------------------------------------------- 1 | https://github.com/rails/rails 2 | https://github.com/vercel/next.js 3 | https://github.com/redwoodjs/redwood 4 | https://github.com/django/django 5 | https://github.com/laravel/laravel 6 | https://github.com/symfony/symfony 7 | https://github.com/keystonejs/keystone 8 | https://github.com/blitz-js/blitz 9 | https://github.com/meteor/meteor 10 | -------------------------------------------------------------------------------- /api/tests/mock_github_repo_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mock.js", 3 | "description": "mock_description", 4 | "owner": { 5 | "avatar_url": "http://avatar_url" 6 | }, 7 | "html_url": "https://github.com/mock.js", 8 | "stargazers_count": 0, 9 | "created_at": "2017-06-08T02:54:44Z", 10 | "updated_at": "2024-08-17T07:49:28Z", 11 | "pushed_at": "2024-08-15T00:47:11Z" 12 | } -------------------------------------------------------------------------------- /ui/src/layouts/default.tsx: -------------------------------------------------------------------------------- 1 | import { Navbar } from "@/components/navbar"; 2 | 3 | export default function DefaultLayout({ 4 | children, 5 | }: { 6 | children: React.ReactNode; 7 | }) { 8 | return ( 9 |
10 | 11 |
12 | {children} 13 |
14 |
15 | ); 16 | } 17 | -------------------------------------------------------------------------------- /ui/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | 26 | .yarn/* 27 | 28 | # vitest 29 | html/ 30 | -------------------------------------------------------------------------------- /data/mobile_desktop_urls.txt: -------------------------------------------------------------------------------- 1 | https://github.com/electron/electron 2 | https://github.com/facebook/react-native 3 | https://github.com/apache/cordova 4 | https://github.com/ionic-team/ionic-framework 5 | https://github.com/ionic-team/capacitor 6 | https://github.com/nwjs/nw.js 7 | https://github.com/expo/expo 8 | https://github.com/quasarframework/quasar 9 | https://github.com/tauri-apps/tauri 10 | https://github.com/NativeScript/NativeScript 11 | -------------------------------------------------------------------------------- /ui/tailwind.config.js: -------------------------------------------------------------------------------- 1 | import { nextui } from "@nextui-org/theme"; 2 | 3 | /** @type {import('tailwindcss').Config} */ 4 | module.exports = { 5 | content: [ 6 | "./index.html", 7 | "./src/layouts/**/*.{js,ts,jsx,tsx,mdx}", 8 | "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", 9 | "./src/components/**/*.{js,ts,jsx,tsx,mdx}", 10 | "./node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}", 11 | ], 12 | theme: { 13 | extend: {}, 14 | }, 15 | darkMode: "class", 16 | plugins: [ 17 | nextui({ 18 | themes: {}, 19 | }), 20 | ], 21 | }; 22 | -------------------------------------------------------------------------------- /data/ui_framework_urls.txt: -------------------------------------------------------------------------------- 1 | https://github.com/facebook/react 2 | https://github.com/vuejs/core 3 | https://github.com/angular/angular 4 | https://github.com/sveltejs/svelte 5 | https://github.com/solidjs/solid 6 | https://github.com/emberjs/ember.js 7 | https://github.com/preactjs/preact 8 | https://github.com/MithrilJS/mithril.js 9 | https://github.com/alpinejs/alpine 10 | https://github.com/lit/lit 11 | https://github.com/QwikDev/qwik 12 | https://github.com/ionic-team/stencil 13 | https://github.com/bigskysoftware/htmx 14 | https://github.com/gatsbyjs/gatsby -------------------------------------------------------------------------------- /data/test_urls.txt: -------------------------------------------------------------------------------- 1 | https://github.com/testing-library/react-testing-library 2 | https://github.com/jestjs/jest 3 | https://github.com/cypress-io/cypress 4 | https://github.com/enzymejs/enzyme 5 | https://github.com/mochajs/mocha 6 | https://github.com/chaijs/chai 7 | https://github.com/avajs/ava 8 | https://github.com/microsoft/playwright 9 | https://github.com/vitest-dev/vitest 10 | https://github.com/storybookjs/storybook 11 | https://github.com/puppeteer/puppeteer 12 | https://github.com/SeleniumHQ/selenium 13 | https://github.com/DevExpress/testcafe 14 | https://github.com/mswjs/msw -------------------------------------------------------------------------------- /data/monitoring_report_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "new relic", 5 | "description": "Maximize business uptime and drive engineering excellence in the AI era.", 6 | "url": "https://newrelic.com/" 7 | }, 8 | { 9 | "name": "Datadog", 10 | "description": "Modern monitoring & security.", 11 | "url": "https://www.datadoghq.com/" 12 | }, 13 | { 14 | "name": "Splunk", 15 | "description": "Operate securely and reliably at any scale, no matter how complex your digital ecosystem, with the industry-leading, unified security and observability platform.", 16 | "url": "https://www.splunk.com/" 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /ui/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | import { BrowserRouter } from "react-router-dom"; 4 | import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; 5 | import App from "./App.tsx"; 6 | import { Provider } from "./provider.tsx"; 7 | import "@/styles/globals.css"; 8 | 9 | const queryClient = new QueryClient(); 10 | 11 | ReactDOM.createRoot(document.getElementById("root")!).render( 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | ); 22 | -------------------------------------------------------------------------------- /data/icons_urls.txt: -------------------------------------------------------------------------------- 1 | https://github.com/FortAwesome/Font-Awesome 2 | https://github.com/google/material-design-icons 3 | https://github.com/feathericons/feather 4 | https://github.com/ionic-team/ionicons 5 | https://github.com/primer/octicons 6 | https://github.com/tailwindlabs/heroicons 7 | https://github.com/twbs/icons 8 | https://github.com/Remix-Design/RemixIcon 9 | https://github.com/tabler/tabler-icons 10 | https://github.com/phosphor-icons/homepage 11 | https://github.com/lucide-icons/lucide 12 | https://github.com/simple-icons/simple-icons 13 | https://github.com/radix-ui/icons 14 | https://github.com/devicons/devicon 15 | https://github.com/lusaxweb/iconsax 16 | https://github.com/iconoir-icons/iconoir 17 | -------------------------------------------------------------------------------- /api/.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | # Set the maximum allowed line length 3 | max-line-length = 120 4 | 5 | exclude = 6 | # No need to traverse our git directory 7 | .github, 8 | # There's no value in checking cache directories 9 | __pycache__, 10 | # The conf file is mostly autogenerated, ignore it 11 | docs/source/conf.py, 12 | # The old directory contains Flake8 2.0 13 | old, 14 | # This contains our built documentation 15 | build, 16 | # This contains builds of flake8 that we don't want to check 17 | dist 18 | 19 | per-file-ignores = 20 | # imported but unused 21 | __init__.py: F401 22 | 23 | max-complexity = 10 24 | 25 | # Example: Ignore line length warnings (E501) and line break before binary operator (W503) 26 | ignore = E501, W503 -------------------------------------------------------------------------------- /ui/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "useDefineForClassFields": true, 5 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | "paths": { 9 | "@/*": ["./src/*"] 10 | }, 11 | 12 | /* Bundler mode */ 13 | "moduleResolution": "bundler", 14 | "allowImportingTsExtensions": true, 15 | "resolveJsonModule": true, 16 | "isolatedModules": true, 17 | "noEmit": true, 18 | "jsx": "react-jsx", 19 | 20 | /* Linting */ 21 | "strict": true, 22 | "noUnusedLocals": true, 23 | "noUnusedParameters": true, 24 | "noFallthroughCasesInSwitch": true 25 | }, 26 | "include": ["src"], 27 | "references": [{ "path": "./tsconfig.node.json" }] 28 | } 29 | -------------------------------------------------------------------------------- /data/db_urls.txt: -------------------------------------------------------------------------------- 1 | https://github.com/postgres/postgres 2 | https://github.com/mysql/mysql-server 3 | https://github.com/MariaDB/server 4 | https://github.com/sqlite/sqlite 5 | https://github.com/apache/cassandra 6 | https://github.com/mongodb/mongo 7 | https://github.com/redis/redis 8 | https://github.com/apache/couchdb 9 | https://github.com/rethinkdb/rethinkdb 10 | https://github.com/arangodb/arangodb 11 | https://github.com/neo4j/neo4j 12 | https://github.com/influxdata/influxdb 13 | https://github.com/timescale/timescaledb 14 | https://github.com/cockroachdb/cockroach 15 | https://github.com/dgraph-io/dgraph 16 | https://github.com/fauna/fauna-js 17 | https://github.com/surrealdb/surrealdb 18 | https://github.com/tursodatabase/libsql 19 | https://github.com/neondatabase/neon 20 | https://github.com/chroma-core/chroma 21 | https://github.com/qdrant/qdrant 22 | -------------------------------------------------------------------------------- /data/backend_framework_urls.txt: -------------------------------------------------------------------------------- 1 | 2 | https://github.com/expressjs/express 3 | https://github.com/nestjs/nest 4 | https://github.com/fastify/fastify 5 | https://github.com/koajs/koa 6 | https://github.com/pallets/flask 7 | https://github.com/tiangolo/fastapi 8 | https://github.com/spring-projects/spring-boot 9 | https://github.com/micronaut-projects/micronaut-core 10 | https://github.com/gin-gonic/gin 11 | https://github.com/labstack/echo 12 | https://github.com/javalin/javalin 13 | https://github.com/strapi/strapi 14 | https://github.com/hapijs/hapi 15 | https://github.com/adonisjs/core 16 | https://github.com/directus/directus 17 | https://github.com/balderdashy/sails 18 | https://github.com/honojs/hono 19 | https://github.com/elysiajs/elysia 20 | https://github.com/unjs/nitro 21 | https://github.com/amplication/amplication 22 | https://github.com/unjs/h3 23 | https://github.com/trpc/trpc 24 | https://github.com/payloadcms/payload -------------------------------------------------------------------------------- /data/icons_report_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "Lordicon", 5 | "description": "Premium animated icons and illustrations for web and mobile applications.", 6 | "url": "https://lordicon.com/" 7 | }, 8 | { 9 | "name": "Futicons", 10 | "description": "Modern, minimalist icon set with clean designs and multiple styles.", 11 | "url": "https://vaisakhpradeep.gumroad.com/l/futicons" 12 | }, 13 | { 14 | "name": "Unicornicons", 15 | "description": "Collection of 400+ playful animated icons! Available in JSON, SVG, PNG, and After Effects format.", 16 | "url": "https://unicornicons.gumroad.com/l/unicornicons-pro" 17 | }, 18 | { 19 | "name": "Iconly", 20 | "description": "The last icon solution you need!", 21 | "url": "https://iconly.pro/" 22 | }, 23 | { 24 | "name": "Font Awesome", 25 | "description": "Icons. Easy. Done.", 26 | "url": "https://fontawesome.com/plans" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /data/others_urls.txt: -------------------------------------------------------------------------------- 1 | https://github.com/nocodb/nocodb 2 | https://github.com/AppFlowy-IO/AppFlowy 3 | https://github.com/frappe/erpnext 4 | https://github.com/mattermost/mattermost 5 | https://github.com/makeplane/plane 6 | https://github.com/get-convex/convex-backend 7 | https://github.com/supabase/supabase 8 | https://github.com/appwrite/appwrite 9 | https://github.com/pocketbase/pocketbase 10 | https://github.com/instantdb/instant 11 | https://github.com/coollabsio/coolify 12 | https://github.com/PipedreamHQ/pipedream 13 | https://github.com/resend/react-email 14 | https://github.com/medusajs/medusa 15 | https://github.com/calcom/cal.com 16 | https://github.com/budibase/budibase 17 | https://github.com/drizzle-team/drizzle-orm 18 | https://github.com/tldraw/tldraw 19 | https://github.com/excalidraw/excalidraw 20 | https://github.com/Unleash/unleash 21 | https://github.com/Flagsmith/flagsmith 22 | https://github.com/paperless-ngx/paperless-ngx 23 | https://github.com/megh-bari/pattern-craft 24 | -------------------------------------------------------------------------------- /ui/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | SelectStar 8 | 9 | 13 | 17 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /ui/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Next UI 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 mahbubzaman 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /ui/src/config/site.ts: -------------------------------------------------------------------------------- 1 | export type SiteConfig = typeof siteConfig; 2 | 3 | export const siteConfig = { 4 | name: "Vite + NextUI", 5 | description: "Make beautiful websites regardless of your design experience.", 6 | navItems: [ 7 | { 8 | label: "Home", 9 | href: "/", 10 | }, 11 | { 12 | label: "Docs", 13 | href: "/docs", 14 | }, 15 | { 16 | label: "Pricing", 17 | href: "/pricing", 18 | }, 19 | { 20 | label: "Blog", 21 | href: "/blog", 22 | }, 23 | { 24 | label: "About", 25 | href: "/about", 26 | }, 27 | ], 28 | navMenuItems: [ 29 | { 30 | label: "Profile", 31 | href: "/profile", 32 | }, 33 | { 34 | label: "Dashboard", 35 | href: "/dashboard", 36 | }, 37 | { 38 | label: "Projects", 39 | href: "/projects", 40 | }, 41 | { 42 | label: "Team", 43 | href: "/team", 44 | }, 45 | { 46 | label: "Calendar", 47 | href: "/calendar", 48 | }, 49 | { 50 | label: "Settings", 51 | href: "/settings", 52 | }, 53 | { 54 | label: "Help & Feedback", 55 | href: "/help-feedback", 56 | }, 57 | { 58 | label: "Logout", 59 | href: "/logout", 60 | }, 61 | ], 62 | links: { 63 | github: "https://github.com/lifeparticle/SelectStar", 64 | sponsor: "https://github.com/sponsors/lifeparticle", 65 | }, 66 | }; 67 | -------------------------------------------------------------------------------- /ui/src/components/primitives.ts: -------------------------------------------------------------------------------- 1 | import { tv } from "tailwind-variants"; 2 | 3 | export const title = tv({ 4 | base: "tracking-tight inline font-semibold", 5 | variants: { 6 | color: { 7 | violet: "from-[#FF1CF7] to-[#b249f8]", 8 | yellow: "from-[#FF705B] to-[#FFB457]", 9 | blue: "from-[#5EA2EF] to-[#0072F5]", 10 | cyan: "from-[#00b7fa] to-[#01cfea]", 11 | green: "from-[#6FEE8D] to-[#17c964]", 12 | pink: "from-[#FF72E1] to-[#F54C7A]", 13 | foreground: "dark:from-[#FFFFFF] dark:to-[#4B4B4B]", 14 | }, 15 | size: { 16 | sm: "text-3xl lg:text-4xl", 17 | md: "text-[2.3rem] lg:text-5xl leading-9", 18 | lg: "text-4xl lg:text-6xl", 19 | }, 20 | fullWidth: { 21 | true: "w-full block", 22 | }, 23 | }, 24 | defaultVariants: { 25 | size: "md", 26 | }, 27 | compoundVariants: [ 28 | { 29 | color: [ 30 | "violet", 31 | "yellow", 32 | "blue", 33 | "cyan", 34 | "green", 35 | "pink", 36 | "foreground", 37 | ], 38 | class: "bg-clip-text text-transparent bg-gradient-to-b", 39 | }, 40 | ], 41 | }); 42 | 43 | export const subtitle = tv({ 44 | base: "w-full md:w-1/2 my-2 text-lg lg:text-xl text-default-600 block max-w-full", 45 | variants: { 46 | fullWidth: { 47 | true: "!w-full", 48 | }, 49 | }, 50 | defaultVariants: { 51 | fullWidth: true, 52 | }, 53 | }); 54 | -------------------------------------------------------------------------------- /data/comp_report_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "Tailwind CSS Plus", 5 | "description": "Tailwind CSS Plus is a collection of premium components for Tailwind CSS.", 6 | "url": "https://tailwindcss.com/plus" 7 | }, 8 | { 9 | "name": "Untitled UI", 10 | "description": "Untitled UI is the world's largest Figma UI kit and React component library.", 11 | "url": "https://www.untitledui.com/" 12 | }, 13 | { 14 | "name": "Flowbite", 15 | "description": "Build websites even faster with components on top of Tailwind CSS", 16 | "url": "https://flowbite.com/" 17 | }, 18 | { 19 | "name": "Ag-Grid", 20 | "description": "Add high-performance, feature rich, and fully customisable Data Grids to your application in minutes with our free, open source library.", 21 | "url": "https://www.ag-grid.com/" 22 | }, 23 | { 24 | "name": "Plate", 25 | "description": "Build Notion-like editors, faster than ever", 26 | "url": "https://pro.platejs.org/" 27 | }, 28 | { 29 | "name": "React Flow Pro", 30 | "description": "Build Better Node-Based UIs with React Flow Pro", 31 | "url": "https://reactflow.dev/pro" 32 | }, 33 | { 34 | "name": "Magic UI Pro", 35 | "description": "Ship beautifulbeautiful products in record time", 36 | "url": "https://pro.magicui.design/" 37 | }, 38 | { 39 | "name": "Aceternity", 40 | "description": "Make your websites look 10x beautiful", 41 | "url": "https://ui.aceternity.com/" 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /ui/src/hooks/use-theme.ts: -------------------------------------------------------------------------------- 1 | // originally written by @imoaazahmed 2 | 3 | import { useEffect, useMemo, useState } from "react"; 4 | 5 | const ThemeProps = { 6 | key: "theme", 7 | light: "light", 8 | dark: "dark", 9 | } as const; 10 | 11 | type Theme = typeof ThemeProps.light | typeof ThemeProps.dark; 12 | 13 | export const useTheme = (defaultTheme?: Theme) => { 14 | const [theme, setTheme] = useState(() => { 15 | const storedTheme = localStorage.getItem(ThemeProps.key) as Theme | null; 16 | 17 | return storedTheme || (defaultTheme ?? ThemeProps.light); 18 | }); 19 | 20 | const isDark = useMemo(() => { 21 | return theme === ThemeProps.dark; 22 | }, [theme]); 23 | 24 | const isLight = useMemo(() => { 25 | return theme === ThemeProps.light; 26 | }, [theme]); 27 | 28 | const _setTheme = (theme: Theme) => { 29 | localStorage.setItem(ThemeProps.key, theme); 30 | document.documentElement.classList.remove( 31 | ThemeProps.light, 32 | ThemeProps.dark, 33 | ); 34 | document.documentElement.classList.add(theme); 35 | setTheme(theme); 36 | }; 37 | 38 | const setLightTheme = () => _setTheme(ThemeProps.light); 39 | 40 | const setDarkTheme = () => _setTheme(ThemeProps.dark); 41 | 42 | const toggleTheme = () => 43 | theme === ThemeProps.dark ? setLightTheme() : setDarkTheme(); 44 | 45 | useEffect(() => { 46 | _setTheme(theme); 47 | }); 48 | 49 | return { theme, isDark, isLight, setLightTheme, setDarkTheme, toggleTheme }; 50 | }; 51 | -------------------------------------------------------------------------------- /data/analytics_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "posthog", 5 | "description": "\ud83e\udd94 PostHog is an all-in-one developer platform for building successful products. We offer product analytics, web analytics, session replay, error tracking, feature flags, experimentation, surveys, data warehouse, a CDP, and an AI product assistant to help debug your code, ship features faster, and keep all your usage and customer data in one stack.", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/60330232?v=4", 7 | "html_url": "https://github.com/PostHog/posthog", 8 | "stargazers_count": 30250, 9 | "created_at": "2020-01-23T22:46:58Z", 10 | "updated_at": "2025-12-01T00:08:21Z", 11 | "pushed_at": "2025-11-30T23:38:08Z" 12 | }, 13 | { 14 | "name": "analytics", 15 | "description": "Simple, open source, lightweight and privacy-friendly web analytics alternative to Google Analytics.", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/54802774?v=4", 17 | "html_url": "https://github.com/plausible/analytics", 18 | "stargazers_count": 23806, 19 | "created_at": "2018-12-04T22:33:36Z", 20 | "updated_at": "2025-11-30T20:55:05Z", 21 | "pushed_at": "2025-11-28T04:02:34Z" 22 | } 23 | ], 24 | "meta": { 25 | "last_updated": "2025-12-01T00:27:28.338365Z" 26 | } 27 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SelectStar 2 | 3 | ⭐️ Compare GitHub repositories based on the number of stars and other relevant parameters. 4 | 5 | ## Available categories 6 | 7 | - UI Frameworks 🖼️ 8 | - State Management Libraries 🌐 9 | - Component Libraries 🛠️ 10 | - Charts 📊 11 | - Backend Frameworks 💻 12 | - Full Stack Frameworks 💻🌐 13 | - Mobile and Desktop Frameworks 📱💻 14 | - Database 📂 15 | - Testing Libraries 🧪 16 | - Monitoring Tools 📈 17 | - Analytics Tools 📊 18 | - Icons 🎨 19 | - Others 🔧 20 | 21 | ## Status 22 | 23 | | Name | Status | 24 | | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 25 | | UI | [![Netlify Status](https://api.netlify.com/api/v1/badges/1d90db00-2475-4aac-959c-f83f5c9595d3/deploy-status)](https://app.netlify.com/sites/selectstar/deploys) | 26 | | Build Repo Report | [![Build Repo Report](https://github.com/lifeparticle/SelectStar/actions/workflows/python-app.yml/badge.svg)](https://github.com/lifeparticle/SelectStar/actions/workflows/python-app.yml) | 27 | 28 | -------------------------------------------------------------------------------- /ui/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vite-template", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "lint": "eslint -c .eslintrc.json ./src/**/**/*.{ts,tsx} --fix", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "@nextui-org/react": "^2.4.6", 14 | "@react-aria/visually-hidden": "3.8.12", 15 | "@react-stately/data": "^3.11.6", 16 | "@tanstack/react-query": "^5.51.24", 17 | "clsx": "2.1.1", 18 | "framer-motion": "~11.1.1", 19 | "react": "18.3.1", 20 | "react-dom": "18.3.1", 21 | "react-router-dom": "6.23.0", 22 | "tailwind-variants": "0.1.20", 23 | "tailwindcss": "3.4.3" 24 | }, 25 | "devDependencies": { 26 | "@types/papaparse": "^5.3.14", 27 | "@types/react": "18.3.3", 28 | "@types/react-dom": "18.3.0", 29 | "@typescript-eslint/eslint-plugin": "^7.8.0", 30 | "@typescript-eslint/parser": "^7.8.0", 31 | "@vitejs/plugin-react": "^4.2.1", 32 | "autoprefixer": "^10.4.19", 33 | "eslint": "^8.26.0", 34 | "eslint-config-prettier": "^8.2.0", 35 | "eslint-plugin-import": "^2.26.0", 36 | "eslint-plugin-jsx-a11y": "^6.4.1", 37 | "eslint-plugin-node": "^11.1.0", 38 | "eslint-plugin-prettier": "^5.1.3", 39 | "eslint-plugin-react": "^7.23.2", 40 | "eslint-plugin-react-hooks": "^4.6.0", 41 | "eslint-plugin-unused-imports": "^3.2.0", 42 | "postcss": "^8.4.38", 43 | "sass": "^1.77.8", 44 | "typescript": "^5.2.2", 45 | "vite": "^5.2.0", 46 | "vite-tsconfig-paths": "^4.3.2" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /data/ai_gateway_pro.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "Portkey", 5 | "description": "Production Stack for Gen AI Builders.", 6 | "url": "https://portkey.ai/" 7 | }, 8 | { 9 | "name": "OpenRouter", 10 | "description": "The Unified Interface For LLMs", 11 | "url": "https://openrouter.ai/" 12 | }, 13 | { 14 | "name": "Cloudflare AI Gateway", 15 | "description": "Observe and control your AI applications.", 16 | "url": "https://developers.cloudflare.com/ai-gateway/" 17 | }, 18 | { 19 | "name": "Vercel AI Gateway", 20 | "description": "A unified API to access hundreds of models through a single endpoint.", 21 | "url": "https://vercel.com/docs/ai-gateway" 22 | }, 23 | { 24 | "name": "Amazon Bedrock", 25 | "description": "Fast-track your generative AI applications and agents from prototype to production with confidence.", 26 | "url": "https://aws.amazon.com/bedrock/" 27 | }, 28 | { 29 | "name": "AI Gateway", 30 | "description": "Centralize AI service control and management across the enterprise.", 31 | "url": "https://www.ibm.com/products/api-connect/ai-gateway" 32 | }, 33 | { 34 | "name": "Together", 35 | "description": "AI pioneers train, fine-tune, and run frontier models on our GPU cloud platform.", 36 | "url": "https://www.together.ai/" 37 | }, 38 | { 39 | "name": "MOSAIC AI GATEWAY", 40 | "description": "Democratize LLM access securely and responsibly.", 41 | "url": "https://www.databricks.com/product/artificial-intelligence/ai-gateway" 42 | }, 43 | { 44 | "name": "Nexos AI Gateway", 45 | "description": "AI gateway — One endpoint to manage, observe, and secure all model traffic.", 46 | "url": "https://nexos.ai/ai-gateway/" 47 | } 48 | ] 49 | } 50 | -------------------------------------------------------------------------------- /data/comp_urls.txt: -------------------------------------------------------------------------------- 1 | 2 | https://github.com/ant-design/ant-design 3 | https://github.com/mui/material-ui 4 | https://github.com/Semantic-Org/Semantic-UI 5 | https://github.com/palantir/blueprint 6 | https://github.com/segmentio/evergreen 7 | https://github.com/chakra-ui/chakra-ui 8 | https://github.com/microsoft/fluentui 9 | https://github.com/react-bootstrap/react-bootstrap 10 | https://github.com/grommet/grommet 11 | https://github.com/carbon-design-system/carbon 12 | https://github.com/ElemeFE/element 13 | https://github.com/vuetifyjs/vuetify 14 | https://github.com/heroui-inc/heroui 15 | https://github.com/jgthms/bulma 16 | https://github.com/mantinedev/mantine 17 | https://github.com/radix-ui/themes 18 | https://github.com/magicuidesign/magicui 19 | https://github.com/shadcn-ui/ui 20 | https://github.com/chakra-ui/ark 21 | https://github.com/cschroeter/park-ui 22 | https://github.com/reactstrap/reactstrap 23 | https://github.com/Semantic-Org/Semantic-UI-React 24 | https://github.com/tailwindlabs/headlessui 25 | https://github.com/saadeghi/daisyui 26 | https://github.com/adobe/react-spectrum 27 | https://github.com/radix-ui/primitives 28 | https://github.com/primefaces/ 29 | https://github.com/CopilotKit/CopilotKit 30 | https://github.com/OnsenUI/OnsenUI 31 | https://github.com/coreui/coreui-react 32 | https://github.com/rsuite/rsuite 33 | https://github.com/marmelab/react-admin 34 | https://github.com/origin-space/originui 35 | https://github.com/haydenbleasel/kibo 36 | https://github.com/keenthemes/reui 37 | https://github.com/tailark/blocks 38 | https://github.com/ibelick/motion-primitives 39 | https://github.com/kokonut-labs/kokonutui 40 | https://github.com/educlopez/smoothui 41 | https://github.com/nolly-studio/cult-ui 42 | https://github.com/udecode/plate 43 | https://github.com/ag-grid/ag-grid 44 | https://github.com/xyflow/xyflow 45 | https://github.com/kokonut-labs/kokonutui 46 | https://github.com/ibelick/prompt-kit 47 | -------------------------------------------------------------------------------- /data/auth_report_pro.txt: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "Clerk", 5 | "description": "Complete user management for your app with authentication, user profiles, and more.", 6 | "url": "https://clerk.com" 7 | }, 8 | { 9 | "name": "Supabase Auth", 10 | "description": "Built-in authentication and authorization for your applications with Supabase.", 11 | "url": "https://supabase.com/docs/guides/auth" 12 | }, 13 | { 14 | "name": "Auth0", 15 | "description": "Identity platform for developers and enterprises with authentication and authorization.", 16 | "url": "https://auth0.com" 17 | }, 18 | { 19 | "name": "Firebase Auth", 20 | "description": "Google's authentication service with multiple sign-in methods and security features.", 21 | "url": "https://firebase.google.com/docs/auth" 22 | }, 23 | { 24 | "name": "Stytch", 25 | "description": "Developer-first authentication platform with passwordless and multi-factor authentication.", 26 | "url": "https://stytch.com" 27 | }, 28 | { 29 | "name": "Descope", 30 | "description": "Authentication and user management platform with no-code workflows.", 31 | "url": "https://www.descope.com" 32 | }, 33 | { 34 | "name": "Ory", 35 | "description": "Open source identity infrastructure with authentication, authorization, and user management.", 36 | "url": "https://www.ory.sh" 37 | }, 38 | { 39 | "name": "WorkOS", 40 | "description": "Enterprise authentication and user management with SSO, directory sync, and more.", 41 | "url": "https://workos.com" 42 | }, 43 | { 44 | "name": "Okta", 45 | "description": "Enterprise identity and access management with single sign-on and multi-factor authentication.", 46 | "url": "https://www.okta.com" 47 | }, 48 | { 49 | "name": "AWS Cognito", 50 | "description": "Amazon's user identity and data synchronization service for web and mobile apps.", 51 | "url": "https://aws.amazon.com/cognito" 52 | } 53 | ] 54 | } 55 | 56 | -------------------------------------------------------------------------------- /ui/src/components/navbar.tsx: -------------------------------------------------------------------------------- 1 | import { Button } from "@nextui-org/button"; 2 | import { Link } from "@nextui-org/link"; 3 | import { 4 | Navbar as NextUINavbar, 5 | NavbarBrand, 6 | NavbarContent, 7 | NavbarItem, 8 | } from "@nextui-org/navbar"; 9 | import { siteConfig } from "@/config/site"; 10 | import { ThemeSwitch } from "@/components/theme-switch"; 11 | import { GithubIcon, HeartFilledIcon } from "@/components/icons"; 12 | import { Logo } from "@/components/icons"; 13 | 14 | export const Navbar = () => { 15 | return ( 16 | 17 | 18 | 19 | 24 | 25 |

SelectStar

26 | 27 |
28 |
29 | 30 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |
61 | ); 62 | }; 63 | -------------------------------------------------------------------------------- /data/ai_providers_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "client-ts", 5 | "description": " TS Client library for Mistral AI platform ", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/132372032?v=4", 7 | "html_url": "https://github.com/mistralai/client-ts", 8 | "stargazers_count": 110, 9 | "created_at": "2024-08-07T11:54:28Z", 10 | "updated_at": "2025-11-23T12:50:31Z", 11 | "pushed_at": "2025-11-18T14:56:34Z" 12 | }, 13 | { 14 | "name": "openai-node", 15 | "description": "Official JavaScript / TypeScript library for the OpenAI API", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/14957082?v=4", 17 | "html_url": "https://github.com/openai/openai-node", 18 | "stargazers_count": 10393, 19 | "created_at": "2021-12-14T22:32:58Z", 20 | "updated_at": "2025-11-30T21:22:24Z", 21 | "pushed_at": "2025-11-17T22:39:07Z" 22 | }, 23 | { 24 | "name": "anthropic-sdk-typescript", 25 | "description": "Access to Anthropic's safety-first language model APIs in TypeScript", 26 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/76263028?v=4", 27 | "html_url": "https://github.com/anthropics/anthropic-sdk-typescript", 28 | "stargazers_count": 1381, 29 | "created_at": "2023-01-30T14:58:08Z", 30 | "updated_at": "2025-11-30T19:20:21Z", 31 | "pushed_at": "2025-11-27T19:28:48Z" 32 | }, 33 | { 34 | "name": "js-genai", 35 | "description": "TypeScript/JavaScript SDK for Gemini and Vertex AI.", 36 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/16785467?v=4", 37 | "html_url": "https://github.com/googleapis/js-genai", 38 | "stargazers_count": 1284, 39 | "created_at": "2024-12-06T23:16:55Z", 40 | "updated_at": "2025-11-30T23:09:39Z", 41 | "pushed_at": "2025-11-26T19:43:31Z" 42 | } 43 | ], 44 | "meta": { 45 | "last_updated": "2025-12-01T00:30:56.584358Z" 46 | } 47 | } -------------------------------------------------------------------------------- /ui/src/components/theme-switch.tsx: -------------------------------------------------------------------------------- 1 | import { FC, useState, useEffect } from "react"; 2 | import { VisuallyHidden } from "@react-aria/visually-hidden"; 3 | import { SwitchProps, useSwitch } from "@nextui-org/switch"; 4 | import clsx from "clsx"; 5 | 6 | import { useTheme } from "@/hooks/use-theme"; 7 | import { SunFilledIcon, MoonFilledIcon } from "@/components/icons"; 8 | 9 | export interface ThemeSwitchProps { 10 | className?: string; 11 | classNames?: SwitchProps["classNames"]; 12 | } 13 | 14 | export const ThemeSwitch: FC = ({ 15 | className, 16 | classNames, 17 | }) => { 18 | const [isMounted, setIsMounted] = useState(false); 19 | 20 | const { theme, toggleTheme } = useTheme(); 21 | 22 | const onChange = toggleTheme; 23 | 24 | const { 25 | Component, 26 | slots, 27 | isSelected, 28 | getBaseProps, 29 | getInputProps, 30 | getWrapperProps, 31 | } = useSwitch({ 32 | isSelected: theme === "light", 33 | onChange, 34 | }); 35 | 36 | useEffect(() => { 37 | setIsMounted(true); 38 | }, [isMounted]); 39 | 40 | // Prevent Hydration Mismatch 41 | if (!isMounted) return
; 42 | 43 | return ( 44 | 53 | 54 | 55 | 56 |
75 | {isSelected ? ( 76 | 77 | ) : ( 78 | 79 | )} 80 |
81 |
82 | ); 83 | }; 84 | -------------------------------------------------------------------------------- /data/auth_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "kratos", 5 | "description": "Headless cloud-native authentication and identity management written in Go. Scales to a billion+ users. Replace Homegrown, Auth0, Okta, Firebase with better UX and DX. Passkeys, Social Sign In, OIDC, Magic Link, Multi-Factor Auth, SMS, SAML, TOTP, and more. Runs everywhere, runs best on Ory Network. ", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/25334553?v=4", 7 | "html_url": "https://github.com/ory/kratos", 8 | "stargazers_count": 13047, 9 | "created_at": "2018-05-29T16:09:37Z", 10 | "updated_at": "2025-11-30T23:43:01Z", 11 | "pushed_at": "2025-11-28T11:26:53Z" 12 | }, 13 | { 14 | "name": "passport", 15 | "description": "Simple, unobtrusive authentication for Node.js.", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/10355?v=4", 17 | "html_url": "https://github.com/jaredhanson/passport", 18 | "stargazers_count": 23464, 19 | "created_at": "2011-10-08T22:38:32Z", 20 | "updated_at": "2025-12-01T00:19:52Z", 21 | "pushed_at": "2024-08-16T21:56:14Z" 22 | }, 23 | { 24 | "name": "supertokens-core", 25 | "description": "Open source alternative to Auth0 / Firebase Auth / AWS Cognito ", 26 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/50478857?v=4", 27 | "html_url": "https://github.com/supertokens/supertokens-core", 28 | "stargazers_count": 14724, 29 | "created_at": "2020-01-05T13:30:52Z", 30 | "updated_at": "2025-11-29T16:32:36Z", 31 | "pushed_at": "2025-11-27T09:53:48Z" 32 | }, 33 | { 34 | "name": "next-auth", 35 | "description": "Authentication for the Web.", 36 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/67470890?v=4", 37 | "html_url": "https://github.com/nextauthjs/next-auth", 38 | "stargazers_count": 27837, 39 | "created_at": "2018-01-27T12:28:16Z", 40 | "updated_at": "2025-11-30T14:12:01Z", 41 | "pushed_at": "2025-10-29T20:49:43Z" 42 | } 43 | ], 44 | "meta": { 45 | "last_updated": "2025-12-01T00:27:55.167616Z" 46 | } 47 | } -------------------------------------------------------------------------------- /ui/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/eslintrc.json", 3 | "env": { 4 | "browser": false, 5 | "es2021": true, 6 | "node": true 7 | }, 8 | "extends": [ 9 | "plugin:react/recommended", 10 | "plugin:prettier/recommended", 11 | "plugin:react-hooks/recommended", 12 | "plugin:jsx-a11y/recommended" 13 | ], 14 | "plugins": ["react", "unused-imports", "import", "@typescript-eslint", "jsx-a11y", "prettier"], 15 | "parser": "@typescript-eslint/parser", 16 | "parserOptions": { 17 | "ecmaFeatures": { 18 | "jsx": true 19 | }, 20 | "ecmaVersion": 12, 21 | "sourceType": "module" 22 | }, 23 | "settings": { 24 | "react": { 25 | "version": "detect" 26 | } 27 | }, 28 | "rules": { 29 | "no-console": "warn", 30 | "react/prop-types": "off", 31 | "react/jsx-uses-react": "off", 32 | "react/react-in-jsx-scope": "off", 33 | "react-hooks/exhaustive-deps": "off", 34 | "jsx-a11y/click-events-have-key-events": "warn", 35 | "jsx-a11y/interactive-supports-focus": "warn", 36 | "prettier/prettier": "warn", 37 | "no-unused-vars": "off", 38 | "unused-imports/no-unused-vars": "off", 39 | "unused-imports/no-unused-imports": "warn", 40 | "@typescript-eslint/no-unused-vars": [ 41 | "warn", 42 | { 43 | "args": "after-used", 44 | "ignoreRestSiblings": false, 45 | "argsIgnorePattern": "^_.*?$" 46 | } 47 | ], 48 | "import/order": [ 49 | "warn", 50 | { 51 | "groups": [ 52 | "type", 53 | "builtin", 54 | "object", 55 | "external", 56 | "internal", 57 | "parent", 58 | "sibling", 59 | "index" 60 | ], 61 | "pathGroups": [ 62 | { 63 | "pattern": "~/**", 64 | "group": "external", 65 | "position": "after" 66 | } 67 | ], 68 | "newlines-between": "always" 69 | } 70 | ], 71 | "react/self-closing-comp": "warn", 72 | "react/jsx-sort-props": [ 73 | "warn", 74 | { 75 | "callbacksLast": true, 76 | "shorthandFirst": true, 77 | "noSortAlphabetically": false, 78 | "reservedFirst": true 79 | } 80 | ], 81 | "padding-line-between-statements": [ 82 | "warn", 83 | {"blankLine": "always", "prev": "*", "next": "return"}, 84 | {"blankLine": "always", "prev": ["const", "let", "var"], "next": "*"}, 85 | { 86 | "blankLine": "any", 87 | "prev": ["const", "let", "var"], 88 | "next": ["const", "let", "var"] 89 | } 90 | ] 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /.github/workflows/python-app.yml: -------------------------------------------------------------------------------- 1 | name: Build Repo Reports 2 | 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | # Runs at 00:00 on the first day of each month 7 | - cron: "0 0 1 * *" 8 | 9 | jobs: 10 | generate_reports: 11 | runs-on: ubuntu-latest 12 | strategy: 13 | max-parallel: 1 14 | matrix: 15 | repo_data: 16 | - { 17 | input_file: "backend_framework_urls.txt", 18 | output_file: "backend_framework_report.json", 19 | } 20 | - { input_file: "comp_urls.txt", output_file: "comp_report.json" } 21 | - { 22 | input_file: "mobile_desktop_urls.txt", 23 | output_file: "mobile_desktop_report.json", 24 | } 25 | - { 26 | input_file: "state_management_urls.txt", 27 | output_file: "state_management_report.json", 28 | } 29 | - { 30 | input_file: "ui_framework_urls.txt", 31 | output_file: "ui_framework_report.json", 32 | } 33 | - { input_file: "chart_urls.txt", output_file: "chart_report.json" } 34 | - { input_file: "db_urls.txt", output_file: "db_report.json" } 35 | - { 36 | input_file: "monitoring_urls.txt", 37 | output_file: "monitoring_report.json", 38 | } 39 | - { input_file: "test_urls.txt", output_file: "test_report.json" } 40 | - { 41 | input_file: "analytics_urls.txt", 42 | output_file: "analytics_report.json", 43 | } 44 | - { input_file: "auth_urls.txt", output_file: "auth_report.json" } 45 | - { input_file: "icons_urls.txt", output_file: "icons_report.json" } 46 | - { input_file: "others_urls.txt", output_file: "others_report.json" } 47 | - { 48 | input_file: "full_stack_framework_urls.txt", 49 | output_file: "full_stack_framework_report.json", 50 | } 51 | - { 52 | input_file: "ai_providers_urls.txt", 53 | output_file: "ai_providers_report.json", 54 | } 55 | steps: 56 | - uses: actions/checkout@v2 57 | 58 | - name: Set up Python 3.8 59 | uses: actions/setup-python@v2 60 | with: 61 | python-version: 3.8 62 | 63 | - name: Install dependencies 64 | run: | 65 | python -m pip install --upgrade pip 66 | if [ -f requirements.txt ]; then pip install -r requirements.txt; fi 67 | working-directory: api 68 | 69 | - name: Update Report 70 | run: |- 71 | python repo_report.py "${{ matrix.repo_data.input_file }}" "${{ matrix.repo_data.output_file }}" 72 | working-directory: api 73 | env: 74 | ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} 75 | 76 | - name: Commit and push if changed 77 | run: |- 78 | git diff 79 | git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" 80 | git config --global user.name "github-actions[bot]" 81 | git add -A 82 | git commit -m "Updated ${{ matrix.repo_data.output_file }}" || exit 0 83 | git pull --rebase origin main 84 | git push 85 | -------------------------------------------------------------------------------- /data/monitoring_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "grafana", 5 | "description": "The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more. ", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/7195757?v=4", 7 | "html_url": "https://github.com/grafana/grafana", 8 | "stargazers_count": 71051, 9 | "created_at": "2013-12-11T15:59:56Z", 10 | "updated_at": "2025-12-01T00:12:28Z", 11 | "pushed_at": "2025-11-30T18:51:37Z" 12 | }, 13 | { 14 | "name": "netdata", 15 | "description": "The fastest path to AI-powered full stack observability, even for lean teams.", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/43390781?v=4", 17 | "html_url": "https://github.com/netdata/netdata", 18 | "stargazers_count": 76855, 19 | "created_at": "2013-06-17T18:39:10Z", 20 | "updated_at": "2025-12-01T00:19:17Z", 21 | "pushed_at": "2025-12-01T00:19:12Z" 22 | }, 23 | { 24 | "name": "uptime-kuma", 25 | "description": "A fancy self-hosted monitoring tool", 26 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/1336778?v=4", 27 | "html_url": "https://github.com/louislam/uptime-kuma", 28 | "stargazers_count": 79111, 29 | "created_at": "2021-07-03T01:02:42Z", 30 | "updated_at": "2025-12-01T00:10:54Z", 31 | "pushed_at": "2025-11-29T18:05:57Z" 32 | }, 33 | { 34 | "name": "Monitorix", 35 | "description": "Monitorix is a free, open source, lightweight system monitoring tool.", 36 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/829885?v=4", 37 | "html_url": "https://github.com/mikaku/Monitorix", 38 | "stargazers_count": 1183, 39 | "created_at": "2012-10-22T13:41:51Z", 40 | "updated_at": "2025-11-15T02:51:07Z", 41 | "pushed_at": "2025-11-12T09:39:13Z" 42 | }, 43 | { 44 | "name": "prometheus", 45 | "description": "The Prometheus monitoring system and time series database.", 46 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/3380462?v=4", 47 | "html_url": "https://github.com/prometheus/prometheus", 48 | "stargazers_count": 61526, 49 | "created_at": "2012-11-24T11:14:12Z", 50 | "updated_at": "2025-12-01T00:12:12Z", 51 | "pushed_at": "2025-11-28T15:14:48Z" 52 | }, 53 | { 54 | "name": "sentry", 55 | "description": "Developer-first error tracking and performance monitoring", 56 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/1396951?v=4", 57 | "html_url": "https://github.com/getsentry/sentry", 58 | "stargazers_count": 42584, 59 | "created_at": "2010-08-30T22:06:41Z", 60 | "updated_at": "2025-11-30T20:45:37Z", 61 | "pushed_at": "2025-11-30T21:27:01Z" 62 | } 63 | ], 64 | "meta": { 65 | "last_updated": "2025-12-01T00:26:15.262171Z" 66 | } 67 | } -------------------------------------------------------------------------------- /api/tests/test_report_analyzer.py: -------------------------------------------------------------------------------- 1 | import os 2 | import json 3 | import requests 4 | import unittest 5 | from datetime import datetime 6 | from unittest.mock import patch, mock_open, MagicMock 7 | from repo_report import GitHubRepoAnalyzer 8 | 9 | 10 | class TestGitHubRepoAnalyzer(unittest.TestCase): 11 | def load_mock_response(self): 12 | with open(os.path.join(os.path.dirname(__file__), 13 | 'mock_github_repo_response.json'), 'r') as file: 14 | return json.load(file) 15 | 16 | @patch('os.path.join', return_value='data/backend_framework_urls.txt') 17 | @patch('builtins.open', new_callable=mock_open, read_data='https://github.com/mock\n') 18 | def test_get_repo_links_from_file(self, mock_open, mock_path_join): 19 | analyzer = GitHubRepoAnalyzer("token", "input_file.txt", "output_file.txt") 20 | links = analyzer.get_repo_links_from_file() 21 | print("links: ", links) 22 | expected_url = ["https://api.github.com/repos/mock"] 23 | self.assertEqual(links, expected_url) 24 | mock_open.assert_called_once_with('data/backend_framework_urls.txt', 'r') 25 | 26 | @patch('requests.get') 27 | def test_get_repo_meta_data_success(self, mock_get): 28 | analyzer = GitHubRepoAnalyzer("token", "input_file.txt", "output_file.txt") 29 | 30 | # mock response from github api 31 | mock_response_data = self.load_mock_response() 32 | # mock response object 33 | mock_response = MagicMock() 34 | mock_response.json.return_value = mock_response_data 35 | mock_response.raise_for_status = MagicMock() 36 | # mock respose to be returned by requests.get 37 | mock_get.return_value = mock_response 38 | 39 | url = "https://api.github.com/repos/owner/repo" 40 | repo_data = analyzer.get_repo_meta_data(url) 41 | 42 | self.assertEqual(repo_data, mock_response_data) 43 | 44 | @patch('requests.get') 45 | def test_get_repo_meta_data_failure(self, mock_get): 46 | analyzer = GitHubRepoAnalyzer("token", "input_file.txt", "output_file.txt") 47 | 48 | # mock failure response from github api 49 | mock_response = MagicMock() 50 | mock_response.raise_for_status.side_effect = requests.HTTPError("Error occurred") 51 | mock_get.return_value = mock_response 52 | 53 | url = "https://api.github.com/repos/owner/repo" 54 | repo_data = analyzer.get_repo_meta_data(url) 55 | 56 | self.assertIsNone(repo_data) 57 | 58 | @patch('builtins.open', new_callable=mock_open) 59 | @patch('repo_report.datetime') 60 | def test_create_json_file(self, mock_datetime, mock_open): 61 | # Set the mock datetime to return a fixed value 62 | mock_datetime.utcnow.return_value = datetime(2024, 1, 1, 0, 0, 0) 63 | analyzer = GitHubRepoAnalyzer("token", "input_file.txt", "output_file.txt") 64 | data = [{"mock_name": "mock_value"}] 65 | analyzer.create_json_file(data=data) 66 | output = json.dumps({ 67 | "data": data, 68 | "meta": {"last_updated": "2024-01-01T00:00:00Z"} 69 | }, indent=4) 70 | # Collect all the write calls 71 | written_data = ''.join(call.args[0] for call in mock_open().write.call_args_list) 72 | # Assert that the combined write calls equal the expected output 73 | self.assertEqual(written_data, output) 74 | 75 | @patch.object(GitHubRepoAnalyzer, 'get_repo_links_from_file', 76 | return_value=["https://api.github.com/repos/owner/repo"]) 77 | @patch.object(GitHubRepoAnalyzer, 'create_json_file') 78 | def test_process_repos(self, mock_create_json_file, 79 | mock_get_repo_links_from_file): 80 | mock_repo_meta_data = self.load_mock_response() 81 | 82 | with patch.object(GitHubRepoAnalyzer, 'get_repo_meta_data', 83 | return_value=mock_repo_meta_data) \ 84 | as mock_get_repo_meta_data: 85 | analyzer = GitHubRepoAnalyzer("token", "input_file.txt", "output_file.txt") 86 | analyzer.process_repos() 87 | 88 | mock_get_repo_links_from_file.assert_called_once() 89 | mock_get_repo_meta_data.assert_called_once_with("https://api.github.com/repos/owner/repo") 90 | mock_create_json_file.assert_called_once() 91 | 92 | 93 | if __name__ == '__main__': 94 | unittest.main() 95 | -------------------------------------------------------------------------------- /api/repo_report.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import requests 3 | import os 4 | import json 5 | import sys 6 | from datetime import datetime 7 | from dotenv import load_dotenv 8 | import time 9 | # Load environment variables from .env only in development 10 | if os.getenv('ENV') != 'production': 11 | load_dotenv() 12 | 13 | 14 | class GitHubRepoAnalyzer: 15 | def __init__(self, access_token, input_file, output_file): 16 | self.headers = { 17 | 'Accept': 'application/vnd.github.v3+json', 18 | 'Authorization': f'token {access_token}' 19 | } 20 | self.input_file = os.path.join("../data", input_file) 21 | self.output_file = os.path.join("../data", output_file) 22 | 23 | def get_repo_meta_data(self, url): 24 | try: 25 | response = requests.get(url, headers=self.headers) 26 | # Will raise an HTTPError for bad responses 27 | response.raise_for_status() 28 | return response.json() 29 | except requests.exceptions.HTTPError as e: 30 | if response.status_code == 401: 31 | print(f"Unauthorized access - 401 Client Error for URL: {url}. Exiting the program.") 32 | sys.exit(1) # Exit the program with a non-zero exit code to indicate an error 33 | else: 34 | print(f"Error fetching data from {url}: {e}") 35 | return None 36 | except requests.RequestException as e: 37 | print(f"Error fetching data from {url}: {e}") 38 | return None 39 | 40 | def get_repo_links_from_file(self): 41 | try: 42 | with open(self.input_file, 'r') as file: 43 | unique_urls = set( 44 | line.strip().replace("https://github.com/", "https://api.github.com/repos/").rstrip('/') 45 | for line in file if line.strip() 46 | ) 47 | return list(unique_urls) 48 | except FileNotFoundError: 49 | print(f'File not found: {self.input_file}') 50 | return [] 51 | 52 | def create_json_file(self, data): 53 | try: 54 | output_data = { 55 | "data": data, 56 | "meta": { 57 | "last_updated": datetime.utcnow().isoformat() + "Z" 58 | } 59 | } 60 | with open(self.output_file, mode="w") as file: 61 | json.dump(output_data, file, indent=4) 62 | print(f"JSON report successfully created: {self.output_file}") 63 | except IOError as e: 64 | print(f"Error writing to file {self.output_file}: {e}") 65 | 66 | def process_repos(self): 67 | repo_links = self.get_repo_links_from_file() 68 | if not repo_links: 69 | print("No repository links found or file could not be read.") 70 | return 71 | 72 | data = [] 73 | for i, link in enumerate(repo_links, 1): 74 | repo_data = self.get_repo_meta_data(link) 75 | if repo_data: 76 | data.append({ 77 | "name": repo_data.get("name", ""), 78 | "description": repo_data.get("description", ""), 79 | "owner_avatar_url": repo_data["owner"].get("avatar_url", ""), 80 | "html_url": repo_data.get("html_url", ""), 81 | "stargazers_count": repo_data.get("stargazers_count", 0), 82 | "created_at": repo_data.get("created_at", ""), 83 | "updated_at": repo_data.get("updated_at", ""), 84 | "pushed_at": repo_data.get("pushed_at", "") 85 | }) 86 | print(f"Processed {i} of {len(repo_links)}: {link}") 87 | else: 88 | print(f"Skipping {link} due to previous errors.") 89 | 90 | # Add delay between requests 91 | time.sleep(2) 92 | 93 | if data: 94 | self.create_json_file(data) 95 | 96 | 97 | def main(): 98 | if len(sys.argv) != 3: 99 | print("Usage: repo_report.py ") 100 | return 101 | 102 | access_token = os.environ.get('ACCESS_TOKEN') 103 | if not access_token: 104 | print("ACCESS_TOKEN environment variable not found.") 105 | return 106 | 107 | input_file = sys.argv[1] 108 | output_file = sys.argv[2] 109 | 110 | analyzer = GitHubRepoAnalyzer(access_token, input_file, output_file) 111 | analyzer.process_repos() 112 | 113 | 114 | if __name__ == '__main__': 115 | main() 116 | -------------------------------------------------------------------------------- /data/full_stack_framework_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "meteor", 5 | "description": "Meteor, the JavaScript App Platform", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/789528?v=4", 7 | "html_url": "https://github.com/meteor/meteor", 8 | "stargazers_count": 44754, 9 | "created_at": "2012-01-19T01:58:17Z", 10 | "updated_at": "2025-11-29T10:13:26Z", 11 | "pushed_at": "2025-11-28T20:49:37Z" 12 | }, 13 | { 14 | "name": "django", 15 | "description": "The Web framework for perfectionists with deadlines.", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/27804?v=4", 17 | "html_url": "https://github.com/django/django", 18 | "stargazers_count": 85985, 19 | "created_at": "2012-04-28T02:47:18Z", 20 | "updated_at": "2025-11-30T22:30:40Z", 21 | "pushed_at": "2025-11-30T07:31:42Z" 22 | }, 23 | { 24 | "name": "laravel", 25 | "description": "Laravel is a web application framework with expressive, elegant syntax. We\u2019ve already laid the foundation for your next big idea \u2014 freeing you to create without sweating the small things.", 26 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/958072?v=4", 27 | "html_url": "https://github.com/laravel/laravel", 28 | "stargazers_count": 82912, 29 | "created_at": "2011-06-08T03:06:08Z", 30 | "updated_at": "2025-11-30T22:38:15Z", 31 | "pushed_at": "2025-11-25T22:16:01Z" 32 | }, 33 | { 34 | "name": "symfony", 35 | "description": "The Symfony PHP framework", 36 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/143937?v=4", 37 | "html_url": "https://github.com/symfony/symfony", 38 | "stargazers_count": 30810, 39 | "created_at": "2010-01-04T14:21:21Z", 40 | "updated_at": "2025-11-30T09:07:30Z", 41 | "pushed_at": "2025-11-30T15:03:58Z" 42 | }, 43 | { 44 | "name": "next.js", 45 | "description": "The React Framework", 46 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/14985020?v=4", 47 | "html_url": "https://github.com/vercel/next.js", 48 | "stargazers_count": 135944, 49 | "created_at": "2016-10-05T23:32:51Z", 50 | "updated_at": "2025-12-01T00:16:46Z", 51 | "pushed_at": "2025-11-30T20:52:45Z" 52 | }, 53 | { 54 | "name": "graphql", 55 | "description": "RedwoodGraphQL", 56 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/45050444?v=4", 57 | "html_url": "https://github.com/redwoodjs/graphql", 58 | "stargazers_count": 17645, 59 | "created_at": "2019-06-09T20:17:57Z", 60 | "updated_at": "2025-11-23T03:37:15Z", 61 | "pushed_at": "2025-11-30T09:17:17Z" 62 | }, 63 | { 64 | "name": "keystone", 65 | "description": "The superpowered headless CMS for Node.js \u2014 built with GraphQL and React", 66 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/6118534?v=4", 67 | "html_url": "https://github.com/keystonejs/keystone", 68 | "stargazers_count": 9785, 69 | "created_at": "2018-04-05T10:48:37Z", 70 | "updated_at": "2025-11-30T18:32:07Z", 71 | "pushed_at": "2025-11-30T21:03:33Z" 72 | }, 73 | { 74 | "name": "rails", 75 | "description": "Ruby on Rails", 76 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/4223?v=4", 77 | "html_url": "https://github.com/rails/rails", 78 | "stargazers_count": 57920, 79 | "created_at": "2008-04-11T02:19:47Z", 80 | "updated_at": "2025-11-30T20:03:47Z", 81 | "pushed_at": "2025-11-30T20:03:41Z" 82 | }, 83 | { 84 | "name": "blitz", 85 | "description": "\u26a1\ufe0f The Missing Fullstack Toolkit for Next.js", 86 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/61243378?v=4", 87 | "html_url": "https://github.com/blitz-js/blitz", 88 | "stargazers_count": 14099, 89 | "created_at": "2020-02-17T21:54:15Z", 90 | "updated_at": "2025-11-29T07:29:49Z", 91 | "pushed_at": "2025-11-21T13:13:37Z" 92 | } 93 | ], 94 | "meta": { 95 | "last_updated": "2025-12-01T00:30:31.170184Z" 96 | } 97 | } -------------------------------------------------------------------------------- /data/state_management_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "zustand", 5 | "description": "\ud83d\udc3b Bear necessities for state management in React", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/45790596?v=4", 7 | "html_url": "https://github.com/pmndrs/zustand", 8 | "stargazers_count": 55937, 9 | "created_at": "2019-04-09T09:10:06Z", 10 | "updated_at": "2025-11-30T19:31:39Z", 11 | "pushed_at": "2025-11-30T00:59:21Z" 12 | }, 13 | { 14 | "name": "mobx", 15 | "description": "Simple, scalable state management.", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/17475736?v=4", 17 | "html_url": "https://github.com/mobxjs/mobx", 18 | "stargazers_count": 28106, 19 | "created_at": "2015-03-14T14:31:38Z", 20 | "updated_at": "2025-11-30T14:17:06Z", 21 | "pushed_at": "2025-11-21T07:21:43Z" 22 | }, 23 | { 24 | "name": "akita", 25 | "description": "\ud83d\ude80 State Management Tailored-Made for JS Applications", 26 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/453694?v=4", 27 | "html_url": "https://github.com/salesforce/akita", 28 | "stargazers_count": 3689, 29 | "created_at": "2018-06-11T09:03:03Z", 30 | "updated_at": "2025-11-27T15:24:12Z", 31 | "pushed_at": "2025-05-01T17:28:19Z" 32 | }, 33 | { 34 | "name": "overmind", 35 | "description": "Overmind - Frictionless state management", 36 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/15994611?v=4", 37 | "html_url": "https://github.com/cerebral/overmind", 38 | "stargazers_count": 1588, 39 | "created_at": "2018-06-18T20:18:48Z", 40 | "updated_at": "2025-11-26T16:57:47Z", 41 | "pushed_at": "2025-11-26T22:14:25Z" 42 | }, 43 | { 44 | "name": "redux", 45 | "description": "A JS library for predictable global state management", 46 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/13142323?v=4", 47 | "html_url": "https://github.com/reduxjs/redux", 48 | "stargazers_count": 61416, 49 | "created_at": "2015-05-29T23:53:15Z", 50 | "updated_at": "2025-11-29T21:49:52Z", 51 | "pushed_at": "2025-11-27T19:44:36Z" 52 | }, 53 | { 54 | "name": "Recoil", 55 | "description": "Recoil is an experimental state management library for React apps. It provides several capabilities that are difficult to achieve with React alone, while being compatible with the newest features of React.", 56 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/12853545?v=4", 57 | "html_url": "https://github.com/facebookexperimental/Recoil", 58 | "stargazers_count": 19563, 59 | "created_at": "2020-05-04T19:44:15Z", 60 | "updated_at": "2025-11-29T23:38:18Z", 61 | "pushed_at": "2025-01-01T08:07:34Z" 62 | }, 63 | { 64 | "name": "xstate", 65 | "description": "Actor-based state management & orchestration for complex app logic.", 66 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/61783956?v=4", 67 | "html_url": "https://github.com/statelyai/xstate", 68 | "stargazers_count": 28971, 69 | "created_at": "2015-09-14T15:04:15Z", 70 | "updated_at": "2025-11-30T23:50:35Z", 71 | "pushed_at": "2025-11-28T04:58:20Z" 72 | }, 73 | { 74 | "name": "jotai", 75 | "description": "\ud83d\udc7b Primitive and flexible state management for React", 76 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/45790596?v=4", 77 | "html_url": "https://github.com/pmndrs/jotai", 78 | "stargazers_count": 20787, 79 | "created_at": "2020-08-11T23:15:36Z", 80 | "updated_at": "2025-11-30T13:29:01Z", 81 | "pushed_at": "2025-11-30T09:37:48Z" 82 | }, 83 | { 84 | "name": "hookstate", 85 | "description": "The simple but very powerful and incredibly fast state management for React that is based on hooks", 86 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/3971413?v=4", 87 | "html_url": "https://github.com/avkonst/hookstate", 88 | "stargazers_count": 1665, 89 | "created_at": "2019-05-30T23:52:29Z", 90 | "updated_at": "2025-11-26T00:28:08Z", 91 | "pushed_at": "2025-03-20T22:46:54Z" 92 | } 93 | ], 94 | "meta": { 95 | "last_updated": "2025-12-01T00:18:56.783969Z" 96 | } 97 | } -------------------------------------------------------------------------------- /ui/src/styles/satoshi.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * 4 | * Font Family: Satoshi 5 | * Designed by: Deni Anggara 6 | * URL: https://www.fontshare.com/fonts/satoshi 7 | * © 2024 Indian Type Foundry 8 | * 9 | * Satoshi Light 10 | * Satoshi LightItalic 11 | * Satoshi Regular 12 | * Satoshi Italic 13 | * Satoshi Medium 14 | * Satoshi MediumItalic 15 | * Satoshi Bold 16 | * Satoshi BoldItalic 17 | * Satoshi Black 18 | * Satoshi BlackItalic 19 | * Satoshi Variable (Variable font) 20 | * Satoshi VariableItalic (Variable font) 21 | 22 | * 23 | */ 24 | @font-face { 25 | font-family: "Satoshi-Light"; 26 | src: url("../assets/fonts/Satoshi-Light.woff2") format("woff2"), 27 | url("../assets/fonts/Satoshi-Light.woff") format("woff"), 28 | url("../assets/fonts/Satoshi-Light.ttf") format("truetype"); 29 | font-weight: 300; 30 | font-display: swap; 31 | font-style: normal; 32 | } 33 | @font-face { 34 | font-family: "Satoshi-LightItalic"; 35 | src: url("../assets/fonts/Satoshi-LightItalic.woff2") format("woff2"), 36 | url("../assets/fonts/Satoshi-LightItalic.woff") format("woff"), 37 | url("../assets/fonts/Satoshi-LightItalic.ttf") format("truetype"); 38 | font-weight: 300; 39 | font-display: swap; 40 | font-style: italic; 41 | } 42 | @font-face { 43 | font-family: "Satoshi-Regular"; 44 | src: url("../assets/fonts/Satoshi-Regular.woff2") format("woff2"), 45 | url("../assets/fonts/Satoshi-Regular.woff") format("woff"), 46 | url("../assets/fonts/Satoshi-Regular.ttf") format("truetype"); 47 | font-weight: 400; 48 | font-display: swap; 49 | font-style: normal; 50 | } 51 | @font-face { 52 | font-family: "Satoshi-Italic"; 53 | src: url("../assets/fonts/Satoshi-Italic.woff2") format("woff2"), 54 | url("../assets/fonts/Satoshi-Italic.woff") format("woff"), 55 | url("../assets/fonts/Satoshi-Italic.ttf") format("truetype"); 56 | font-weight: 400; 57 | font-display: swap; 58 | font-style: italic; 59 | } 60 | @font-face { 61 | font-family: "Satoshi-Medium"; 62 | src: url("../assets/fonts/Satoshi-Medium.woff2") format("woff2"), 63 | url("../assets/fonts/Satoshi-Medium.woff") format("woff"), 64 | url("../assets/fonts/Satoshi-Medium.ttf") format("truetype"); 65 | font-weight: 500; 66 | font-display: swap; 67 | font-style: normal; 68 | } 69 | @font-face { 70 | font-family: "Satoshi-MediumItalic"; 71 | src: url("../assets/fonts/Satoshi-MediumItalic.woff2") format("woff2"), 72 | url("../assets/fonts/Satoshi-MediumItalic.woff") format("woff"), 73 | url("../assets/fonts/Satoshi-MediumItalic.ttf") format("truetype"); 74 | font-weight: 500; 75 | font-display: swap; 76 | font-style: italic; 77 | } 78 | @font-face { 79 | font-family: "Satoshi-Bold"; 80 | src: url("../assets/fonts/Satoshi-Bold.woff2") format("woff2"), 81 | url("../assets/fonts/Satoshi-Bold.woff") format("woff"), 82 | url("../assets/fonts/Satoshi-Bold.ttf") format("truetype"); 83 | font-weight: 700; 84 | font-display: swap; 85 | font-style: normal; 86 | } 87 | @font-face { 88 | font-family: "Satoshi-BoldItalic"; 89 | src: url("../assets/fonts/Satoshi-BoldItalic.woff2") format("woff2"), 90 | url("../assets/fonts/Satoshi-BoldItalic.woff") format("woff"), 91 | url("../assets/fonts/Satoshi-BoldItalic.ttf") format("truetype"); 92 | font-weight: 700; 93 | font-display: swap; 94 | font-style: italic; 95 | } 96 | @font-face { 97 | font-family: "Satoshi-Black"; 98 | src: url("../assets/fonts/Satoshi-Black.woff2") format("woff2"), 99 | url("../assets/fonts/Satoshi-Black.woff") format("woff"), 100 | url("../assets/fonts/Satoshi-Black.ttf") format("truetype"); 101 | font-weight: 900; 102 | font-display: swap; 103 | font-style: normal; 104 | } 105 | @font-face { 106 | font-family: "Satoshi-BlackItalic"; 107 | src: url("../assets/fonts/Satoshi-BlackItalic.woff2") format("woff2"), 108 | url("../assets/fonts/Satoshi-BlackItalic.woff") format("woff"), 109 | url("../assets/fonts/Satoshi-BlackItalic.ttf") format("truetype"); 110 | font-weight: 900; 111 | font-display: swap; 112 | font-style: italic; 113 | } 114 | /** 115 | * This is a variable font 116 | * You can control variable axes as shown below: 117 | * font-variation-settings: wght 900.0; 118 | * 119 | * available axes: 120 | 'wght' (range from 300.0 to 900.0 121 | */ 122 | @font-face { 123 | font-family: "Satoshi-Variable"; 124 | src: url("../assets/fonts/Satoshi-Variable.woff2") format("woff2"), 125 | url("../assets/fonts/Satoshi-Variable.woff") format("woff"), 126 | url("../assets/fonts/Satoshi-Variable.ttf") format("truetype"); 127 | font-weight: 300 900; 128 | font-display: swap; 129 | font-style: normal; 130 | } 131 | /** 132 | * This is a variable font 133 | * You can control variable axes as shown below: 134 | * font-variation-settings: wght 900.0; 135 | * 136 | * available axes: 137 | 'wght' (range from 300.0 to 900.0 138 | */ 139 | @font-face { 140 | font-family: "Satoshi-VariableItalic"; 141 | src: url("../assets/fonts/Satoshi-VariableItalic.woff2") format("woff2"), 142 | url("../assets/fonts/Satoshi-VariableItalic.woff") format("woff"), 143 | url("../assets/fonts/Satoshi-VariableItalic.ttf") format("truetype"); 144 | font-weight: 300 900; 145 | font-display: swap; 146 | font-style: italic; 147 | } 148 | -------------------------------------------------------------------------------- /data/chart_urls.txt: -------------------------------------------------------------------------------- 1 | https://github.com/naver/billboard.js 2 | https://github.com/britecharts/britecharts 3 | https://github.com/microsoft/chart-parts 4 | https://github.com/square/cubism 5 | https://github.com/c3js/c3 6 | https://github.com/dagrejs/dagre-d3 7 | https://github.com/dc-js/dc.js 8 | https://github.com/d2bjs/d2b 9 | https://github.com/tj/d3-bar 10 | https://github.com/Kcnarf/d3-beeswarm 11 | https://github.com/akngs/d3-boxplot 12 | https://github.com/johnwalley/d3-bumps-chart 13 | https://github.com/erikbrinkman/d3-dag 14 | https://github.com/jamesleesaunders/d3-ez 15 | https://github.com/spiermar/d3-flame-graph 16 | https://github.com/jakezatecky/d3-funnel 17 | https://github.com/romsson/d3-gridding 18 | https://github.com/tj/d3-heatmap 19 | https://github.com/koudelka/d3-message-sequence 20 | https://github.com/chuntul/d3-upset 21 | https://github.com/jamesleesaunders/d3-x3d 22 | https://github.com/d3fc/d3fc 23 | https://github.com/d3plus/d3plus 24 | https://github.com/kbroman/d3panels 25 | https://github.com/benkeen/d3pie 26 | https://github.com/NathanEpstein/D3xter 27 | https://github.com/heavysixer/d4 28 | https://github.com/ErikGartner/dTree 29 | https://github.com/marmelab/EventDrops 30 | https://github.com/metricsgraphics/metrics-graphics 31 | https://github.com/biovisualize/micropolar 32 | https://github.com/mpld3/mpld3 33 | https://github.com/eisman/neo4jd3 34 | https://github.com/novus/nvd3 35 | https://github.com/oecd-cyc/oecd-simple-charts 36 | https://github.com/plotly/plotly.js 37 | https://github.com/palantir/plottable 38 | https://github.com/shutterstock/rickshaw 39 | https://github.com/TargetProcess/tauCharts 40 | https://github.com/vega/vega 41 | https://github.com/vega/vega-lite 42 | https://github.com/vega/vega-lite-api 43 | https://github.com/benfred/venn.js 44 | https://github.com/flrs/visavail 45 | https://github.com/vizabi/vizabi 46 | https://github.com/tgdwyer/WebCola 47 | https://github.com/imkevinxu/xkcdgraphs 48 | https://github.com/mhkeller/layercake 49 | https://github.com/plouc/nivo 50 | https://github.com/swimlane/ngx-charts 51 | https://github.com/finnfiddle/potion 52 | https://github.com/codesuki/react-d3-components 53 | https://github.com/react-d3-library/react-d3-library 54 | https://github.com/rrag/react-stockcharts 55 | https://github.com/uber/react-vis 56 | https://github.com/reaviz/reaviz 57 | https://github.com/recharts/recharts 58 | https://github.com/nteract/semiotic 59 | https://github.com/FormidableLabs/victory 60 | https://github.com/airbnb/visx 61 | https://github.com/GopherJ/Vs 62 | https://github.com/ignoreintuition/v-chart-plugin 63 | https://github.com/rveciana/d3-composite-projections 64 | https://github.com/markmarkoh/datamaps 65 | https://github.com/shawnbot/topogram 66 | https://github.com/bsouthga/d3-exploder 67 | https://github.com/d3/d3-geo-polygon 68 | https://github.com/d3/d3-geo-projection 69 | https://github.com/HarryStevens/d3-geo-scale-bar 70 | https://github.com/Fil/d3-geo-voronoi 71 | https://github.com/yaph/d3-geomap 72 | https://github.com/sebastian-meier/d3.geo2rect 73 | https://github.com/Fil/d3-inertia 74 | https://github.com/floledermann/mapmap.js 75 | https://github.com/Packet-Clearing-House/maptable 76 | https://github.com/MinnPost/simple-map-d3 77 | https://github.com/newsappsio/spam 78 | https://github.com/bluehalo/leaflet-d3 79 | https://github.com/WikimapsAtlas/WikimapsAtlas-generator 80 | https://github.com/zcreativelabs/react-simple-maps 81 | https://github.com/crossfilter/crossfilter 82 | https://github.com/kristw/d3kit-timeline 83 | https://github.com/GlobalWebIndex/d3scription 84 | https://github.com/susielu/d3-annotation 85 | https://github.com/curran/d3-area-label 86 | https://github.com/bumbeishvili/d3-breadcrumbs 87 | https://github.com/curran/d3-component 88 | https://github.com/wbkd/d3-extended 89 | https://github.com/bahmutov/d3-helpers 90 | https://github.com/vijithassar/d3-history 91 | https://github.com/petulla/d3-hsluv 92 | https://github.com/tomgp/d3-iconarray 93 | https://github.com/pbeshai/d3-interpolate-path 94 | https://github.com/gka/d3-jetpack 95 | https://github.com/skokenes/d3-lasso 96 | https://github.com/susielu/d3-legend 97 | https://github.com/nbremer/d3-loom 98 | https://github.com/53seven/d3-nelson-rules 99 | https://github.com/efekarakus/d3-peaks 100 | https://github.com/armollica/d3-ring-note 101 | https://github.com/schnerd/d3-scale-cluster 102 | https://github.com/zazuko/d3-sparql 103 | https://github.com/ErikOnBike/d3-template 104 | https://github.com/bumbeishvili/d3-tooltip 105 | https://github.com/Kcnarf/d3-voronoi-treemap 106 | https://github.com/vijithassar/d3-xray 107 | https://github.com/bizweekgraphics/swoopyarrows 108 | https://github.com/1wheel/swoopy-drag 109 | https://github.com/riccardoscalco/textures 110 | https://github.com/ebemunk/chess-dataviz 111 | https://github.com/fzaninotto/CodeFlower 112 | https://github.com/jasondavies/d3-cloud 113 | https://github.com/patorjk/d3-context-menu 114 | https://github.com/sohamkamani/d3-force-gravity 115 | https://github.com/twosixlabs/d3-force-reuse 116 | https://github.com/twosixlabs/d3-force-sampled 117 | https://github.com/sebastian-meier/d3.sketchy 118 | https://github.com/d3plus/d3plus-text 119 | https://github.com/1wheel/graph-scroll 120 | https://github.com/mermaid-js/mermaid 121 | https://github.com/dborzov/netvis 122 | https://github.com/PierreCapo/treeviz 123 | https://github.com/Lissy93/twitter-sentiment-visualisation 124 | https://github.com/d3-node/d3-node 125 | https://github.com/tracyhenry/Kyrix 126 | https://github.com/apache/echarts 127 | https://github.com/tremorlabs/tremor -------------------------------------------------------------------------------- /data/mobile_desktop_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "expo", 5 | "description": "An open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web.", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/12504344?v=4", 7 | "html_url": "https://github.com/expo/expo", 8 | "stargazers_count": 45239, 9 | "created_at": "2016-08-15T17:14:25Z", 10 | "updated_at": "2025-12-01T00:09:25Z", 11 | "pushed_at": "2025-11-29T23:11:25Z" 12 | }, 13 | { 14 | "name": "quasar", 15 | "description": "Quasar Framework - Build high-performance VueJS user interfaces in record time", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/23064371?v=4", 17 | "html_url": "https://github.com/quasarframework/quasar", 18 | "stargazers_count": 26977, 19 | "created_at": "2015-10-05T15:45:36Z", 20 | "updated_at": "2025-11-30T15:01:58Z", 21 | "pushed_at": "2025-11-13T15:43:13Z" 22 | }, 23 | { 24 | "name": "react-native", 25 | "description": "A framework for building native applications using React", 26 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", 27 | "html_url": "https://github.com/facebook/react-native", 28 | "stargazers_count": 124633, 29 | "created_at": "2015-01-09T18:10:16Z", 30 | "updated_at": "2025-11-30T23:50:27Z", 31 | "pushed_at": "2025-11-29T14:16:04Z" 32 | }, 33 | { 34 | "name": "nw.js", 35 | "description": "Call all Node.js modules directly from DOM/WebWorker and enable a new way of writing applications with all Web technologies.", 36 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/10180421?v=4", 37 | "html_url": "https://github.com/nwjs/nw.js", 38 | "stargazers_count": 41492, 39 | "created_at": "2012-01-04T06:21:10Z", 40 | "updated_at": "2025-11-30T16:52:54Z", 41 | "pushed_at": "2025-11-24T01:01:09Z" 42 | }, 43 | { 44 | "name": "ionic-framework", 45 | "description": "A powerful cross-platform UI toolkit for building native-quality iOS, Android, and Progressive Web Apps with HTML, CSS, and JavaScript.", 46 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/3171503?v=4", 47 | "html_url": "https://github.com/ionic-team/ionic-framework", 48 | "stargazers_count": 52214, 49 | "created_at": "2013-08-20T23:06:02Z", 50 | "updated_at": "2025-11-30T17:03:57Z", 51 | "pushed_at": "2025-11-29T18:01:58Z" 52 | }, 53 | { 54 | "name": "electron", 55 | "description": ":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS", 56 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/13409222?v=4", 57 | "html_url": "https://github.com/electron/electron", 58 | "stargazers_count": 119225, 59 | "created_at": "2013-04-12T01:47:36Z", 60 | "updated_at": "2025-12-01T00:18:06Z", 61 | "pushed_at": "2025-11-30T13:00:44Z" 62 | }, 63 | { 64 | "name": "NativeScript", 65 | "description": "\u26a1 Write Native with TypeScript \u2728 Best of all worlds (TypeScript, Swift, Objective C, Kotlin, Java, Dart). Use what you love \u2764\ufe0f Angular, React, Solid, Svelte, Vue with: iOS (UIKit, SwiftUI), Android (View, Jetpack Compose), Flutter and you name it compatible.", 66 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/7392261?v=4", 67 | "html_url": "https://github.com/NativeScript/NativeScript", 68 | "stargazers_count": 25326, 69 | "created_at": "2015-03-01T09:47:08Z", 70 | "updated_at": "2025-11-30T18:16:43Z", 71 | "pushed_at": "2025-11-28T15:10:26Z" 72 | }, 73 | { 74 | "name": "capacitor", 75 | "description": "Build cross-platform Native Progressive Web Apps for iOS, Android, and the Web \u26a1\ufe0f", 76 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/3171503?v=4", 77 | "html_url": "https://github.com/ionic-team/capacitor", 78 | "stargazers_count": 14409, 79 | "created_at": "2017-11-18T21:38:09Z", 80 | "updated_at": "2025-11-30T21:11:43Z", 81 | "pushed_at": "2025-11-27T18:03:55Z" 82 | }, 83 | { 84 | "name": "cordova", 85 | "description": "Apache Cordova", 86 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/47359?v=4", 87 | "html_url": "https://github.com/apache/cordova", 88 | "stargazers_count": 687, 89 | "created_at": "2018-02-13T10:02:11Z", 90 | "updated_at": "2025-11-28T17:17:53Z", 91 | "pushed_at": "2025-11-26T11:39:06Z" 92 | }, 93 | { 94 | "name": "tauri", 95 | "description": "Build smaller, faster, and more secure desktop and mobile applications with a web frontend.", 96 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/54536011?v=4", 97 | "html_url": "https://github.com/tauri-apps/tauri", 98 | "stargazers_count": 99457, 99 | "created_at": "2019-07-13T09:09:37Z", 100 | "updated_at": "2025-12-01T00:18:08Z", 101 | "pushed_at": "2025-11-30T10:54:25Z" 102 | } 103 | ], 104 | "meta": { 105 | "last_updated": "2025-12-01T00:18:18.533635Z" 106 | } 107 | } -------------------------------------------------------------------------------- /ui/src/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import { title } from "@/components/primitives"; 2 | import DefaultLayout from "@/layouts/default"; 3 | import ReposTable from "@/components/repos-table"; 4 | 5 | type reports = { 6 | [key: string]: string; 7 | }; 8 | 9 | export const reports: reports = { 10 | charts: 11 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/chart_report.json", 12 | components: 13 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/comp_report.json", 14 | testing: 15 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/test_report.json", 16 | state_management: 17 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/state_management_report.json", 18 | ui_frameworks: 19 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/ui_framework_report.json", 20 | backend_frameworks: 21 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/backend_framework_report.json", 22 | full_stack_frameworks: 23 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/full_stack_framework_report.json", 24 | mobile_desktop: 25 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/mobile_desktop_report.json", 26 | database: 27 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/db_report.json", 28 | monitoring: 29 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/monitoring_report.json", 30 | analytics: 31 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/analytics_report.json", 32 | auth: "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/auth_report.json", 33 | others: 34 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/others_report.json", 35 | icons: 36 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/icons_report.json", 37 | ai_providers: 38 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/ai_providers_report.json", 39 | }; 40 | 41 | export const proReports: reports = { 42 | charts: 43 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/chart_report_pro.json", 44 | components: 45 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/comp_report_pro.json", 46 | testing: 47 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/test_report_pro.json", 48 | state_management: 49 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/state_management_report_pro.json", 50 | ui_frameworks: 51 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/ui_framework_report_pro.json", 52 | backend_frameworks: 53 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/backend_framework_report_pro.json", 54 | full_stack_frameworks: 55 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/full_stack_framework_report_pro.json", 56 | mobile_desktop: 57 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/mobile_desktop_report_pro.json", 58 | database: 59 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/db_report_pro.json", 60 | monitoring: 61 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/monitoring_report_pro.json", 62 | analytics: 63 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/analytics_report_pro.json", 64 | auth: "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/auth_report_pro.txt", 65 | others: 66 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/others_report_pro.json", 67 | icons: 68 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/icons_report_pro.json", 69 | ai_gateway: 70 | "https://raw.githubusercontent.com/lifeparticle/SelectStar/master/data/ai_gateway_pro.json", 71 | }; 72 | 73 | export const openSourceTabs = [ 74 | { value: "ui_frameworks", label: "UI frameworks" }, 75 | { value: "state_management", label: "State management libraries" }, 76 | { value: "components", label: "Component libraries" }, 77 | { value: "charts", label: "Charts" }, 78 | { value: "backend_frameworks", label: "Backend frameworks" }, 79 | { value: "full_stack_frameworks", label: "Full stack frameworks" }, 80 | { value: "mobile_desktop", label: "Mobile and desktop frameworks" }, 81 | { value: "database", label: "Database" }, 82 | { value: "testing", label: "Testing libraries" }, 83 | { value: "monitoring", label: "Monitoring tools" }, 84 | { value: "analytics", label: "Analytics tools" }, 85 | { value: "auth", label: "Authentication" }, 86 | { value: "icons", label: "Icons" }, 87 | { value: "ai_providers", label: "AI Providers" }, 88 | { value: "others", label: "Others" }, 89 | ]; 90 | 91 | export const proTabs = [ 92 | { value: "ui_frameworks", label: "UI frameworks" }, 93 | { value: "state_management", label: "State management libraries" }, 94 | { value: "components", label: "Component libraries" }, 95 | { value: "charts", label: "Charts" }, 96 | { value: "backend_frameworks", label: "Backend frameworks" }, 97 | { value: "full_stack_frameworks", label: "Full stack frameworks" }, 98 | { value: "mobile_desktop", label: "Mobile and desktop frameworks" }, 99 | { value: "database", label: "Database" }, 100 | { value: "testing", label: "Testing libraries" }, 101 | { value: "monitoring", label: "Monitoring tools" }, 102 | { value: "analytics", label: "Analytics tools" }, 103 | { value: "auth", label: "Authentication" }, 104 | { value: "icons", label: "Icons" }, 105 | { value: "ai_gateway", label: "AI Gateway" }, 106 | { value: "others", label: "Others" }, 107 | ]; 108 | 109 | export default function IndexPage() { 110 | return ( 111 | 112 |
113 |
114 |

115 | Compare GitHub{" "} 116 | repositories based on stars and other relevant parameters. 117 |

118 |
119 | 120 | 121 |
122 |
123 | ); 124 | } 125 | -------------------------------------------------------------------------------- /data/test_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "ava", 5 | "description": "Node.js test runner that lets you develop with confidence \ud83d\ude80", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/8527916?v=4", 7 | "html_url": "https://github.com/avajs/ava", 8 | "stargazers_count": 20848, 9 | "created_at": "2014-11-18T17:20:26Z", 10 | "updated_at": "2025-11-27T05:19:08Z", 11 | "pushed_at": "2025-11-05T15:56:47Z" 12 | }, 13 | { 14 | "name": "mocha", 15 | "description": "\u2615\ufe0f simple, flexible, fun javascript test framework for node.js & the browser", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/8770005?v=4", 17 | "html_url": "https://github.com/mochajs/mocha", 18 | "stargazers_count": 22857, 19 | "created_at": "2011-03-07T18:44:25Z", 20 | "updated_at": "2025-11-29T10:12:26Z", 21 | "pushed_at": "2025-11-27T14:58:55Z" 22 | }, 23 | { 24 | "name": "enzyme", 25 | "description": "JavaScript Testing utilities for React", 26 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/60945302?v=4", 27 | "html_url": "https://github.com/enzymejs/enzyme", 28 | "stargazers_count": 19900, 29 | "created_at": "2015-11-10T21:45:38Z", 30 | "updated_at": "2025-11-30T11:50:38Z", 31 | "pushed_at": "2025-10-22T15:55:30Z" 32 | }, 33 | { 34 | "name": "msw", 35 | "description": "Industry standard API mocking for JavaScript.", 36 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/64637271?v=4", 37 | "html_url": "https://github.com/mswjs/msw", 38 | "stargazers_count": 17362, 39 | "created_at": "2018-11-13T14:58:44Z", 40 | "updated_at": "2025-11-30T21:51:23Z", 41 | "pushed_at": "2025-11-23T10:40:04Z" 42 | }, 43 | { 44 | "name": "playwright", 45 | "description": "Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API. ", 46 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/6154722?v=4", 47 | "html_url": "https://github.com/microsoft/playwright", 48 | "stargazers_count": 79773, 49 | "created_at": "2019-11-15T18:32:42Z", 50 | "updated_at": "2025-12-01T00:25:17Z", 51 | "pushed_at": "2025-11-30T19:36:37Z" 52 | }, 53 | { 54 | "name": "puppeteer", 55 | "description": "JavaScript API for Chrome and Firefox", 56 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/6906516?v=4", 57 | "html_url": "https://github.com/puppeteer/puppeteer", 58 | "stargazers_count": 92950, 59 | "created_at": "2017-05-09T22:16:13Z", 60 | "updated_at": "2025-12-01T00:21:46Z", 61 | "pushed_at": "2025-11-30T03:04:17Z" 62 | }, 63 | { 64 | "name": "cypress", 65 | "description": "Fast, easy and reliable testing for anything that runs in a browser.", 66 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/8908513?v=4", 67 | "html_url": "https://github.com/cypress-io/cypress", 68 | "stargazers_count": 49440, 69 | "created_at": "2015-03-04T00:46:28Z", 70 | "updated_at": "2025-11-30T02:20:42Z", 71 | "pushed_at": "2025-11-29T15:39:45Z" 72 | }, 73 | { 74 | "name": "jest", 75 | "description": "Delightful JavaScript Testing.", 76 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/103283236?v=4", 77 | "html_url": "https://github.com/jestjs/jest", 78 | "stargazers_count": 45180, 79 | "created_at": "2013-12-10T00:18:04Z", 80 | "updated_at": "2025-11-30T20:52:47Z", 81 | "pushed_at": "2025-11-20T07:51:13Z" 82 | }, 83 | { 84 | "name": "chai", 85 | "description": "BDD / TDD assertion framework for node.js and the browser that can be paired with any testing framework.", 86 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/1515293?v=4", 87 | "html_url": "https://github.com/chaijs/chai", 88 | "stargazers_count": 8260, 89 | "created_at": "2011-12-07T08:06:35Z", 90 | "updated_at": "2025-11-29T10:11:20Z", 91 | "pushed_at": "2025-11-24T08:59:57Z" 92 | }, 93 | { 94 | "name": "react-testing-library", 95 | "description": "\ud83d\udc10 Simple and complete React DOM testing utilities that encourage good testing practices.", 96 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/49996085?v=4", 97 | "html_url": "https://github.com/testing-library/react-testing-library", 98 | "stargazers_count": 19460, 99 | "created_at": "2018-03-19T13:39:49Z", 100 | "updated_at": "2025-11-30T06:06:16Z", 101 | "pushed_at": "2025-11-05T13:30:28Z" 102 | }, 103 | { 104 | "name": "selenium", 105 | "description": "A browser automation framework and ecosystem.", 106 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/983927?v=4", 107 | "html_url": "https://github.com/SeleniumHQ/selenium", 108 | "stargazers_count": 33710, 109 | "created_at": "2013-01-14T21:40:56Z", 110 | "updated_at": "2025-12-01T00:16:01Z", 111 | "pushed_at": "2025-12-01T00:21:06Z" 112 | }, 113 | { 114 | "name": "testcafe", 115 | "description": "A Node.js tool to automate end-to-end web testing.", 116 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/4243232?v=4", 117 | "html_url": "https://github.com/DevExpress/testcafe", 118 | "stargazers_count": 9894, 119 | "created_at": "2015-04-20T13:43:28Z", 120 | "updated_at": "2025-11-28T03:19:44Z", 121 | "pushed_at": "2025-11-27T18:57:09Z" 122 | }, 123 | { 124 | "name": "storybook", 125 | "description": "Storybook is the industry standard workshop for building, documenting, and testing UI components in isolation", 126 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/22632046?v=4", 127 | "html_url": "https://github.com/storybookjs/storybook", 128 | "stargazers_count": 88751, 129 | "created_at": "2016-03-18T04:23:44Z", 130 | "updated_at": "2025-11-30T23:41:44Z", 131 | "pushed_at": "2025-11-30T00:35:41Z" 132 | }, 133 | { 134 | "name": "vitest", 135 | "description": "Next generation testing framework powered by Vite.", 136 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/95747107?v=4", 137 | "html_url": "https://github.com/vitest-dev/vitest", 138 | "stargazers_count": 15457, 139 | "created_at": "2021-12-03T19:19:49Z", 140 | "updated_at": "2025-11-30T20:52:44Z", 141 | "pushed_at": "2025-11-28T16:22:36Z" 142 | } 143 | ], 144 | "meta": { 145 | "last_updated": "2025-12-01T00:27:05.406658Z" 146 | } 147 | } -------------------------------------------------------------------------------- /data/ui_framework_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "core", 5 | "description": "\ud83d\udd96 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/6128107?v=4", 7 | "html_url": "https://github.com/vuejs/core", 8 | "stargazers_count": 52284, 9 | "created_at": "2018-06-12T13:49:36Z", 10 | "updated_at": "2025-11-30T23:52:00Z", 11 | "pushed_at": "2025-11-30T13:43:54Z" 12 | }, 13 | { 14 | "name": "gatsby", 15 | "description": "The best React-based framework with performance, scalability and security built in.", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/12551863?v=4", 17 | "html_url": "https://github.com/gatsbyjs/gatsby", 18 | "stargazers_count": 55956, 19 | "created_at": "2015-05-21T22:43:05Z", 20 | "updated_at": "2025-12-01T00:13:03Z", 21 | "pushed_at": "2025-11-27T18:49:31Z" 22 | }, 23 | { 24 | "name": "preact", 25 | "description": "\u269b\ufe0f Fast 3kB React alternative with the same modern API. Components & Virtual DOM.", 26 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/26872990?v=4", 27 | "html_url": "https://github.com/preactjs/preact", 28 | "stargazers_count": 38184, 29 | "created_at": "2015-09-11T02:40:18Z", 30 | "updated_at": "2025-11-30T19:16:42Z", 31 | "pushed_at": "2025-11-29T13:21:09Z" 32 | }, 33 | { 34 | "name": "angular", 35 | "description": "Deliver web apps with confidence \ud83d\ude80", 36 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/139426?v=4", 37 | "html_url": "https://github.com/angular/angular", 38 | "stargazers_count": 99424, 39 | "created_at": "2014-09-18T16:12:01Z", 40 | "updated_at": "2025-12-01T00:12:24Z", 41 | "pushed_at": "2025-11-26T21:01:18Z" 42 | }, 43 | { 44 | "name": "ember.js", 45 | "description": "Ember.js - A JavaScript framework for creating ambitious web applications", 46 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/1253363?v=4", 47 | "html_url": "https://github.com/emberjs/ember.js", 48 | "stargazers_count": 22583, 49 | "created_at": "2011-05-25T23:39:40Z", 50 | "updated_at": "2025-11-29T21:09:51Z", 51 | "pushed_at": "2025-11-30T07:15:55Z" 52 | }, 53 | { 54 | "name": "react", 55 | "description": "The library for web and native user interfaces.", 56 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", 57 | "html_url": "https://github.com/facebook/react", 58 | "stargazers_count": 240981, 59 | "created_at": "2013-05-24T16:15:54Z", 60 | "updated_at": "2025-12-01T00:10:20Z", 61 | "pushed_at": "2025-11-29T15:52:39Z" 62 | }, 63 | { 64 | "name": "svelte", 65 | "description": "web development for the rest of us", 66 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/23617963?v=4", 67 | "html_url": "https://github.com/sveltejs/svelte", 68 | "stargazers_count": 84994, 69 | "created_at": "2016-11-20T18:13:05Z", 70 | "updated_at": "2025-11-30T21:14:50Z", 71 | "pushed_at": "2025-11-30T21:15:38Z" 72 | }, 73 | { 74 | "name": "core", 75 | "description": "A toolchain for building scalable, enterprise-ready component systems on top of TypeScript and Web Component standards. Stencil components can be distributed natively to React, Angular, Vue, and traditional web developers from a single, framework-agnostic codebase.", 76 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/31999222?v=4", 77 | "html_url": "https://github.com/stenciljs/core", 78 | "stargazers_count": 12952, 79 | "created_at": "2017-02-15T18:57:07Z", 80 | "updated_at": "2025-11-28T20:54:47Z", 81 | "pushed_at": "2025-11-29T11:50:38Z" 82 | }, 83 | { 84 | "name": "qwik", 85 | "description": "Instant-loading web apps, without effort", 86 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/138123704?v=4", 87 | "html_url": "https://github.com/QwikDev/qwik", 88 | "stargazers_count": 21802, 89 | "created_at": "2021-05-19T15:33:32Z", 90 | "updated_at": "2025-11-30T06:53:50Z", 91 | "pushed_at": "2025-11-30T16:44:57Z" 92 | }, 93 | { 94 | "name": "solid", 95 | "description": "A declarative, efficient, and flexible JavaScript library for building user interfaces.", 96 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/79226042?v=4", 97 | "html_url": "https://github.com/solidjs/solid", 98 | "stargazers_count": 34653, 99 | "created_at": "2018-04-24T16:36:27Z", 100 | "updated_at": "2025-11-30T23:27:03Z", 101 | "pushed_at": "2025-10-28T22:18:50Z" 102 | }, 103 | { 104 | "name": "mithril.js", 105 | "description": "A JavaScript Framework for Building Brilliant Applications", 106 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/19475707?v=4", 107 | "html_url": "https://github.com/MithrilJS/mithril.js", 108 | "stargazers_count": 14593, 109 | "created_at": "2014-03-17T01:59:39Z", 110 | "updated_at": "2025-11-30T22:00:12Z", 111 | "pushed_at": "2025-11-26T19:01:01Z" 112 | }, 113 | { 114 | "name": "lit", 115 | "description": "Lit is a simple library for building fast, lightweight web components.", 116 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/18489846?v=4", 117 | "html_url": "https://github.com/lit/lit", 118 | "stargazers_count": 20811, 119 | "created_at": "2017-06-29T16:27:16Z", 120 | "updated_at": "2025-11-30T21:11:41Z", 121 | "pushed_at": "2025-11-20T19:31:30Z" 122 | }, 123 | { 124 | "name": "htmx", 125 | "description": " htmx - high power tools for HTML", 126 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/48798027?v=4", 127 | "html_url": "https://github.com/bigskysoftware/htmx", 128 | "stargazers_count": 46679, 129 | "created_at": "2020-04-13T16:17:51Z", 130 | "updated_at": "2025-11-30T23:58:28Z", 131 | "pushed_at": "2025-11-27T21:05:11Z" 132 | }, 133 | { 134 | "name": "alpine", 135 | "description": "A rugged, minimal framework for composing JavaScript behavior in your markup. ", 136 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/59030169?v=4", 137 | "html_url": "https://github.com/alpinejs/alpine", 138 | "stargazers_count": 30704, 139 | "created_at": "2019-11-28T13:51:55Z", 140 | "updated_at": "2025-11-30T18:48:46Z", 141 | "pushed_at": "2025-11-17T18:27:14Z" 142 | } 143 | ], 144 | "meta": { 145 | "last_updated": "2025-12-01T00:19:44.997672Z" 146 | } 147 | } -------------------------------------------------------------------------------- /data/icons_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "icons", 5 | "description": "Official open source SVG icon library for Bootstrap.", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/2918581?v=4", 7 | "html_url": "https://github.com/twbs/icons", 8 | "stargazers_count": 7801, 9 | "created_at": "2019-07-25T17:59:58Z", 10 | "updated_at": "2025-11-29T21:05:28Z", 11 | "pushed_at": "2025-11-17T18:57:40Z" 12 | }, 13 | { 14 | "name": "iconsax", 15 | "description": "vuesax - icons", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/35979086?v=4", 17 | "html_url": "https://github.com/lusaxweb/iconsax", 18 | "stargazers_count": 372, 19 | "created_at": "2021-07-01T15:57:09Z", 20 | "updated_at": "2025-11-07T09:11:08Z", 21 | "pushed_at": "2023-06-10T19:24:16Z" 22 | }, 23 | { 24 | "name": "material-design-icons", 25 | "description": "Material Design icons by Google (Material Symbols)", 26 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/1342004?v=4", 27 | "html_url": "https://github.com/google/material-design-icons", 28 | "stargazers_count": 52593, 29 | "created_at": "2014-10-08T18:01:28Z", 30 | "updated_at": "2025-11-30T18:43:13Z", 31 | "pushed_at": "2025-09-19T02:38:15Z" 32 | }, 33 | { 34 | "name": "icons", 35 | "description": "A crisp set of 15\u00d715 icons designed by the @workos team.", 36 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/75042455?v=4", 37 | "html_url": "https://github.com/radix-ui/icons", 38 | "stargazers_count": 2546, 39 | "created_at": "2019-05-02T13:43:10Z", 40 | "updated_at": "2025-11-30T22:55:25Z", 41 | "pushed_at": "2025-09-12T15:19:26Z" 42 | }, 43 | { 44 | "name": "octicons", 45 | "description": "A scalable set of icons handcrafted with \u2764\ufe0f by GitHub", 46 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/7143434?v=4", 47 | "html_url": "https://github.com/primer/octicons", 48 | "stargazers_count": 8605, 49 | "created_at": "2014-06-16T17:10:25Z", 50 | "updated_at": "2025-11-29T21:02:10Z", 51 | "pushed_at": "2025-11-24T09:00:54Z" 52 | }, 53 | { 54 | "name": "simple-icons", 55 | "description": "SVG icons for popular brands", 56 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/29872746?v=4", 57 | "html_url": "https://github.com/simple-icons/simple-icons", 58 | "stargazers_count": 23889, 59 | "created_at": "2012-11-16T11:09:13Z", 60 | "updated_at": "2025-12-01T00:27:53Z", 61 | "pushed_at": "2025-11-30T02:42:58Z" 62 | }, 63 | { 64 | "name": "RemixIcon", 65 | "description": "Open source neutral style icon system", 66 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/45508804?v=4", 67 | "html_url": "https://github.com/Remix-Design/RemixIcon", 68 | "stargazers_count": 7752, 69 | "created_at": "2018-12-16T07:48:28Z", 70 | "updated_at": "2025-11-30T20:06:58Z", 71 | "pushed_at": "2025-10-16T09:33:00Z" 72 | }, 73 | { 74 | "name": "heroicons", 75 | "description": "A set of free MIT-licensed high-quality SVG icons for UI development.", 76 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/67109815?v=4", 77 | "html_url": "https://github.com/tailwindlabs/heroicons", 78 | "stargazers_count": 23121, 79 | "created_at": "2020-02-24T14:16:00Z", 80 | "updated_at": "2025-11-30T18:45:36Z", 81 | "pushed_at": "2025-09-18T17:50:47Z" 82 | }, 83 | { 84 | "name": "tabler-icons", 85 | "description": "A set of over 5800 free MIT-licensed high-quality SVG icons for you to use in your web projects.", 86 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/35471246?v=4", 87 | "html_url": "https://github.com/tabler/tabler-icons", 88 | "stargazers_count": 19824, 89 | "created_at": "2020-02-27T15:10:04Z", 90 | "updated_at": "2025-11-30T21:45:02Z", 91 | "pushed_at": "2025-11-18T17:37:54Z" 92 | }, 93 | { 94 | "name": "homepage", 95 | "description": "The homepage of Phosphor Icons, a flexible icon family for everyone", 96 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/69737287?v=4", 97 | "html_url": "https://github.com/phosphor-icons/homepage", 98 | "stargazers_count": 5819, 99 | "created_at": "2020-07-14T21:45:56Z", 100 | "updated_at": "2025-11-30T21:57:17Z", 101 | "pushed_at": "2025-05-22T00:11:34Z" 102 | }, 103 | { 104 | "name": "devicon", 105 | "description": "Set of icons representing programming languages, designing & development tools", 106 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/66767815?v=4", 107 | "html_url": "https://github.com/devicons/devicon", 108 | "stargazers_count": 11245, 109 | "created_at": "2014-03-01T15:14:04Z", 110 | "updated_at": "2025-11-30T12:02:57Z", 111 | "pushed_at": "2025-11-26T16:18:25Z" 112 | }, 113 | { 114 | "name": "Font-Awesome", 115 | "description": "The iconic SVG, font, and CSS toolkit", 116 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/1505683?v=4", 117 | "html_url": "https://github.com/FortAwesome/Font-Awesome", 118 | "stargazers_count": 75838, 119 | "created_at": "2012-02-17T14:19:43Z", 120 | "updated_at": "2025-11-30T22:35:01Z", 121 | "pushed_at": "2025-11-14T21:39:55Z" 122 | }, 123 | { 124 | "name": "lucide", 125 | "description": "Beautiful & consistent icon toolkit made by the community. Open-source project and a fork of Feather Icons.", 126 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/66879934?v=4", 127 | "html_url": "https://github.com/lucide-icons/lucide", 128 | "stargazers_count": 19945, 129 | "created_at": "2020-06-08T15:36:21Z", 130 | "updated_at": "2025-11-30T21:58:48Z", 131 | "pushed_at": "2025-11-28T16:22:32Z" 132 | }, 133 | { 134 | "name": "feather", 135 | "description": "Simply beautiful open-source icons", 136 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/29268069?v=4", 137 | "html_url": "https://github.com/feathericons/feather", 138 | "stargazers_count": 25741, 139 | "created_at": "2014-05-28T19:49:55Z", 140 | "updated_at": "2025-11-30T10:58:06Z", 141 | "pushed_at": "2025-03-11T02:18:59Z" 142 | }, 143 | { 144 | "name": "iconoir", 145 | "description": "An open source icons library with 1600+ icons, supporting React, React Native, Flutter, Vue, Figma, and Framer.", 146 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/109069170?v=4", 147 | "html_url": "https://github.com/iconoir-icons/iconoir", 148 | "stargazers_count": 4277, 149 | "created_at": "2018-03-27T18:33:08Z", 150 | "updated_at": "2025-11-29T07:25:25Z", 151 | "pushed_at": "2025-10-20T22:55:33Z" 152 | }, 153 | { 154 | "name": "ionicons", 155 | "description": "Premium hand-crafted icons built by Ionic, for Ionic apps and web apps everywhere \ud83c\udf0e", 156 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/3171503?v=4", 157 | "html_url": "https://github.com/ionic-team/ionicons", 158 | "stargazers_count": 17936, 159 | "created_at": "2013-10-10T14:34:18Z", 160 | "updated_at": "2025-11-30T22:38:29Z", 161 | "pushed_at": "2025-07-30T15:27:42Z" 162 | } 163 | ], 164 | "meta": { 165 | "last_updated": "2025-12-01T00:28:46.357320Z" 166 | } 167 | } -------------------------------------------------------------------------------- /ui/src/components/icons.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import logo from "@/assets/logo.png"; 3 | import { IconSvgProps } from "@/types"; 4 | 5 | export const Logo: React.FC = () => ( 6 | SelectStar 7 | ); 8 | 9 | export const DiscordIcon: React.FC = ({ 10 | size = 24, 11 | width, 12 | height, 13 | ...props 14 | }) => { 15 | return ( 16 | 22 | 26 | 27 | ); 28 | }; 29 | 30 | export const TwitterIcon: React.FC = ({ 31 | size = 24, 32 | width, 33 | height, 34 | ...props 35 | }) => { 36 | return ( 37 | 43 | 47 | 48 | ); 49 | }; 50 | 51 | export const GithubIcon: React.FC = ({ 52 | size = 24, 53 | width, 54 | height, 55 | ...props 56 | }) => { 57 | return ( 58 | 64 | 70 | 71 | ); 72 | }; 73 | 74 | export const MoonFilledIcon = ({ 75 | size = 24, 76 | width, 77 | height, 78 | ...props 79 | }: IconSvgProps) => ( 80 | 94 | ); 95 | 96 | export const SunFilledIcon = ({ 97 | size = 24, 98 | width, 99 | height, 100 | ...props 101 | }: IconSvgProps) => ( 102 | 116 | ); 117 | 118 | export const HeartFilledIcon = ({ 119 | size = 24, 120 | width, 121 | height, 122 | ...props 123 | }: IconSvgProps) => ( 124 | 141 | ); 142 | 143 | export const SearchIcon = (props: IconSvgProps) => ( 144 | 169 | ); 170 | 171 | export const NextUILogo: React.FC = (props) => { 172 | const { width, height = 40 } = props; 173 | 174 | return ( 175 | 183 | 187 | 191 | 195 | 196 | ); 197 | }; 198 | -------------------------------------------------------------------------------- /data/db_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "chroma", 5 | "description": "Open-source search and retrieval database for AI applications.", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/105881770?v=4", 7 | "html_url": "https://github.com/chroma-core/chroma", 8 | "stargazers_count": 24657, 9 | "created_at": "2022-10-05T17:58:44Z", 10 | "updated_at": "2025-11-30T19:51:08Z", 11 | "pushed_at": "2025-11-30T16:52:17Z" 12 | }, 13 | { 14 | "name": "redis", 15 | "description": "For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine.", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/1529926?v=4", 17 | "html_url": "https://github.com/redis/redis", 18 | "stargazers_count": 71939, 19 | "created_at": "2009-03-21T22:32:25Z", 20 | "updated_at": "2025-11-30T21:01:21Z", 21 | "pushed_at": "2025-11-29T19:41:58Z" 22 | }, 23 | { 24 | "name": "server", 25 | "description": "MariaDB server is a community developed fork of MySQL server. Started by core members of the original MySQL team, MariaDB actively works with outside developers to deliver the most featureful, stable, and sanely licensed open SQL server in the industry.", 26 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/4739304?v=4", 27 | "html_url": "https://github.com/MariaDB/server", 28 | "stargazers_count": 6736, 29 | "created_at": "2014-05-15T10:58:50Z", 30 | "updated_at": "2025-11-30T19:00:26Z", 31 | "pushed_at": "2025-11-30T18:06:10Z" 32 | }, 33 | { 34 | "name": "rethinkdb", 35 | "description": "The open-source database for the realtime web.", 36 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/1229647?v=4", 37 | "html_url": "https://github.com/rethinkdb/rethinkdb", 38 | "stargazers_count": 26974, 39 | "created_at": "2012-10-30T05:37:47Z", 40 | "updated_at": "2025-11-30T00:14:36Z", 41 | "pushed_at": "2025-11-18T21:34:54Z" 42 | }, 43 | { 44 | "name": "neo4j", 45 | "description": "Graphs for Everyone", 46 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/201120?v=4", 47 | "html_url": "https://github.com/neo4j/neo4j", 48 | "stargazers_count": 15470, 49 | "created_at": "2012-11-12T08:46:15Z", 50 | "updated_at": "2025-11-30T23:14:07Z", 51 | "pushed_at": "2025-11-21T13:04:20Z" 52 | }, 53 | { 54 | "name": "neon", 55 | "description": "Neon: Serverless Postgres. We separated storage and compute to offer autoscaling, code-like database branching, and scale to zero.", 56 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/77690634?v=4", 57 | "html_url": "https://github.com/neondatabase/neon", 58 | "stargazers_count": 20310, 59 | "created_at": "2021-03-26T14:20:47Z", 60 | "updated_at": "2025-12-01T00:00:06Z", 61 | "pushed_at": "2025-10-03T22:07:58Z" 62 | }, 63 | { 64 | "name": "influxdb", 65 | "description": "Scalable datastore for metrics, events, and real-time analytics", 66 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/5713248?v=4", 67 | "html_url": "https://github.com/influxdata/influxdb", 68 | "stargazers_count": 30902, 69 | "created_at": "2013-09-26T14:31:10Z", 70 | "updated_at": "2025-11-30T17:52:26Z", 71 | "pushed_at": "2025-11-27T15:56:08Z" 72 | }, 73 | { 74 | "name": "postgres", 75 | "description": "Mirror of the official PostgreSQL GIT repository. Note that this is just a *mirror* - we don't work with pull requests on github. To contribute, please see https://wiki.postgresql.org/wiki/Submitting_a_Patch", 76 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/177543?v=4", 77 | "html_url": "https://github.com/postgres/postgres", 78 | "stargazers_count": 19203, 79 | "created_at": "2010-09-21T11:35:45Z", 80 | "updated_at": "2025-11-30T18:02:11Z", 81 | "pushed_at": "2025-11-29T23:55:59Z" 82 | }, 83 | { 84 | "name": "fauna-js", 85 | "description": "Javascript driver for Fauna v10 (current)", 86 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/1477000?v=4", 87 | "html_url": "https://github.com/fauna/fauna-js", 88 | "stargazers_count": 49, 89 | "created_at": "2022-10-06T20:59:32Z", 90 | "updated_at": "2025-11-26T12:26:23Z", 91 | "pushed_at": "2025-02-10T22:49:48Z" 92 | }, 93 | { 94 | "name": "sqlite", 95 | "description": "Official Git mirror of the SQLite source tree", 96 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/48680494?v=4", 97 | "html_url": "https://github.com/sqlite/sqlite", 98 | "stargazers_count": 8697, 99 | "created_at": "2019-03-18T12:21:01Z", 100 | "updated_at": "2025-11-30T23:18:16Z", 101 | "pushed_at": "2025-11-30T23:18:11Z" 102 | }, 103 | { 104 | "name": "qdrant", 105 | "description": "Qdrant - High-performance, massive-scale Vector Database and Vector Search Engine for the next generation of AI. Also available in the cloud https://cloud.qdrant.io/", 106 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/73504361?v=4", 107 | "html_url": "https://github.com/qdrant/qdrant", 108 | "stargazers_count": 27391, 109 | "created_at": "2020-05-30T21:37:01Z", 110 | "updated_at": "2025-11-30T22:03:40Z", 111 | "pushed_at": "2025-11-30T16:17:26Z" 112 | }, 113 | { 114 | "name": "arangodb", 115 | "description": "\ud83e\udd51 ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.", 116 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/5547849?v=4", 117 | "html_url": "https://github.com/arangodb/arangodb", 118 | "stargazers_count": 14018, 119 | "created_at": "2011-10-26T06:42:00Z", 120 | "updated_at": "2025-11-30T18:39:20Z", 121 | "pushed_at": "2025-11-30T23:49:43Z" 122 | }, 123 | { 124 | "name": "cassandra", 125 | "description": "Apache Cassandra\u00ae", 126 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/47359?v=4", 127 | "html_url": "https://github.com/apache/cassandra", 128 | "stargazers_count": 9501, 129 | "created_at": "2009-05-21T02:10:09Z", 130 | "updated_at": "2025-11-30T21:05:07Z", 131 | "pushed_at": "2025-11-30T21:05:03Z" 132 | }, 133 | { 134 | "name": "timescaledb", 135 | "description": "A time-series database for high-performance real-time analytics packaged as a Postgres extension", 136 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/8986001?v=4", 137 | "html_url": "https://github.com/timescale/timescaledb", 138 | "stargazers_count": 20915, 139 | "created_at": "2017-03-07T20:03:41Z", 140 | "updated_at": "2025-11-30T22:02:17Z", 141 | "pushed_at": "2025-11-28T08:45:25Z" 142 | }, 143 | { 144 | "name": "surrealdb", 145 | "description": "A scalable, distributed, collaborative, document-graph database, for the realtime web", 146 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/10982346?v=4", 147 | "html_url": "https://github.com/surrealdb/surrealdb", 148 | "stargazers_count": 30434, 149 | "created_at": "2021-12-09T15:03:29Z", 150 | "updated_at": "2025-11-30T23:51:00Z", 151 | "pushed_at": "2025-11-30T22:46:23Z" 152 | }, 153 | { 154 | "name": "mysql-server", 155 | "description": "MySQL Server, the world's most popular open source database, and MySQL Cluster, a real-time, open source transactional database.", 156 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/2452804?v=4", 157 | "html_url": "https://github.com/mysql/mysql-server", 158 | "stargazers_count": 11885, 159 | "created_at": "2014-09-26T09:31:03Z", 160 | "updated_at": "2025-11-30T13:36:38Z", 161 | "pushed_at": "2025-10-23T14:24:05Z" 162 | }, 163 | { 164 | "name": "libsql", 165 | "description": "libSQL is a fork of SQLite that is both Open Source, and Open Contributions.", 166 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/139391156?v=4", 167 | "html_url": "https://github.com/tursodatabase/libsql", 168 | "stargazers_count": 15861, 169 | "created_at": "2022-09-29T18:56:16Z", 170 | "updated_at": "2025-11-30T21:57:55Z", 171 | "pushed_at": "2025-11-23T18:02:09Z" 172 | }, 173 | { 174 | "name": "cockroach", 175 | "description": "CockroachDB \u2014 the cloud native, distributed SQL database designed for high availability, effortless scale, and control over data placement.", 176 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/6748139?v=4", 177 | "html_url": "https://github.com/cockroachdb/cockroach", 178 | "stargazers_count": 31530, 179 | "created_at": "2014-02-06T00:18:47Z", 180 | "updated_at": "2025-11-30T11:55:45Z", 181 | "pushed_at": "2025-11-30T20:47:24Z" 182 | }, 183 | { 184 | "name": "mongo", 185 | "description": "The MongoDB Database", 186 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/45120?v=4", 187 | "html_url": "https://github.com/mongodb/mongo", 188 | "stargazers_count": 27784, 189 | "created_at": "2009-01-15T16:15:18Z", 190 | "updated_at": "2025-11-30T16:18:36Z", 191 | "pushed_at": "2025-11-28T17:48:03Z" 192 | }, 193 | { 194 | "name": "dgraph", 195 | "description": "high-performance graph database for real-time use cases", 196 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/13958706?v=4", 197 | "html_url": "https://github.com/dgraph-io/dgraph", 198 | "stargazers_count": 21371, 199 | "created_at": "2015-08-25T07:15:56Z", 200 | "updated_at": "2025-11-30T21:12:03Z", 201 | "pushed_at": "2025-11-28T20:27:10Z" 202 | }, 203 | { 204 | "name": "couchdb", 205 | "description": "Seamless multi-primary syncing database with an intuitive HTTP/JSON API, designed for reliability", 206 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/47359?v=4", 207 | "html_url": "https://github.com/apache/couchdb", 208 | "stargazers_count": 6742, 209 | "created_at": "2009-05-21T02:03:38Z", 210 | "updated_at": "2025-11-30T22:56:59Z", 211 | "pushed_at": "2025-11-30T22:56:55Z" 212 | } 213 | ], 214 | "meta": { 215 | "last_updated": "2025-12-01T00:25:43.020243Z" 216 | } 217 | } -------------------------------------------------------------------------------- /data/others_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "react-email", 5 | "description": "\ud83d\udc8c Build and send emails using React", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/109384852?v=4", 7 | "html_url": "https://github.com/resend/react-email", 8 | "stargazers_count": 17422, 9 | "created_at": "2022-09-19T19:24:54Z", 10 | "updated_at": "2025-12-01T00:06:14Z", 11 | "pushed_at": "2025-11-27T10:59:33Z" 12 | }, 13 | { 14 | "name": "AppFlowy", 15 | "description": "Bring projects, wikis, and teams together with AI. AppFlowy is the AI collaborative workspace where you achieve more without losing control of your data. The leading open source Notion alternative.", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/86002201?v=4", 17 | "html_url": "https://github.com/AppFlowy-IO/AppFlowy", 18 | "stargazers_count": 66744, 19 | "created_at": "2021-06-16T12:56:48Z", 20 | "updated_at": "2025-11-30T21:50:16Z", 21 | "pushed_at": "2025-11-16T13:57:58Z" 22 | }, 23 | { 24 | "name": "unleash", 25 | "description": "Open-source feature management platform", 26 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/23053233?v=4", 27 | "html_url": "https://github.com/Unleash/unleash", 28 | "stargazers_count": 12919, 29 | "created_at": "2014-09-29T12:50:46Z", 30 | "updated_at": "2025-11-30T16:35:39Z", 31 | "pushed_at": "2025-11-28T14:53:19Z" 32 | }, 33 | { 34 | "name": "pocketbase", 35 | "description": "Open Source realtime backend in 1 file", 36 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/101000011?v=4", 37 | "html_url": "https://github.com/pocketbase/pocketbase", 38 | "stargazers_count": 53716, 39 | "created_at": "2022-07-05T06:06:21Z", 40 | "updated_at": "2025-11-30T23:49:07Z", 41 | "pushed_at": "2025-11-22T09:14:20Z" 42 | }, 43 | { 44 | "name": "plane", 45 | "description": "\ud83d\udd25 \ud83d\udd25 \ud83d\udd25 Open Source JIRA, Linear, Monday, and Asana Alternative. Plane helps you track your issues, epics, and cycles the easiest way on the planet.", 46 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/115727700?v=4", 47 | "html_url": "https://github.com/makeplane/plane", 48 | "stargazers_count": 40205, 49 | "created_at": "2022-11-19T12:55:01Z", 50 | "updated_at": "2025-11-30T22:07:45Z", 51 | "pushed_at": "2025-11-30T18:15:16Z" 52 | }, 53 | { 54 | "name": "flagsmith", 55 | "description": "Flagsmith is an open source feature flagging and remote config service. Self-host or use our hosted version at https://app.flagsmith.com.", 56 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/58150233?v=4", 57 | "html_url": "https://github.com/Flagsmith/flagsmith", 58 | "stargazers_count": 6073, 59 | "created_at": "2018-06-05T10:49:57Z", 60 | "updated_at": "2025-11-29T21:52:38Z", 61 | "pushed_at": "2025-11-28T14:13:39Z" 62 | }, 63 | { 64 | "name": "nocodb", 65 | "description": "\ud83d\udd25 \ud83d\udd25 \ud83d\udd25 Open Source Airtable Alternative", 66 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/50206778?v=4", 67 | "html_url": "https://github.com/nocodb/nocodb", 68 | "stargazers_count": 58929, 69 | "created_at": "2017-10-29T18:51:48Z", 70 | "updated_at": "2025-12-01T00:09:57Z", 71 | "pushed_at": "2025-11-30T07:10:28Z" 72 | }, 73 | { 74 | "name": "cal.com", 75 | "description": "Scheduling infrastructure for absolutely everyone.", 76 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/79145102?v=4", 77 | "html_url": "https://github.com/calcom/cal.com", 78 | "stargazers_count": 38985, 79 | "created_at": "2021-03-22T13:47:42Z", 80 | "updated_at": "2025-11-30T21:08:52Z", 81 | "pushed_at": "2025-11-30T21:38:44Z" 82 | }, 83 | { 84 | "name": "pipedream", 85 | "description": "Connect APIs, remarkably fast. Free for developers.", 86 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/43791938?v=4", 87 | "html_url": "https://github.com/PipedreamHQ/pipedream", 88 | "stargazers_count": 10847, 89 | "created_at": "2020-01-22T00:28:31Z", 90 | "updated_at": "2025-11-30T23:27:18Z", 91 | "pushed_at": "2025-11-29T21:33:03Z" 92 | }, 93 | { 94 | "name": "excalidraw", 95 | "description": "Virtual whiteboard for sketching hand-drawn like diagrams", 96 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/59452120?v=4", 97 | "html_url": "https://github.com/excalidraw/excalidraw", 98 | "stargazers_count": 111536, 99 | "created_at": "2020-01-02T01:04:43Z", 100 | "updated_at": "2025-11-30T23:54:39Z", 101 | "pushed_at": "2025-11-29T12:16:09Z" 102 | }, 103 | { 104 | "name": "convex-backend", 105 | "description": "The open-source reactive database for app developers", 106 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/81530787?v=4", 107 | "html_url": "https://github.com/get-convex/convex-backend", 108 | "stargazers_count": 8355, 109 | "created_at": "2024-03-08T07:23:15Z", 110 | "updated_at": "2025-12-01T00:00:17Z", 111 | "pushed_at": "2025-11-30T16:55:14Z" 112 | }, 113 | { 114 | "name": "erpnext", 115 | "description": "Free and Open Source Enterprise Resource Planning (ERP)", 116 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/836974?v=4", 117 | "html_url": "https://github.com/frappe/erpnext", 118 | "stargazers_count": 30325, 119 | "created_at": "2011-06-08T08:20:56Z", 120 | "updated_at": "2025-11-30T23:42:13Z", 121 | "pushed_at": "2025-12-01T00:23:58Z" 122 | }, 123 | { 124 | "name": "drizzle-orm", 125 | "description": "ORM", 126 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/108468352?v=4", 127 | "html_url": "https://github.com/drizzle-team/drizzle-orm", 128 | "stargazers_count": 31501, 129 | "created_at": "2021-06-24T09:03:05Z", 130 | "updated_at": "2025-11-30T23:25:43Z", 131 | "pushed_at": "2025-11-30T21:56:03Z" 132 | }, 133 | { 134 | "name": "coolify", 135 | "description": "An open-source, self-hostable PaaS alternative to Vercel, Heroku & Netlify that lets you easily deploy static sites, databases, full-stack applications and 280+ one-click services on your own servers.", 136 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/60715044?v=4", 137 | "html_url": "https://github.com/coollabsio/coolify", 138 | "stargazers_count": 47889, 139 | "created_at": "2021-01-25T20:54:01Z", 140 | "updated_at": "2025-11-30T22:38:13Z", 141 | "pushed_at": "2025-11-30T16:03:45Z" 142 | }, 143 | { 144 | "name": "mattermost", 145 | "description": "Mattermost is an open source platform for secure collaboration across the entire software development lifecycle..", 146 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/9828093?v=4", 147 | "html_url": "https://github.com/mattermost/mattermost", 148 | "stargazers_count": 34508, 149 | "created_at": "2015-06-15T06:50:02Z", 150 | "updated_at": "2025-12-01T00:13:11Z", 151 | "pushed_at": "2025-12-01T00:03:30Z" 152 | }, 153 | { 154 | "name": "pattern-craft", 155 | "description": "Professional-grade background patterns and gradients for your websites and apps. Easily copy and paste into your next project. Crafted with modern CSS and Tailwind for seamless integration.", 156 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/142393952?v=4", 157 | "html_url": "https://github.com/megh-bari/pattern-craft", 158 | "stargazers_count": 2608, 159 | "created_at": "2025-06-06T06:35:59Z", 160 | "updated_at": "2025-11-30T17:18:15Z", 161 | "pushed_at": "2025-11-05T17:12:25Z" 162 | }, 163 | { 164 | "name": "budibase", 165 | "description": "Create business apps and automate workflows in minutes. Supports PostgreSQL, MySQL, MariaDB, MSSQL, MongoDB, Rest API, Docker, K8s, and more \ud83d\ude80 No code / Low code platform..", 166 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/45009727?v=4", 167 | "html_url": "https://github.com/Budibase/budibase", 168 | "stargazers_count": 27383, 169 | "created_at": "2019-06-07T11:03:41Z", 170 | "updated_at": "2025-11-30T20:17:55Z", 171 | "pushed_at": "2025-11-29T17:42:41Z" 172 | }, 173 | { 174 | "name": "medusa", 175 | "description": "The world's most flexible commerce platform.", 176 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/62591822?v=4", 177 | "html_url": "https://github.com/medusajs/medusa", 178 | "stargazers_count": 31314, 179 | "created_at": "2020-01-18T13:39:04Z", 180 | "updated_at": "2025-11-30T20:43:49Z", 181 | "pushed_at": "2025-11-30T19:04:03Z" 182 | }, 183 | { 184 | "name": "supabase", 185 | "description": "The Postgres development platform. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications.", 186 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/54469796?v=4", 187 | "html_url": "https://github.com/supabase/supabase", 188 | "stargazers_count": 93798, 189 | "created_at": "2019-10-12T05:56:49Z", 190 | "updated_at": "2025-11-30T23:31:09Z", 191 | "pushed_at": "2025-12-01T00:23:49Z" 192 | }, 193 | { 194 | "name": "paperless-ngx", 195 | "description": "A community-supported supercharged document management system: scan, index and archive all your documents", 196 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/99562962?v=4", 197 | "html_url": "https://github.com/paperless-ngx/paperless-ngx", 198 | "stargazers_count": 34568, 199 | "created_at": "2022-02-12T21:56:52Z", 200 | "updated_at": "2025-12-01T00:23:02Z", 201 | "pushed_at": "2025-11-30T15:53:55Z" 202 | }, 203 | { 204 | "name": "tldraw", 205 | "description": "very good whiteboard SDK / infinite canvas SDK", 206 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/86724562?v=4", 207 | "html_url": "https://github.com/tldraw/tldraw", 208 | "stargazers_count": 43940, 209 | "created_at": "2021-05-09T11:48:37Z", 210 | "updated_at": "2025-11-30T23:13:46Z", 211 | "pushed_at": "2025-11-30T22:48:59Z" 212 | }, 213 | { 214 | "name": "appwrite", 215 | "description": "The developers' cloud", 216 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/25003669?v=4", 217 | "html_url": "https://github.com/appwrite/appwrite", 218 | "stargazers_count": 53744, 219 | "created_at": "2019-04-08T16:36:25Z", 220 | "updated_at": "2025-11-30T23:47:03Z", 221 | "pushed_at": "2025-11-30T12:27:31Z" 222 | }, 223 | { 224 | "name": "instant", 225 | "description": "Instant is a modern Firebase. We make you productive by giving your frontend a real-time database.", 226 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/110921262?v=4", 227 | "html_url": "https://github.com/instantdb/instant", 228 | "stargazers_count": 9473, 229 | "created_at": "2024-08-19T21:53:42Z", 230 | "updated_at": "2025-11-30T22:55:03Z", 231 | "pushed_at": "2025-11-30T23:57:11Z" 232 | } 233 | ], 234 | "meta": { 235 | "last_updated": "2025-12-01T00:29:55.461716Z" 236 | } 237 | } -------------------------------------------------------------------------------- /data/backend_framework_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "trpc", 5 | "description": "\ud83e\uddd9\u200d\u2640\ufe0f Move Fast and Break Nothing. End-to-end typesafe APIs made easy. ", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/78011399?v=4", 7 | "html_url": "https://github.com/trpc/trpc", 8 | "stargazers_count": 39003, 9 | "created_at": "2020-07-18T01:17:11Z", 10 | "updated_at": "2025-11-30T15:20:15Z", 11 | "pushed_at": "2025-11-29T09:07:24Z" 12 | }, 13 | { 14 | "name": "directus", 15 | "description": "The flexible backend for all your projects \ud83d\udc30 Turn your DB into a headless CMS, admin panels, or apps with a custom UI, instant APIs, auth & more.", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/15967950?v=4", 17 | "html_url": "https://github.com/directus/directus", 18 | "stargazers_count": 33590, 19 | "created_at": "2012-12-12T01:35:36Z", 20 | "updated_at": "2025-11-30T22:56:17Z", 21 | "pushed_at": "2025-11-29T20:24:04Z" 22 | }, 23 | { 24 | "name": "spring-boot", 25 | "description": "Spring Boot helps you to create Spring-powered, production-grade applications and services with absolute minimum fuss.", 26 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/317776?v=4", 27 | "html_url": "https://github.com/spring-projects/spring-boot", 28 | "stargazers_count": 79197, 29 | "created_at": "2012-10-19T15:02:57Z", 30 | "updated_at": "2025-11-30T23:21:38Z", 31 | "pushed_at": "2025-11-28T15:06:45Z" 32 | }, 33 | { 34 | "name": "core", 35 | "description": "AdonisJS is a TypeScript-first web framework for building web apps and API servers. It comes with support for testing, modern tooling, an ecosystem of official packages, and more.", 36 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/13810373?v=4", 37 | "html_url": "https://github.com/adonisjs/core", 38 | "stargazers_count": 18444, 39 | "created_at": "2015-08-15T17:03:54Z", 40 | "updated_at": "2025-11-30T21:58:37Z", 41 | "pushed_at": "2025-11-19T07:56:53Z" 42 | }, 43 | { 44 | "name": "nitro", 45 | "description": "Next Generation Server Toolkit. Create web servers with everything you need and deploy them wherever you prefer.", 46 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/183071544?v=4", 47 | "html_url": "https://github.com/nitrojs/nitro", 48 | "stargazers_count": 9908, 49 | "created_at": "2022-01-26T12:37:12Z", 50 | "updated_at": "2025-11-30T16:19:44Z", 51 | "pushed_at": "2025-11-27T12:05:25Z" 52 | }, 53 | { 54 | "name": "flask", 55 | "description": "The Python micro framework for building web applications.", 56 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/16748505?v=4", 57 | "html_url": "https://github.com/pallets/flask", 58 | "stargazers_count": 70860, 59 | "created_at": "2010-04-06T11:11:59Z", 60 | "updated_at": "2025-11-30T18:42:30Z", 61 | "pushed_at": "2025-11-28T19:06:04Z" 62 | }, 63 | { 64 | "name": "hono", 65 | "description": "Web framework built on Web Standards", 66 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/98495527?v=4", 67 | "html_url": "https://github.com/honojs/hono", 68 | "stargazers_count": 27427, 69 | "created_at": "2021-12-14T20:05:30Z", 70 | "updated_at": "2025-11-30T21:44:08Z", 71 | "pushed_at": "2025-11-27T10:25:31Z" 72 | }, 73 | { 74 | "name": "echo", 75 | "description": "High performance, minimalist Go web framework", 76 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/2624634?v=4", 77 | "html_url": "https://github.com/labstack/echo", 78 | "stargazers_count": 31865, 79 | "created_at": "2015-03-01T17:43:01Z", 80 | "updated_at": "2025-11-30T20:09:51Z", 81 | "pushed_at": "2025-11-22T14:33:22Z" 82 | }, 83 | { 84 | "name": "sails", 85 | "description": "Realtime MVC Framework for Node.js", 86 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/1445252?v=4", 87 | "html_url": "https://github.com/balderdashy/sails", 88 | "stargazers_count": 22853, 89 | "created_at": "2012-03-18T19:46:15Z", 90 | "updated_at": "2025-12-01T00:08:33Z", 91 | "pushed_at": "2025-08-06T19:26:26Z" 92 | }, 93 | { 94 | "name": "strapi", 95 | "description": "\ud83d\ude80 Strapi is the leading open-source headless CMS. It\u2019s 100% JavaScript/TypeScript, fully customizable, and developer-first.", 96 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/19872173?v=4", 97 | "html_url": "https://github.com/strapi/strapi", 98 | "stargazers_count": 70535, 99 | "created_at": "2015-09-30T15:34:48Z", 100 | "updated_at": "2025-12-01T00:04:31Z", 101 | "pushed_at": "2025-11-27T09:08:52Z" 102 | }, 103 | { 104 | "name": "fastify", 105 | "description": "Fast and low overhead web framework, for Node.js", 106 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/24939410?v=4", 107 | "html_url": "https://github.com/fastify/fastify", 108 | "stargazers_count": 35097, 109 | "created_at": "2016-09-28T19:10:14Z", 110 | "updated_at": "2025-11-30T23:50:20Z", 111 | "pushed_at": "2025-11-30T09:41:39Z" 112 | }, 113 | { 114 | "name": "fastapi", 115 | "description": "FastAPI framework, high performance, easy to learn, fast to code, ready for production", 116 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/156354296?v=4", 117 | "html_url": "https://github.com/fastapi/fastapi", 118 | "stargazers_count": 92501, 119 | "created_at": "2018-12-08T08:21:47Z", 120 | "updated_at": "2025-11-30T23:58:30Z", 121 | "pushed_at": "2025-11-30T14:48:25Z" 122 | }, 123 | { 124 | "name": "express", 125 | "description": "Fast, unopinionated, minimalist web framework for node.", 126 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/5658226?v=4", 127 | "html_url": "https://github.com/expressjs/express", 128 | "stargazers_count": 68279, 129 | "created_at": "2009-06-26T18:56:01Z", 130 | "updated_at": "2025-11-30T20:53:02Z", 131 | "pushed_at": "2025-11-26T14:22:47Z" 132 | }, 133 | { 134 | "name": "koa", 135 | "description": "Expressive middleware for node.js using ES2017 async functions", 136 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/5055057?v=4", 137 | "html_url": "https://github.com/koajs/koa", 138 | "stargazers_count": 35691, 139 | "created_at": "2013-07-20T18:53:45Z", 140 | "updated_at": "2025-11-30T16:05:03Z", 141 | "pushed_at": "2025-11-21T15:02:36Z" 142 | }, 143 | { 144 | "name": "h3", 145 | "description": "\u26a1\ufe0f Minimal H(TTP) framework built for high performance and portability ", 146 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/208435796?v=4", 147 | "html_url": "https://github.com/h3js/h3", 148 | "stargazers_count": 5043, 149 | "created_at": "2020-11-17T14:15:44Z", 150 | "updated_at": "2025-12-01T00:11:12Z", 151 | "pushed_at": "2025-11-24T16:39:04Z" 152 | }, 153 | { 154 | "name": "micronaut-core", 155 | "description": "Micronaut Application Framework", 156 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/36880643?v=4", 157 | "html_url": "https://github.com/micronaut-projects/micronaut-core", 158 | "stargazers_count": 6356, 159 | "created_at": "2018-03-07T12:05:08Z", 160 | "updated_at": "2025-11-28T08:31:46Z", 161 | "pushed_at": "2025-11-30T22:52:13Z" 162 | }, 163 | { 164 | "name": "nest", 165 | "description": "A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications with TypeScript/JavaScript \ud83d\ude80", 166 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/28507035?v=4", 167 | "html_url": "https://github.com/nestjs/nest", 168 | "stargazers_count": 73684, 169 | "created_at": "2017-02-04T20:12:52Z", 170 | "updated_at": "2025-11-30T23:51:07Z", 171 | "pushed_at": "2025-12-01T00:03:23Z" 172 | }, 173 | { 174 | "name": "javalin", 175 | "description": "A simple and modern Java and Kotlin web framework", 176 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/28701086?v=4", 177 | "html_url": "https://github.com/javalin/javalin", 178 | "stargazers_count": 8102, 179 | "created_at": "2017-04-02T20:01:28Z", 180 | "updated_at": "2025-11-30T20:53:47Z", 181 | "pushed_at": "2025-11-30T21:00:03Z" 182 | }, 183 | { 184 | "name": "amplication", 185 | "description": "Amplication brings order to the chaos of large-scale software development by creating Golden Paths for developers - streamlined workflows that drive consistency, enable high-quality code practices, simplify onboarding, and accelerate standardized delivery across teams.", 186 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/65107786?v=4", 187 | "html_url": "https://github.com/amplication/amplication", 188 | "stargazers_count": 15975, 189 | "created_at": "2020-05-10T19:41:49Z", 190 | "updated_at": "2025-11-28T17:15:33Z", 191 | "pushed_at": "2025-11-26T22:34:16Z" 192 | }, 193 | { 194 | "name": "elysia", 195 | "description": "Ergonomic Framework for Humans", 196 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/119793569?v=4", 197 | "html_url": "https://github.com/elysiajs/elysia", 198 | "stargazers_count": 15397, 199 | "created_at": "2022-12-04T12:53:30Z", 200 | "updated_at": "2025-11-30T23:58:13Z", 201 | "pushed_at": "2025-11-29T13:53:43Z" 202 | }, 203 | { 204 | "name": "payload", 205 | "description": "Payload is the open-source, fullstack Next.js framework, giving you instant backend superpowers. Get a full TypeScript backend and admin panel instantly. Use Payload as a headless CMS or for building powerful applications.", 206 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/62968818?v=4", 207 | "html_url": "https://github.com/payloadcms/payload", 208 | "stargazers_count": 39108, 209 | "created_at": "2021-01-05T18:49:45Z", 210 | "updated_at": "2025-11-30T23:23:20Z", 211 | "pushed_at": "2025-11-28T16:56:00Z" 212 | }, 213 | { 214 | "name": "gin", 215 | "description": "Gin is a high-performance HTTP web framework written in Go. It provides a Martini-like API but with significantly better performance\u2014up to 40 times faster\u2014thanks to httprouter. Gin is designed for building REST APIs, web applications, and microservices.", 216 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/7894478?v=4", 217 | "html_url": "https://github.com/gin-gonic/gin", 218 | "stargazers_count": 87203, 219 | "created_at": "2014-06-16T23:57:25Z", 220 | "updated_at": "2025-11-30T23:44:28Z", 221 | "pushed_at": "2025-11-30T07:40:41Z" 222 | }, 223 | { 224 | "name": "hapi", 225 | "description": "The Simple, Secure Framework Developers Trust", 226 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/3774533?v=4", 227 | "html_url": "https://github.com/hapijs/hapi", 228 | "stargazers_count": 14735, 229 | "created_at": "2011-08-06T00:35:39Z", 230 | "updated_at": "2025-11-28T05:45:45Z", 231 | "pushed_at": "2025-11-06T09:40:46Z" 232 | } 233 | ], 234 | "meta": { 235 | "last_updated": "2025-12-01T00:15:34.201506Z" 236 | } 237 | } -------------------------------------------------------------------------------- /ui/src/components/repos-table.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | Table, 3 | TableHeader, 4 | TableColumn, 5 | TableBody, 6 | TableRow, 7 | TableCell, 8 | Input, 9 | User, 10 | Spinner, 11 | Autocomplete, 12 | AutocompleteItem, 13 | } from "@nextui-org/react"; 14 | import { useCallback, useMemo, useState } from "react"; 15 | import { useQuery } from "@tanstack/react-query"; 16 | import { reports, proReports, openSourceTabs, proTabs } from "@/pages"; 17 | import { Key as ReactKey } from "@react-types/shared"; 18 | 19 | export function formatDate(dateString: string | undefined): string { 20 | if (!dateString) { 21 | return ""; 22 | } 23 | 24 | const dateObject = new Date(dateString); 25 | 26 | const formatDate = new Intl.DateTimeFormat("en-GB", { 27 | dateStyle: "long", 28 | timeZone: "Australia/Sydney", 29 | }).format(dateObject); 30 | 31 | return formatDate; 32 | } 33 | 34 | function formatDaysAgo(dateString: string): string { 35 | const lastUpdated = new Date(dateString); 36 | const today = new Date(); 37 | 38 | lastUpdated.setHours(0, 0, 0, 0); 39 | today.setHours(0, 0, 0, 0); 40 | 41 | const timeDifference = Math.abs(today.getTime() - lastUpdated.getTime()); 42 | const daysDifference = Math.ceil(timeDifference / (1000 * 60 * 60 * 24)); 43 | 44 | if (daysDifference === 0) { 45 | return "Today"; 46 | } 47 | 48 | return `${daysDifference} day${daysDifference !== 1 ? "s" : ""} ago`; 49 | } 50 | 51 | type CustomSortDescriptor = { 52 | column: ReactKey; 53 | direction: "ascending" | "descending"; 54 | }; 55 | 56 | interface RepoData { 57 | name: string; 58 | description: string; 59 | owner_avatar_url: string; 60 | html_url: string; 61 | created_at: string; 62 | pushed_at: string; 63 | stargazers_count: number; 64 | updated_at: string; 65 | } 66 | 67 | interface RepoMeta { 68 | last_updated: string; 69 | } 70 | 71 | interface RepoResponse { 72 | data: RepoData[]; 73 | meta: RepoMeta; 74 | } 75 | 76 | interface ProData { 77 | name: string; 78 | description: string; 79 | url: string; 80 | } 81 | 82 | interface ProMeta { 83 | last_updated: string; 84 | } 85 | 86 | interface ProResponse { 87 | data: ProData[]; 88 | meta: ProMeta; 89 | } 90 | 91 | const columns = [ 92 | { name: "Name", uid: "name", sortable: true }, 93 | { name: "Description", uid: "description", sortable: false }, 94 | { name: "Stargazers count", uid: "stargazers_count", sortable: true }, 95 | { name: "Created at", uid: "created_at", sortable: true }, 96 | { name: "Pushed at", uid: "pushed_at", sortable: true }, 97 | { name: "Updated at", uid: "updated_at", sortable: true }, 98 | ]; 99 | 100 | const proColumns = [ 101 | { name: "Name", uid: "name", sortable: true }, 102 | { name: "Description", uid: "description", sortable: false }, 103 | { name: "URL", uid: "url", sortable: false }, 104 | ]; 105 | 106 | export default function ReposTable() { 107 | const [openSourceFilterValue, setOpenSourceFilterValue] = useState(""); 108 | const [proFilterValue, setProFilterValue] = useState(""); 109 | const [openSourceSortDescriptor, setOpenSourceSortDescriptor] = 110 | useState({ 111 | column: "stargazers_count", 112 | direction: "descending", 113 | }); 114 | const [proSortDescriptor, setProSortDescriptor] = 115 | useState({ 116 | column: "name", 117 | direction: "ascending", 118 | }); 119 | const [openSourceSelected, setOpenSourceSelected] = useState("ui_frameworks"); 120 | const [proSelected, setProSelected] = useState("ui_frameworks"); 121 | 122 | console.log("openSourceSelected", openSourceSelected); 123 | console.log("proSelected", proSelected); 124 | 125 | const { data, isLoading } = useQuery({ 126 | queryKey: ["repos", openSourceSelected], 127 | queryFn: async () => { 128 | const res = await fetch(reports[openSourceSelected]); 129 | return res.json(); 130 | }, 131 | staleTime: 10 * 60 * 1000, 132 | }); 133 | 134 | const { data: proData, isLoading: isProLoading } = useQuery({ 135 | queryKey: ["pro-repos", proSelected], 136 | queryFn: async () => { 137 | const res = await fetch(proReports[proSelected]); 138 | return res.json(); 139 | }, 140 | staleTime: 10 * 60 * 1000, 141 | }); 142 | 143 | const filteredItems = useMemo(() => { 144 | return ( 145 | data?.data.filter((repo) => 146 | repo.name.toLowerCase().includes(openSourceFilterValue.toLowerCase()) 147 | ) || [] 148 | ); 149 | }, [data, openSourceFilterValue]); 150 | 151 | const sortedItems = useMemo(() => { 152 | return [...filteredItems].sort((a, b) => { 153 | const first = a[openSourceSortDescriptor.column as keyof RepoData]; 154 | const second = b[openSourceSortDescriptor.column as keyof RepoData]; 155 | const cmp = 156 | (parseInt(first as string) || first) < 157 | (parseInt(second as string) || second) 158 | ? -1 159 | : 1; 160 | 161 | return openSourceSortDescriptor.direction === "descending" ? -cmp : cmp; 162 | }); 163 | }, [filteredItems, openSourceSortDescriptor]); 164 | 165 | const filteredProItems = useMemo(() => { 166 | return ( 167 | proData?.data.filter((repo) => 168 | repo.name.toLowerCase().includes(proFilterValue.toLowerCase()) 169 | ) || [] 170 | ); 171 | }, [proData, proFilterValue]); 172 | 173 | const sortedProItems = useMemo(() => { 174 | return [...filteredProItems].sort((a, b) => { 175 | const first = a[proSortDescriptor.column as keyof ProData]; 176 | const second = b[proSortDescriptor.column as keyof ProData]; 177 | const cmp = 178 | (parseInt(first as string) || first) < 179 | (parseInt(second as string) || second) 180 | ? -1 181 | : 1; 182 | 183 | return proSortDescriptor.direction === "descending" ? -cmp : cmp; 184 | }); 185 | }, [filteredProItems, proSortDescriptor]); 186 | 187 | const renderCell = useCallback((repo: RepoData, columnKey: ReactKey) => { 188 | const cellValue = repo[columnKey as keyof RepoData]; 189 | 190 | switch (columnKey) { 191 | case "name": 192 | return ( 193 | 197 | {repo.description} 198 | 199 | ); 200 | case "created_at": 201 | case "pushed_at": 202 | case "updated_at": 203 | return formatDate(cellValue as string); 204 | default: 205 | return cellValue; 206 | } 207 | }, []); 208 | 209 | const renderProCell = useCallback((repo: ProData, columnKey: ReactKey) => { 210 | const cellValue = repo[columnKey as keyof ProData]; 211 | 212 | switch (columnKey) { 213 | case "name": 214 | return ( 215 |
216 |
217 | {repo.name.charAt(0).toUpperCase()} 218 |
219 | {cellValue} 220 |
221 | ); 222 | case "url": 223 | return ( 224 | 230 | {cellValue} 231 | 232 | ); 233 | default: 234 | return cellValue; 235 | } 236 | }, []); 237 | 238 | const onOpenSourceSearchChange = useCallback((value: string) => { 239 | setOpenSourceFilterValue(value); 240 | }, []); 241 | 242 | const onProSearchChange = useCallback((value: string) => { 243 | setProFilterValue(value); 244 | }, []); 245 | 246 | const topContent = useMemo(() => { 247 | return ( 248 |
249 |
250 | setOpenSourceSelected(key as string)} 256 | > 257 | {(item) => ( 258 | {item.label} 259 | )} 260 | 261 | 269 |
270 |
271 | ); 272 | }, [openSourceFilterValue, onOpenSourceSearchChange, openSourceSelected]); 273 | 274 | const proTopContent = useMemo(() => { 275 | return ( 276 |
277 |
278 | setProSelected(key as string)} 284 | > 285 | {(item) => ( 286 | {item.label} 287 | )} 288 | 289 | 297 |
298 |
299 | ); 300 | }, [proFilterValue, onProSearchChange, proSelected]); 301 | 302 | const bottomContent = useMemo(() => { 303 | const lastUpdatedDate = data?.meta?.last_updated; 304 | return ( 305 |
306 |

307 | {!isLoading && 308 | lastUpdatedDate && 309 | `Last updated: ${formatDate(lastUpdatedDate)} (${formatDaysAgo( 310 | lastUpdatedDate 311 | )})`} 312 |

313 |
314 | ); 315 | }, [data?.meta?.last_updated, isLoading]); 316 | 317 | const proBottomContent = useMemo(() => { 318 | const lastUpdatedDate = proData?.meta?.last_updated; 319 | return ( 320 |
321 |

322 | {!isProLoading && 323 | lastUpdatedDate && 324 | `Last updated: ${formatDate(lastUpdatedDate)} (${formatDaysAgo( 325 | lastUpdatedDate 326 | )})`} 327 |

328 |
329 | ); 330 | }, [proData?.meta?.last_updated, isProLoading]); 331 | 332 | return ( 333 |
334 | {/* OpenSource Table */} 335 |
336 |

OpenSource

337 | 350 | setOpenSourceSortDescriptor({ 351 | column: descriptor.column?.toString() as ReactKey, 352 | direction: descriptor.direction as "ascending" | "descending", 353 | }) 354 | } 355 | onRowAction={(key) => window.open(key as string, "_blank")} 356 | > 357 | 358 | {(column) => ( 359 | 360 | {column.name} 361 | 362 | )} 363 | 364 | } 368 | items={sortedItems} 369 | > 370 | {(item) => ( 371 | 372 | {(columnKey) => ( 373 | {renderCell(item, columnKey)} 374 | )} 375 | 376 | )} 377 | 378 |
379 |
380 | 381 | {/* Pro Table */} 382 |
383 |

Pro

384 | 397 | setProSortDescriptor({ 398 | column: descriptor.column?.toString() as ReactKey, 399 | direction: descriptor.direction as "ascending" | "descending", 400 | }) 401 | } 402 | onRowAction={(key) => window.open(key as string, "_blank")} 403 | > 404 | 405 | {(column) => ( 406 | 407 | {column.name} 408 | 409 | )} 410 | 411 | } 415 | items={sortedProItems} 416 | > 417 | {(item) => ( 418 | 419 | {(columnKey) => ( 420 | {renderProCell(item, columnKey)} 421 | )} 422 | 423 | )} 424 | 425 |
426 |
427 |
428 | ); 429 | } 430 | -------------------------------------------------------------------------------- /data/comp_report.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "reactstrap", 5 | "description": "Simple React Bootstrap 5 components", 6 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/17580417?v=4", 7 | "html_url": "https://github.com/reactstrap/reactstrap", 8 | "stargazers_count": 10549, 9 | "created_at": "2016-02-19T08:01:36Z", 10 | "updated_at": "2025-11-27T04:41:21Z", 11 | "pushed_at": "2024-09-26T09:40:49Z" 12 | }, 13 | { 14 | "name": "cult-ui", 15 | "description": "Components crafted for Design Engineers. Styled using Tailwind CSS, fully compatible with Shadcn, and easy to integrate\u2014just copy and paste. MIT \ud83e\udd0c", 16 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/133936441?v=4", 17 | "html_url": "https://github.com/nolly-studio/cult-ui", 18 | "stargazers_count": 2961, 19 | "created_at": "2024-05-28T04:57:48Z", 20 | "updated_at": "2025-11-30T22:47:45Z", 21 | "pushed_at": "2025-11-06T19:15:34Z" 22 | }, 23 | { 24 | "name": "kibo", 25 | "description": "A custom registry of composable, accessible and extensible components designed for use with shadcn/ui. Free and open source, forever.", 26 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/180819838?v=4", 27 | "html_url": "https://github.com/shadcnblocks/kibo", 28 | "stargazers_count": 3461, 29 | "created_at": "2024-08-25T03:39:07Z", 30 | "updated_at": "2025-11-30T23:47:14Z", 31 | "pushed_at": "2025-11-18T01:10:40Z" 32 | }, 33 | { 34 | "name": "xyflow", 35 | "description": "React Flow |\u00a0Svelte Flow - Powerful open source libraries for building node-based UIs with React (https://reactflow.dev) or Svelte (https://svelteflow.dev). Ready out-of-the-box and infinitely customizable.", 36 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/7106853?v=4", 37 | "html_url": "https://github.com/xyflow/xyflow", 38 | "stargazers_count": 33977, 39 | "created_at": "2019-07-15T14:47:30Z", 40 | "updated_at": "2025-11-30T16:14:34Z", 41 | "pushed_at": "2025-11-25T12:04:48Z" 42 | }, 43 | { 44 | "name": "blueprint", 45 | "description": "A React-based UI toolkit for the web", 46 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/303157?v=4", 47 | "html_url": "https://github.com/palantir/blueprint", 48 | "stargazers_count": 21393, 49 | "created_at": "2016-10-25T21:17:50Z", 50 | "updated_at": "2025-11-29T05:02:09Z", 51 | "pushed_at": "2025-11-29T18:26:39Z" 52 | }, 53 | { 54 | "name": "smoothui", 55 | "description": "SmoothUI is a collection of beautifully designed components with smooth animations built with React, Tailwind CSS, and Motion", 56 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/13372238?v=4", 57 | "html_url": "https://github.com/educlopez/smoothui", 58 | "stargazers_count": 435, 59 | "created_at": "2024-07-03T15:32:46Z", 60 | "updated_at": "2025-11-29T23:38:02Z", 61 | "pushed_at": "2025-11-28T17:43:33Z" 62 | }, 63 | { 64 | "name": "park-ui", 65 | "description": "Beautifully designed components built with Ark UI and Panda CSS that work with a variety of JS frameworks.", 66 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/54212428?v=4", 67 | "html_url": "https://github.com/chakra-ui/park-ui", 68 | "stargazers_count": 2206, 69 | "created_at": "2023-08-02T13:10:00Z", 70 | "updated_at": "2025-11-30T13:43:41Z", 71 | "pushed_at": "2025-11-28T10:21:31Z" 72 | }, 73 | { 74 | "name": "Semantic-UI-React", 75 | "description": "The official Semantic-UI-React integration", 76 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/5796209?v=4", 77 | "html_url": "https://github.com/Semantic-Org/Semantic-UI-React", 78 | "stargazers_count": 13258, 79 | "created_at": "2015-06-19T16:47:19Z", 80 | "updated_at": "2025-11-25T10:34:45Z", 81 | "pushed_at": "2024-11-22T09:09:59Z" 82 | }, 83 | { 84 | "name": "primitives", 85 | "description": "Radix Primitives is an open-source UI component library for building high-quality, accessible design systems and web apps. Maintained by @workos.", 86 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/75042455?v=4", 87 | "html_url": "https://github.com/radix-ui/primitives", 88 | "stargazers_count": 18233, 89 | "created_at": "2020-06-19T13:23:22Z", 90 | "updated_at": "2025-11-30T23:48:25Z", 91 | "pushed_at": "2025-11-04T23:27:27Z" 92 | }, 93 | { 94 | "name": "heroui", 95 | "description": "\ud83d\ude80 Beautiful, fast and modern React UI library. (Previously NextUI)", 96 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/86160567?v=4", 97 | "html_url": "https://github.com/heroui-inc/heroui", 98 | "stargazers_count": 27488, 99 | "created_at": "2021-04-22T13:06:23Z", 100 | "updated_at": "2025-11-30T23:49:01Z", 101 | "pushed_at": "2025-11-30T16:17:23Z" 102 | }, 103 | { 104 | "name": "fluentui", 105 | "description": "Fluent UI web represents a collection of utilities, React components, and web components for building web applications.", 106 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/6154722?v=4", 107 | "html_url": "https://github.com/microsoft/fluentui", 108 | "stargazers_count": 19708, 109 | "created_at": "2016-06-06T15:03:44Z", 110 | "updated_at": "2025-11-30T22:45:09Z", 111 | "pushed_at": "2025-11-28T13:46:43Z" 112 | }, 113 | { 114 | "name": "reui", 115 | "description": "Open-source collection of UI components and animated effects built with React, Typescript, Tailwind CSS, and Motion. Pairs beautifully with shadcn/ui.", 116 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/34410960?v=4", 117 | "html_url": "https://github.com/keenthemes/reui", 118 | "stargazers_count": 2124, 119 | "created_at": "2025-02-27T13:44:53Z", 120 | "updated_at": "2025-11-30T19:14:37Z", 121 | "pushed_at": "2025-11-29T11:07:55Z" 122 | }, 123 | { 124 | "name": "themes", 125 | "description": "Radix Themes is an open-source component library optimized for fast development, easy maintenance, and accessibility. Maintained by @workos.", 126 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/75042455?v=4", 127 | "html_url": "https://github.com/radix-ui/themes", 128 | "stargazers_count": 7812, 129 | "created_at": "2023-06-15T12:21:08Z", 130 | "updated_at": "2025-11-30T18:10:31Z", 131 | "pushed_at": "2025-09-04T22:36:00Z" 132 | }, 133 | { 134 | "name": "OnsenUI", 135 | "description": "Mobile app development framework and SDK using HTML5 and JavaScript. Create beautiful and performant cross-platform mobile apps. Based on Web Components, and provides bindings for Angular 1, 2, React and Vue.js.", 136 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/5972822?v=4", 137 | "html_url": "https://github.com/OnsenUI/OnsenUI", 138 | "stargazers_count": 8879, 139 | "created_at": "2013-09-11T11:52:41Z", 140 | "updated_at": "2025-11-18T14:07:25Z", 141 | "pushed_at": "2024-07-17T05:35:17Z" 142 | }, 143 | { 144 | "name": "grommet", 145 | "description": "a react-based framework that provides accessibility, modularity, responsiveness, and theming in a tidy package", 146 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/14203820?v=4", 147 | "html_url": "https://github.com/grommet/grommet", 148 | "stargazers_count": 8364, 149 | "created_at": "2015-03-24T08:54:10Z", 150 | "updated_at": "2025-11-28T17:21:35Z", 151 | "pushed_at": "2025-11-19T16:30:42Z" 152 | }, 153 | { 154 | "name": "rsuite", 155 | "description": "\ud83e\uddf1 A suite of React components . ", 156 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/19635045?v=4", 157 | "html_url": "https://github.com/rsuite/rsuite", 158 | "stargazers_count": 8659, 159 | "created_at": "2016-06-06T02:27:46Z", 160 | "updated_at": "2025-12-01T00:04:21Z", 161 | "pushed_at": "2025-11-26T22:10:17Z" 162 | }, 163 | { 164 | "name": "headlessui", 165 | "description": "Completely unstyled, fully accessible UI components, designed to integrate beautifully with Tailwind CSS.", 166 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/67109815?v=4", 167 | "html_url": "https://github.com/tailwindlabs/headlessui", 168 | "stargazers_count": 28178, 169 | "created_at": "2020-09-16T09:53:09Z", 170 | "updated_at": "2025-11-30T23:52:26Z", 171 | "pushed_at": "2025-11-27T21:45:16Z" 172 | }, 173 | { 174 | "name": "vuetify", 175 | "description": "\ud83d\udc09 Vue Component Framework", 176 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/22138497?v=4", 177 | "html_url": "https://github.com/vuetifyjs/vuetify", 178 | "stargazers_count": 40822, 179 | "created_at": "2016-09-12T00:39:35Z", 180 | "updated_at": "2025-11-30T16:14:26Z", 181 | "pushed_at": "2025-11-28T10:57:48Z" 182 | }, 183 | { 184 | "name": "coss", 185 | "description": "coss.com is the new holding company of cal.com, the pioneers of open source scheduling infrastructure and cal.com continues to be the 'google search' of our alphabet.", 186 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/199277276?v=4", 187 | "html_url": "https://github.com/cosscom/coss", 188 | "stargazers_count": 8952, 189 | "created_at": "2024-10-15T10:05:35Z", 190 | "updated_at": "2025-11-30T17:53:42Z", 191 | "pushed_at": "2025-11-28T09:25:10Z" 192 | }, 193 | { 194 | "name": "Semantic-UI", 195 | "description": "Semantic is a UI component framework based around useful principles from natural language.", 196 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/5796209?v=4", 197 | "html_url": "https://github.com/Semantic-Org/Semantic-UI", 198 | "stargazers_count": 51184, 199 | "created_at": "2013-04-08T23:32:04Z", 200 | "updated_at": "2025-11-30T14:52:38Z", 201 | "pushed_at": "2024-11-27T21:01:48Z" 202 | }, 203 | { 204 | "name": "CopilotKit", 205 | "description": "React UI + elegant infrastructure for AI Copilots, AI chatbots, and in-app AI agents. The Agentic last-mile \ud83e\ude81", 206 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/131273140?v=4", 207 | "html_url": "https://github.com/CopilotKit/CopilotKit", 208 | "stargazers_count": 25164, 209 | "created_at": "2023-06-19T04:08:31Z", 210 | "updated_at": "2025-11-30T17:22:48Z", 211 | "pushed_at": "2025-11-29T08:00:33Z" 212 | }, 213 | { 214 | "name": "element", 215 | "description": "A Vue.js 2.0 UI Toolkit for Web", 216 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/12810740?v=4", 217 | "html_url": "https://github.com/ElemeFE/element", 218 | "stargazers_count": 54236, 219 | "created_at": "2016-09-03T06:19:26Z", 220 | "updated_at": "2025-11-30T00:05:04Z", 221 | "pushed_at": "2024-08-20T07:40:13Z" 222 | }, 223 | { 224 | "name": "react-bootstrap", 225 | "description": "Bootstrap components built with React", 226 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/6853419?v=4", 227 | "html_url": "https://github.com/react-bootstrap/react-bootstrap", 228 | "stargazers_count": 22631, 229 | "created_at": "2013-12-27T19:06:07Z", 230 | "updated_at": "2025-11-29T21:05:57Z", 231 | "pushed_at": "2025-11-30T00:05:32Z" 232 | }, 233 | { 234 | "name": "ag-grid", 235 | "description": "The best JavaScript Data Table for building Enterprise Applications. Supports React / Angular / Vue / Plain JavaScript.", 236 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/30720768?v=4", 237 | "html_url": "https://github.com/ag-grid/ag-grid", 238 | "stargazers_count": 14770, 239 | "created_at": "2014-12-23T16:20:14Z", 240 | "updated_at": "2025-11-30T23:21:27Z", 241 | "pushed_at": "2025-11-30T22:52:13Z" 242 | }, 243 | { 244 | "name": "chakra-ui", 245 | "description": "Chakra UI is a component system for building SaaS products with speed \u26a1\ufe0f", 246 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/54212428?v=4", 247 | "html_url": "https://github.com/chakra-ui/chakra-ui", 248 | "stargazers_count": 39995, 249 | "created_at": "2019-08-17T14:27:54Z", 250 | "updated_at": "2025-11-30T22:48:33Z", 251 | "pushed_at": "2025-11-30T18:18:11Z" 252 | }, 253 | { 254 | "name": "ark", 255 | "description": "Build scalable design systems with React, Vue, Solid, and Svelte.", 256 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/54212428?v=4", 257 | "html_url": "https://github.com/chakra-ui/ark", 258 | "stargazers_count": 4844, 259 | "created_at": "2022-10-26T08:49:36Z", 260 | "updated_at": "2025-11-30T22:05:54Z", 261 | "pushed_at": "2025-11-30T17:56:15Z" 262 | }, 263 | { 264 | "name": "magicui", 265 | "description": "UI Library for Design Engineers. Animated components and effects you can copy and paste into your apps. Free. Open Source.", 266 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/166878038?v=4", 267 | "html_url": "https://github.com/magicuidesign/magicui", 268 | "stargazers_count": 19578, 269 | "created_at": "2023-06-26T19:17:10Z", 270 | "updated_at": "2025-11-30T17:11:05Z", 271 | "pushed_at": "2025-11-30T08:42:42Z" 272 | }, 273 | { 274 | "name": "carbon", 275 | "description": "A design system built by IBM", 276 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/25179978?v=4", 277 | "html_url": "https://github.com/carbon-design-system/carbon", 278 | "stargazers_count": 8640, 279 | "created_at": "2017-03-13T14:23:59Z", 280 | "updated_at": "2025-11-30T14:06:19Z", 281 | "pushed_at": "2025-11-30T14:09:05Z" 282 | }, 283 | { 284 | "name": "kokonutui", 285 | "description": "Open-source collection of stunning Components built with Tailwind CSS, shadcn/ui and Motion to use on your websites", 286 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/187040814?v=4", 287 | "html_url": "https://github.com/kokonut-labs/kokonutui", 288 | "stargazers_count": 1485, 289 | "created_at": "2024-11-01T15:37:10Z", 290 | "updated_at": "2025-11-30T20:43:34Z", 291 | "pushed_at": "2025-11-26T16:58:10Z" 292 | }, 293 | { 294 | "name": "plate", 295 | "description": "Rich-text editor with AI, MCP, and shadcn/ui", 296 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/66228141?v=4", 297 | "html_url": "https://github.com/udecode/plate", 298 | "stargazers_count": 15528, 299 | "created_at": "2019-12-02T01:40:10Z", 300 | "updated_at": "2025-11-30T23:34:38Z", 301 | "pushed_at": "2025-11-30T09:54:27Z" 302 | }, 303 | { 304 | "name": "blocks", 305 | "description": "Shadcn marketing blocks", 306 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/207853833?v=4", 307 | "html_url": "https://github.com/tailark/blocks", 308 | "stargazers_count": 1993, 309 | "created_at": "2025-02-16T13:38:24Z", 310 | "updated_at": "2025-11-30T22:29:30Z", 311 | "pushed_at": "2025-11-27T19:08:47Z" 312 | }, 313 | { 314 | "name": "bulma", 315 | "description": "Modern CSS framework based on Flexbox", 316 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/1254808?v=4", 317 | "html_url": "https://github.com/jgthms/bulma", 318 | "stargazers_count": 49994, 319 | "created_at": "2016-01-23T23:48:34Z", 320 | "updated_at": "2025-11-30T23:49:46Z", 321 | "pushed_at": "2025-06-27T16:28:35Z" 322 | }, 323 | { 324 | "name": "ant-design", 325 | "description": "An enterprise-class UI design language and React UI library", 326 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/12101536?v=4", 327 | "html_url": "https://github.com/ant-design/ant-design", 328 | "stargazers_count": 96812, 329 | "created_at": "2015-04-24T15:37:24Z", 330 | "updated_at": "2025-12-01T00:06:43Z", 331 | "pushed_at": "2025-11-30T20:34:11Z" 332 | }, 333 | { 334 | "name": "material-ui", 335 | "description": "Material UI: Comprehensive React component library that implements Google's Material Design. Free forever.", 336 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/33663932?v=4", 337 | "html_url": "https://github.com/mui/material-ui", 338 | "stargazers_count": 97385, 339 | "created_at": "2014-08-18T19:11:54Z", 340 | "updated_at": "2025-11-30T23:22:53Z", 341 | "pushed_at": "2025-11-30T23:22:20Z" 342 | }, 343 | { 344 | "name": "motion-primitives", 345 | "description": "UI kit to make beautiful, animated interfaces, faster. Customizable. Open Source.", 346 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/14288396?v=4", 347 | "html_url": "https://github.com/ibelick/motion-primitives", 348 | "stargazers_count": 5116, 349 | "created_at": "2024-07-03T15:58:42Z", 350 | "updated_at": "2025-11-30T16:14:47Z", 351 | "pushed_at": "2025-11-25T22:08:58Z" 352 | }, 353 | { 354 | "name": "evergreen", 355 | "description": "\ud83c\udf32 Evergreen React UI Framework by Segment", 356 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/819518?v=4", 357 | "html_url": "https://github.com/segmentio/evergreen", 358 | "stargazers_count": 12402, 359 | "created_at": "2017-07-30T10:03:14Z", 360 | "updated_at": "2025-11-30T23:51:14Z", 361 | "pushed_at": "2025-06-11T04:53:19Z" 362 | }, 363 | { 364 | "name": "react-spectrum", 365 | "description": "A collection of libraries and tools that help you build adaptive, accessible, and robust user experiences.", 366 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/476009?v=4", 367 | "html_url": "https://github.com/adobe/react-spectrum", 368 | "stargazers_count": 14533, 369 | "created_at": "2019-09-13T23:32:51Z", 370 | "updated_at": "2025-11-30T23:48:13Z", 371 | "pushed_at": "2025-11-30T23:44:16Z" 372 | }, 373 | { 374 | "name": "react-admin", 375 | "description": "A frontend Framework for single-page applications on top of REST/GraphQL APIs, using TypeScript, React and Material Design", 376 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/3116319?v=4", 377 | "html_url": "https://github.com/marmelab/react-admin", 378 | "stargazers_count": 26373, 379 | "created_at": "2016-07-13T07:58:54Z", 380 | "updated_at": "2025-11-30T22:09:47Z", 381 | "pushed_at": "2025-11-27T13:49:24Z" 382 | }, 383 | { 384 | "name": "mantine", 385 | "description": "A fully featured React components library", 386 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/79146003?v=4", 387 | "html_url": "https://github.com/mantinedev/mantine", 388 | "stargazers_count": 30120, 389 | "created_at": "2021-01-07T14:02:19Z", 390 | "updated_at": "2025-11-30T23:11:58Z", 391 | "pushed_at": "2025-11-27T08:21:31Z" 392 | }, 393 | { 394 | "name": "coreui-react", 395 | "description": "CoreUI React.js UI Components. CoreUI for React.js replaces and extends the Bootstrap javascript. Components have been built from scratch as true React.js hook components, without jQuery and unneeded dependencies.", 396 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/36859861?v=4", 397 | "html_url": "https://github.com/coreui/coreui-react", 398 | "stargazers_count": 713, 399 | "created_at": "2018-02-26T18:14:32Z", 400 | "updated_at": "2025-11-23T07:02:34Z", 401 | "pushed_at": "2025-10-07T16:56:53Z" 402 | }, 403 | { 404 | "name": "daisyui", 405 | "description": "\ud83c\udf3c \ud83c\udf3c \ud83c\udf3c \ud83c\udf3c \ud83c\udf3c \u2003The most popular, free and open-source Tailwind CSS component library", 406 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/7342023?v=4", 407 | "html_url": "https://github.com/saadeghi/daisyui", 408 | "stargazers_count": 39474, 409 | "created_at": "2020-11-28T22:57:27Z", 410 | "updated_at": "2025-11-30T22:58:36Z", 411 | "pushed_at": "2025-11-30T23:00:22Z" 412 | }, 413 | { 414 | "name": "ui", 415 | "description": "A set of beautifully-designed, accessible components and a code distribution platform. Works with your favorite frameworks. Open Source. Open Code.", 416 | "owner_avatar_url": "https://avatars.githubusercontent.com/u/139895814?v=4", 417 | "html_url": "https://github.com/shadcn-ui/ui", 418 | "stargazers_count": 100989, 419 | "created_at": "2023-01-04T12:43:27Z", 420 | "updated_at": "2025-12-01T00:07:51Z", 421 | "pushed_at": "2025-11-30T20:44:28Z" 422 | } 423 | ], 424 | "meta": { 425 | "last_updated": "2025-12-01T00:17:33.489697Z" 426 | } 427 | } --------------------------------------------------------------------------------