Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7,362 changes: 243 additions & 7,119 deletions .cache/contributors.json

Large diffs are not rendered by default.

30 changes: 30 additions & 0 deletions .cache/project-stats.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"updated_at": "2026-06-15T03:53:56.508Z",
"repos": {
"iflytek/astron-agent": {
"stars": 8560,
"forks": 853,
"updated_at": "2026-06-15T03:44:02.055Z"
},
"iflytek/astron-rpa": {
"stars": 5177,
"forks": 576,
"updated_at": "2026-06-15T03:44:02.631Z"
},
"iflytek/astronclaw-tutorial": {
"stars": 410,
"forks": 41,
"updated_at": "2026-06-15T03:44:03.239Z"
},
"iflytek/iFly-Skills": {
"stars": 184,
"forks": 23,
"updated_at": "2026-06-15T03:44:03.848Z"
},
"iflytek/skillhub": {
"stars": 3462,
"forks": 500,
"updated_at": "2026-06-15T03:44:04.442Z"
}
}
}
6 changes: 3 additions & 3 deletions .github/ISSUE_TEMPLATE/leadership-change.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@ body:
label: "Prerequisites for new leads:"
options:
- label: Are an org member
- label: Have read and agree to abide by the [Code of Conduct](https://github.com/iflytek/community/blob/main/code-of-conduct.md)
- label: Have read and agree to abide by the [Code of Conduct](https://github.com/iflytek/community/blob/master/code-of-conduct.md)
- id: req_checklist
type: checkboxes
attributes:
label: "Onboarding / Offboarding tasks:"
options:
- label: Updated [OWNERS](https://github.com/iflytek/community/blob/main/OWNERS) file. **NOTE:** If offboarding, remember to remove from approvers.
- label: Updated [MAINTAINERS.md](https://github.com/iflytek/community/blob/main/MAINTAINERS.md).
- label: Updated [OWNERS](https://github.com/iflytek/community/blob/master/OWNERS) file. **NOTE:** If offboarding, remember to remove from approvers.
- label: Updated [MAINTAINERS.md](https://github.com/iflytek/community/blob/master/MAINTAINERS.md).
- label: Updated access/teams in project infrastructure.
- label: Updated ownership of group mailing list.
- label: Updated ownership of group calendar.
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/moderator_application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ body:
required: true
- label: I have [enabled 2FA on my GitHub account](https://github.com/settings/security)
required: true
- label: I have read and will abide by the policies mentioned in the [Moderation Guidelines](https://github.com/iflytek/community/blob/main/code-of-conduct.md)
- label: I have read and will abide by the policies mentioned in the [Moderation Guidelines](https://github.com/iflytek/community/blob/master/code-of-conduct.md)
required: true
- label: I have two sponsors that meet the sponsor requirements
required: true
Expand Down
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!-- Thanks for sending a pull request! Here are some tips for you:

- If this is your first contribution, read our Getting Started guide https://github.com/iflytek/community/blob/main/CONTRIBUTING.md
- If this is your first contribution, read our Getting Started guide https://github.com/iflytek/community/blob/master/CONTRIBUTING.md

-->

Expand Down
33 changes: 33 additions & 0 deletions .github/workflows/update-project-stats.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Update Project Stats

on:
schedule:
- cron: '0 18 * * *' # Daily at 2:00 AM Beijing time (UTC+8)
workflow_dispatch: # Manual trigger

permissions:
contents: write

jobs:
update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
- run: npm ci
- name: Fetch project stats from GitHub API
run: npm run fetch:project-stats
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Commit and push if changed
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add .cache/project-stats.json
git diff --cached --quiet || git commit -m "chore: update project stats [skip ci]"
git push
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,11 @@ lerna-debug.log*
# ============================================
# Cache directories
# ============================================
# Keep contributors.json for site to work
# Keep contributors.json and project-stats.json for site to work
.cache/*
!.cache/contributors.json
.tmp-community/
!.cache/project-stats.json
.vercel/

# ============================================
# Package manager lock files
Expand Down
5 changes: 3 additions & 2 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ node_modules
.github
.changeset
.cache
contributing.md
security.md
.vercel
CONTRIBUTING.md
SECURITY.md
15 changes: 13 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,13 @@ All notable changes to this project will be documented in this file.

### Added

- **Real-time Project Stats**: `getProjectsWithStats()` utility fetches live stars/forks from GitHub API at runtime (Vercel SSR), falls back to `.cache/project-stats.json` at build time
- **Project Stats Script**: `scripts/fetch-project-stats.ts` fetches stars/forks for all project repos via GitHub API, saves to `.cache/project-stats.json`
- **Project Stats CI**: `.github/workflows/update-project-stats.yml` — daily GitHub Action at 2:00 AM Beijing time to refresh cached stats
- **Vercel SSR Pages**: `/projects`, `/projects/[slug]`, `/contribute` marked `export const prerender = false` for real-time data via Vercel serverless functions (Astro 6.x static mode supports per-page SSR)
- **In-memory Cache**: 5-minute TTL memory cache in `getProjectsWithStats()` and `fetchContributorsLive()` to reduce API calls on warm serverless invocations
- **Favicon**: Replace favicon and logo icon with iFLYTEK GitHub avatar (`avatars.githubusercontent.com/u/26786495`)
- **Contributors**: Fetch 846 real contributors from GitHub API (64 repos) replacing placeholder data
- **Contributors**: Fetch 164 real contributors from GitHub API (56 original repos, 8 forks excluded) replacing placeholder data
- **Projects**: Add 3 new categories — RPA & Automation, AI Skills, Tutorials
- **Projects**: Show project count `(N)` on category filter buttons, matching Events page style
- **Contribute**: Make "How to Contribute" cards clickable with links to `iflytek/community` (Issues, Contributing Guide, Code of Conduct)
Expand All @@ -18,10 +23,15 @@ All notable changes to this project will be documented in this file.

### Changed

- **Project Detail Page**: Replace `getStaticPaths` + `Astro.props` with dynamic `Astro.params.slug` lookup + `getProjectsWithStats()` for real-time stats on each request
- **Contributors Fetching**: `contribute.astro` now calls GitHub API directly at runtime (via native `fetch`) when `GITHUB_TOKEN` is set, falls back to `.cache/contributors.json` otherwise
- **Fork Filtering**: `fetch-contributors.ts` now excludes fork repos (`repo.fork`) and archived repos (`repo.archived`) to prevent upstream contributors from appearing on the wall
- **Gradient Colors**: Introduce semantic tokens `--color-gradient-start` / `--color-gradient-end` (referencing primary-600/accent-500) in `tailwind.css`, replacing hardcoded `from-blue-600 to-purple-600` across all pages
- **Hover Styles**: Unify card hover effects across all pages — `hover:shadow-lg`, `hover:-translate-y-0.5`, `dark:hover:border-primary-800` — including dark mode
- **Community Files Post-processing**: `scripts/fetch-community-files.ts` now runs `postProcessFiles()` in `finally` block on every build, auto-fixing `blob/main` → `blob/master` links and relative URL conversion even when git clone fails
- **Logo**: Replace 🚀 emoji with iFLYTEK avatar image in site header
- **Tailwind**: Define complete primary (50–950) and accent (50–950) color scales in `@theme` — fixes transparent text/icons caused by missing numbered variants in Tailwind v4
- **Projects**: Remove Featured badge, sort projects by stars only
- **Projects**: Unify card borders and icon gradient (`from-blue-600 to-purple-600`) across all pages
- **Projects**: Wrap ProjectCard in `<div class="project-card">` to fix category filter selecting filter buttons
- **Events**: Add dark mode hover effects (`dark:hover:border-primary-800`) to event cards and news cards
- **Contribute**: Fix all community links — `blob/main` → `blob/master`, `CODE_OF_CONDUCT.md` → `code-of-conduct.md` (lowercase)
Expand All @@ -40,6 +50,7 @@ All notable changes to this project will be documented in this file.
- **View Transitions**: Category filter buttons on `/projects` and type filter on `/events` did not work during client-side navigation — fixed with `is:inline` script and `readyState` check
- **Community Links**: 404 errors from wrong branch name (`main` vs `master`) and wrong filename case (`CODE_OF_CONDUCT.md` vs `code-of-conduct.md`)
- **Project Card**: `data-category` attribute forwarded to component conflicted with filter `querySelectorAll('[data-category]')` — fixed by wrapping in explicit `<div class="project-card">`
- **ESLint/Prettier scanning `.vercel/`**: Build output directory was being scanned by linter/formatter — fixed by adding `.vercel` and `.cache` to ignore lists

## [0.1.0] - 2025-06-12

Expand Down
4 changes: 2 additions & 2 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# CODE OF CONDUCT
# Iflytek Community Code of Conduct

Please visit https://github.com/iflytek/community for the latest version.
Please refer to our [Iflytek Community Code of Conduct](https://github.com/iflytek/community/blob/master/code-of-conduct.md)
18 changes: 9 additions & 9 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,24 +18,24 @@ Welcome to the Iflytek Opensource Community contributing guide. We are excited a

We have full documentation on how to get started contributing:

* [Community Governance](governance.md) - How the community is organized
* [Community Membership](community-membership.md) - Membership levels and responsibilities
* [Code of Conduct](code-of-conduct.md) - Our community values and expectations
* [Community Governance](https://github.com/iflytek/community/blob/master/governance.md) - How the community is organized
* [Community Membership](https://github.com/iflytek/community/blob/master/community-membership.md) - Membership levels and responsibilities
* [Code of Conduct](CODE_OF_CONDUCT.md) - Our community values and expectations

## How to Contribute

1. **Find something to work on** - Check [open issues](https://github.com/iflytek/community/issues), attend SIG meetings, or join discussions on our communication channels
2. **Read the contributor guide** - Understand our processes and conventions
3. **File an issue** - Before starting significant work, discuss your plans (see [Issue Guidelines](contribute/issue-guidelines.md))
4. **Submit a pull request** - Follow our [PR workflow](contribute/pull-request-guidelines.md)
3. **File an issue** - Before starting significant work, discuss your plans (see [Issue Guidelines](https://github.com/iflytek/community/blob/master/contribute/issue-guidelines.md))
4. **Submit a pull request** - Follow our [PR workflow](https://github.com/iflytek/community/blob/master/contribute/pull-request-guidelines.md)

## Contributor Guides

These documents provide detailed guidance on how to contribute effectively:

### Issue Guidelines

The [Issue Guidelines](contribute/issue-guidelines.md) document covers:
The [Issue Guidelines](https://github.com/iflytek/community/blob/master/contribute/issue-guidelines.md) document covers:

* How to search for existing issues before opening a new one
* What information to include when opening an issue
Expand All @@ -45,7 +45,7 @@ The [Issue Guidelines](contribute/issue-guidelines.md) document covers:

### Pull Request Guidelines

The [Pull Request Guidelines](contribute/pull-request-guidelines.md) document covers:
The [Pull Request Guidelines](https://github.com/iflytek/community/blob/master/contribute/pull-request-guidelines.md) document covers:

* The pull request process from creation to merge
* How to mark unfinished pull requests (WIP)
Expand All @@ -55,7 +55,7 @@ The [Pull Request Guidelines](contribute/pull-request-guidelines.md) document co

### Review Guidelines

The [Review Guidelines](contribute/review-guidelines.md) document covers tips for reviewers:
The [Review Guidelines](https://github.com/iflytek/community/blob/master/contribute/review-guidelines.md) document covers tips for reviewers:

* Managing your time for reviews
* When to loop in others with domain-specific knowledge
Expand All @@ -65,7 +65,7 @@ The [Review Guidelines](contribute/review-guidelines.md) document covers tips fo

### Discussions Guidelines

The [Discussions Guidelines](contribute/discussions-guidelines.md) document covers:
The [Discussions Guidelines](https://github.com/iflytek/community/blob/master/contribute/discussions-guidelines.md) document covers:

* What discussions are for (questions, brainstorming, showcase, announcements)
* Discussion categories and when to use each
Expand Down
34 changes: 18 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ The official open source website for iFLYTEK (科大讯飞), showcasing our open
- 🗺️ **Project Landscape** — CNCF-style interactive project map
- 👥 **Contributor Wall** — GitHub contributor avatars animation
- 🔍 **SEO Optimized** — Meta tags, Open Graph, Sitemap
- ⚡ **Fast Performance** — Static site generation with Astro
- ⚡ **Fast Performance** — Hybrid rendering (SSG + SSR) with Astro

## 📁 Project Structure

Expand All @@ -34,8 +34,9 @@ website/
│ ├── pages/ # Route pages
│ └── utils/ # Utilities
├── public/ # Static assets
├── scripts/ # Build scripts (fetch contributors, community files)
├── scripts/ # Build scripts (fetch contributors, project stats, community files)
├── vendor/ # AstroWind integration
├── .cache/ # Build-time data cache (contributors, project stats)
└── .github/ # CI/CD workflows + Dependabot
```

Expand Down Expand Up @@ -74,20 +75,21 @@ npm run preview

## 📋 Available Scripts

| Script | Description |
| ---------------------------- | ------------------------------------ |
| `npm run dev` | Start development server |
| `npm run build` | Build for production (with prebuild) |
| `npm run preview` | Preview production build |
| `npm run check` | Run all code quality checks |
| `npm run check:astro` | Run Astro type checking |
| `npm run check:eslint` | Run ESLint |
| `npm run check:prettier` | Run Prettier check |
| `npm run fix` | Auto-fix ESLint and Prettier issues |
| `npm run fetch:contributors` | Fetch GitHub contributor data |
| `npm run license:check` | Check dependency licenses |
| `npm run license:report` | Generate license report (Markdown) |
| `npm run license:summary` | Show license summary |
| Script | Description |
| ----------------------------- | ------------------------------------- |
| `npm run dev` | Start development server |
| `npm run build` | Build for production (with prebuild) |
| `npm run preview` | Preview production build |
| `npm run check` | Run all code quality checks |
| `npm run check:astro` | Run Astro type checking |
| `npm run check:eslint` | Run ESLint |
| `npm run check:prettier` | Run Prettier check |
| `npm run fix` | Auto-fix ESLint and Prettier issues |
| `npm run fetch:contributors` | Fetch GitHub contributor data |
| `npm run fetch:project-stats` | Fetch GitHub stars/forks for projects |
| `npm run license:check` | Check dependency licenses |
| `npm run license:report` | Generate license report (Markdown) |
| `npm run license:summary` | Show license summary |

## 🌍 Pages

Expand Down
3 changes: 0 additions & 3 deletions code-of-conduct.md

This file was deleted.

83 changes: 0 additions & 83 deletions contributing.md

This file was deleted.

2 changes: 1 addition & 1 deletion eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,6 @@ export default [
},
},
{
ignores: ['dist', 'node_modules', '.github', 'types.generated.d.ts', '.astro'],
ignores: ['dist', 'node_modules', '.github', '.vercel', '.cache', '.astro', 'types.generated.d.ts'],
},
];
Loading
Loading