Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Feature (Phase 2): Implement named ingestion sources (RSS feeds, GitHub markdown/YAML lists, Apify actors) & deadline expiry rules

未关闭
#83 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
18/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃
技术栈
github, typescript

调研方向

Start with src/lib/ingestion/sources/index.ts, which exports SOURCES = [], then read src/lib/ingestion/run-ingestion.ts and src/app/api/cron/link-health/route.ts. This is a broad tracking issue spanning many adapters, so a newcomer should pick one slice, such as the past-deadline drop in run-ingestion.ts, and confirm scope with maintainers first. Done means the slice works and has unit tests.

由索引模型根据 Issue 内容生成。

描述

enhancement

Description

Tracked from docs/2026-09-18-improvement-plan.md (§4 Phase 2) and docs/2026-09-18-github-resource-repos.md. Complements #40 with the concrete source adapters, parsers, and deadline-expiry rules from the Sept 18 research sweep.

Currently, the ingestion pipeline scaffolding (src/lib/ingestion/, /api/cron/ingest-resources, /admin/ingestion) is built, but src/lib/ingestion/sources/index.ts exports SOURCES = [].

Concrete Sources to Implement (src/lib/ingestion/sources/)

1. Free RSS & JSON Feeds (plain fetch)
  • Opportunity Desk (https://opportunitydesk.org/feed/): scholarships, fellowships, grants, contests; extract deadline from description text via regex.
  • Scholars4Dev (https://www.scholars4dev.com/feed/): international scholarships with deadline data.
  • Brabble.ai JSON/RSS (https://brabble.ai/): India-centric hackathons, competitions, and coding contests with structured closing dates (with attribution).
2. GitHub Resource Lists (docs/2026-09-18-github-resource-repos.md)

Build two generic parsers (Markdown Table parser and Markdown Link List / YAML parser) with GitHub Commits API change-detection:

  • yashisrani/List-of-OpenSource-Programs (YAML/Markdown with stipends & timelines)
  • ayush-sleeping/Every-Open-Source-Programs (month-by-month tables)
  • deepanshu1422/List-Of-Open-Source-Internships-Programs
  • sdhutchins/awesome-edu-perks (tag US/Global region)
  • Official GitHub Student Developer Pack partner page (https://education.github.com/pack)
3. Apify Actor Sources (APIFY_TOKEN via run-sync-get-dataset-items)
  • saadithya/scholarships-competitions-internships-extractor: normalized YYYY-MM-DD deadlines across Scholarships, Fellowships, Internships.
  • gabrielaxy/hackathon-aggregator: Devpost, Devfolio, ETHGlobal, DoraHacks start/end dates (kind = 'program').
  • solidcode/unstop-scraper / dami_studio/unstop-scraper: filter strictly to scholarship + hackathon + named flagship internships (respecting the "not a job board" non-goal).
  • blackfalcondata/internshala-scraper: filter strictly to curated flagship programs (InStep, TCS Research, Microsoft, Amazon), not the firehose.

Pipeline & Link-Health Rules

  1. Drop past deadlines at fetch time: In run-ingestion.ts, any candidate with deadline < now() is dropped before inserting into ingestion_candidates.
  2. Link-health deadline expiry (src/app/api/cron/link-health/route.ts):
    • If a live resource has deadline < now() and no recurrence, automatically flip status = 'expired'.
    • If a live resource has deadline < now() with recurrence, clear deadline = null and keep its "reopens ~month" recurrence label active.

Acceptance Criteria

  • SOURCES in src/lib/ingestion/sources/index.ts includes working adapters for RSS feeds, GitHub markdown/YAML lists, and Apify actors (when APIFY_TOKEN is set).
  • Candidates with deadline < now() are dropped during ingestion.
  • Link-health cron expires non-recurring past-deadline resources and resets recurring past-deadline resources.
  • Unit tests cover the markdown table parser, RSS deadline extractor, past-deadline filtering, and recurrence rollover.

Files Involved

  • src/lib/ingestion/sources/index.ts
  • src/lib/ingestion/sources/*.ts (new adapters)
  • src/lib/ingestion/run-ingestion.ts
  • src/app/api/cron/link-health/route.ts
  • vercel.json
主要语言
TypeScript
星标
1
派生
6
平均合并
23 小时 53 分钟
30 天内合并 PR
27

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

Your-Voldemort/StudentStack 的其他 Issue

查看 Your-Voldemort/StudentStack 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。