[Import/Export] Find the first meeting occurrence
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 83/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- backend
Research direction
Read the section types in src/lib/domain/section.ts and the getting-started setup guide, then create src/lib/ics/meeting.ts and meeting.test.ts. Use the listed acceptance checks with pnpm test: verify DTSTART, BYDAY and UNTIL, escaped LOCATION text, null for a TBA meeting, and folded summary lines. Coordinate the date formatting with issue #788's helper when it merges.
Written by the indexing model from the issue text.
Description
What to build
Find the first date on which a class actually meets. Use its active start/end dates and weekdays so the exported calendar does not begin on a day with no class.
Files
src/lib/ics/meeting.ts(new file)- Starting example: src/lib/domain/section.ts
- Course/meeting fields: src/lib/domain/section.ts
Code to add or extend:firstMeetingDate(range: DateRange|null, days: readonly DayOfWeek[]): string|null.
Steps
- Return null for null range or empty weekday list.
- Parse
range.startas UTC midnight and walk at most7 calendar dates using getUTCDay/setUTCDate. Stop afterrange.end. - Map Sunday0..Saturday6 explicitly to domain weekday strings and return the first matching ISO date.
Example
Range 2026-08-12..2026-08-14 with MWF → 2026-08-12; range ending before any requested weekday → null.
Check it works
In src/lib/ics/meeting.test.ts, check the example above and the failure or limit described in the steps. Run pnpm test -- src/lib/ics/meeting.test.ts, pnpm lint and pnpm typecheck.
Before starting
References
Assign yourself before starting, or comment to claim the issue. Project setup.
- Dominant language
- TypeScript
- Stars
- 19
- Forks
- 94
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from DevDogsUGA/DogDays
-
map
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
DevDogsUGA/DogDays#868 ·
-
map
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
DevDogsUGA/DogDays#865 ·
-
sharing
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
DevDogsUGA/DogDays#854 ·
-
import-export
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
DevDogsUGA/DogDays#850 ·
-
import-export
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
DevDogsUGA/DogDays#842 ·
All issues in DevDogsUGA/DogDays
Similar issues
-
documentation good first issue hacktoberfest help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
libredb/libredb-studio#1756 ·
Maintainers usually reply within 1 day
-
state:triage-needed
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 72/100
lingdojo/kana-dojo#32365 · 1 comment · 5 reactions ·
Maintainers usually reply within 1 day
-
friction
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
kentcdodds/kody#3706 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
copperheadhq/copperhead#378 ·
Maintainers usually reply within 1 day