[Import/Export] Wrap events in one VCALENDAR
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 73/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- backend
Research direction
Read the plan shape in src/lib/planFile/schema.ts, the section types in src/lib/domain/section.ts, and the meetingToVEvent work in src/lib/ics/meeting.ts from blocked issue #786. Implement the whole-plan calendar in src/lib/ics/plan.ts and cover it in plan.test.ts; use pnpm test as the acceptance check. Done means stable UIDs, a CRLF-formatted calendar with the required America/New_York VTIMEZONE, and the specified event counts, including for an empty plan.
Written by the indexing model from the issue text.
Description
What to build
Put the completed class events inside one calendar file. Include the required file headers, timezone description and closing line so calendar apps can open the result.
Files
src/lib/ics/plan.ts(new file)- Starting example: src/lib/domain/section.ts
Code to add or extend:wrapCalendar(events: readonly string[]): string.
Steps
- Create BEGIN:VCALENDAR, VERSION:2.0, PRODID:-//DevDogsUGA//DogDays//EN, CALSCALE:GREGORIAN and completed timezone component.
- Append event strings and END:VCALENDAR with trailing CRLF.
- Empty events still produce a valid wrapper; no timestamp generation here.
Example
[] → zero VEVENTs but complete calendar and timezone component.
Check it works
In src/lib/ics/plan.test.ts, check the example above and the failure or limit described in the steps. Run pnpm test -- src/lib/ics/plan.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
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
needs triage
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
homarr-labs/homarr#7191 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
AvaProtocol/ava-sdk-js#276 ·
Maintainers usually reply within 1 day
-
useFragment does not require `variables` when the fragment's variables type has required fieldsOpen
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
apollographql/apollo-client#13493 ·
Maintainers usually reply within 1 day