Files
local-cal/README.md
2025-08-14 14:57:09 -04:00

129 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## **Project Plan: PWA iCal Editor with AI Integration**
### Phase 0 — Set Up Your Workspace (1 day)
**Goal:** Ensure your dev environment and project skeleton are ready.
**Tasks:**
1. Install bun runtime and Docker locally.
2. Create a GitHub repo for your project.
3. Set up a kanban board (e.g., GitHub Projects, Trello, or even a whiteboard) with columns: _Backlog → In Progress → Done_.
4. Initialize Next.js project with **bun**:
```bash
bun create next-app my-ical-pwa
```
5. Integrate **shadcn/ui** + TailwindCSS.
```
npx shadcn-ui init
```
6. Install TurboPack config for faster builds.
7. Commit and push to GitHub.
✅ **Success criteria:** You can run `bun dev` and see the starter NextJS page with a shadcn component rendering.
---
### Phase 1 — PWA Foundations (23 days)
**Goal:** Make your app installable, offline-capable, and structured.
**Tasks:**
1. Configure NextJS PWA using the [`next-pwa`](https://github.com/shadowwalker/next-pwa) plugin or manual service worker.
2. Add manifest.json (name, icons, start_url).
3. Ensure offline caching works for basic pages.
4. Build your base layout with shadcn (Navigation bar, App shell).
✅ **Success criteria:**
- App can be installed on desktop/mobile.
- Basic UI framework in place (navigation, header).
- Works offline in basic form.
---
### Phase 2 — Local Calendar CRUD (34 days)
**Goal:** Create, Read, Update, and Delete events in **IndexedDB** (calendar data stored locally).
**Tasks:**
1. Set up IndexedDB wrapper (recommend [`idb`](https://github.com/jakearchibald/idb) library for simplicity).
2. Design minimal event model:
```ts
type CalendarEvent = {
id: string;
title: string;
start: Date;
end: Date;
description?: string;
};
```
3. Build **Add Event** form (shadcn modal or page).
4. Render events in list view.
5. Enable edit/delete logic.
6. Store small user preferences (theme, last viewed date) in localStorage.
✅ **Success criteria:**
- You can add, edit, and delete events without reloading.
- Changes persist after refresh.
---
### Phase 3 — iCal File Import/Export (3 days)
**Goal:** Read `.ics` files and export your event list as iCal.
**Tasks:**
1. Use [`ical.js`](https://github.com/mozilla-comm/ical.js) or [`ical-generator`](https://github.com/sebbo2002/ical-generator) to handle parsing.
2. Create import button (upload local iCal file and store events in IndexedDB).
3. Create export button that takes current events and downloads `.ics`.
✅ **Success criteria:**
- Importing an `.ics` populates your list.
- Export downloads a valid `.ics` file.
---
### Phase 4 — AI Integration (OpenRouter) (35 days)
**Goal:** Add AI-assisted event creation / summarization.
**Tasks:**
1. Set up API route in Next.js that calls **OpenRouter** API.
2. Write prompt format for:
- Turning natural language into structured event JSON.
- Summarizing events into a bullet list.
3. Add text input where the user can type: _"Lunch with Sarah next Friday at noon"_ → generates event form populated automatically.
4. Integrate results directly into CRUD flow.
✅ **Success criteria:**
- User can create an event by typing in natural language and AI fills in details.
- AI can summarize selected events.
---
### Phase 5 — Polish & Deployment (23 days)
**Goal:** Dockerize and deploy to bare metal.
**Tasks:**
1. Write `Dockerfile` for **bun + NextJS** app.
2. Add `.dockerignore` to optimize build.
3. Deploy to your server using `docker-compose` or raw `docker run`.
4. Enable HTTPS with Caddy or Nginx reverse proxy.
**Success criteria:**
- App is live, installable, and can read/write iCal files with AI support.
- Access from phone and desktop.
---
## ADHD-Friendly Productivity Tips for This Project
- **Visual progress:** Keep your kanban board visible; drag at least 1 card to "Done" daily.
- **Micro-goals:** Define tasks as “Under 1 hour” pieces (e.g., _“Add startDate field to form”_ versus _“Build CRUD forms”_).
- **Pomodoros with variety:** Alternate coding with light tasks (docs, UI tweaks).
- **Celebrate small wins:** Even “icons rendering right” counts.
- **Hyperfocus harness:** Save creative coding (like AI prompt design) for your high-focus times.
- **Body doubling:** Work in a co-working video call or stream to keep momentum.
---
## Suggested Timeline
If you work ~23 focused hours/day:
- **Week 1:** Phases 02 (setup, PWA, local CRUD)
- **Week 2:** Phases 34 (iCal import/export, AI integration)
- **Week 3:** Phase 5 (polish, deployment)
---
## Next Steps for You
1. Confirm if you want to **start from plain NextJS** or grab a PWA boilerplate to save time.
2. Decide which **AI model via OpenRouter** to use (cheap + fast, or high-quality outputs?).
3. Pick a **calendar UI approach** — minimal list view or visual calendar grid from the start?