Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Feature (Phase 1): Extend resources schema for opportunities (kind, opensAt, recurrence, amount, provider, eligibility)

オープン
#78 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@Aryan-Techie がすでに取り組んでいます。

2026年10月20日 から。

  • #99 @Aryan-Techie による — オープン

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
typescript
領域
database, frontend

調査の方向性

Start with the resources table definition in src/db/schema.ts, then follow the Resource type and column list in src/lib/resources.ts and the fixtures in src/lib/mock-data.ts. Add the new columns and the ResourceEligibility type, generate the Drizzle migration, and check that it applies without changing the existing rows, which should default to kind = 'perk'. Done when the admin form in src/components/admin/resource-form.tsx and the actions in src/app/admin/(dashboard)/actions.ts create and edit the new fields.

索引モデルが issue の本文から書いたものです。

説明

enhancement

Description

Tracked from docs/2026-09-18-improvement-plan.md (§4 Phase 1 — Schema additions).

To support scholarships, fellowships, internships, mentorship programs, and open-source/hackathon programs alongside software perks, resources needs orthogonal opportunity fields (all nullable or defaulted with zero migration risk to existing perk rows).

Schema Additions (src/db/schema.ts)

  1. kind enum column:
    kind: text("kind", {
      enum: ["perk", "scholarship", "fellowship", "internship", "mentorship", "program"],
    })
      .notNull()
      .default("perk"),
    
    (Categories stay as they are; kind is orthogonal.)
  2. Timeline & funding metadata:
    • opensAt: timestamp("opens_at")
    • deadline: timestamp("deadline") (already exists)
    • recurrence: text("recurrence") (e.g. "annual, opens Feb")
    • amount: text("amount") (e.g. "₹31,000/month", "$1,500–6,600")
    • provider: text("provider") (e.g. "Google", "AICTE", "Ministry of Education")
  3. Structured eligibility JSONB column:
    export type ResourceEligibility = {
      levels?: ("UG" | "PG" | "PhD" | "HighSchool")[];
      countries?: string[]; // ISO codes e.g. ["IN"]
      states?: string[];
      minYear?: number;
      maxAge?: number;
      gender?: string;
      incomeCapInr?: number;
      fields?: string[]; // e.g. ["CS", "ECE"]
    };
    
    • eligibility: jsonb("eligibility").$type<ResourceEligibility>()
  4. Update Resource type & Admin form:
    • Expose the new columns in src/lib/resources.ts (resourceColumns, Resource type) and src/lib/mock-data.ts.
    • Add inputs for kind, opensAt, recurrence, amount, provider, and eligibility in src/components/admin/resource-form.tsx and admin actions (src/app/admin/(dashboard)/actions.ts).

Acceptance Criteria

  • src/db/schema.ts defines kind, opensAt, recurrence, amount, provider, and eligibility on resources (and ingestion_candidates where applicable).
  • Drizzle migration is generated and applies cleanly without breaking existing 593 rows (which default to kind = 'perk').
  • Resource TypeScript type, mock data, and /admin create/edit resource form support the new fields.

Files Involved

  • src/db/schema.ts
  • src/lib/resources.ts
  • src/lib/mock-data.ts
  • src/components/admin/resource-form.tsx
  • src/app/admin/(dashboard)/actions.ts
主要言語
TypeScript
スター
1
フォーク
6
平均マージ
1日 41分
マージ済み PR(30日)
28

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

Your-Voldemort/StudentStack のほかの issue

Your-Voldemort/StudentStack の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。