From 59735ceb43287232658f046d94d92762eb74a49f Mon Sep 17 00:00:00 2001 From: Dmytro Stanchiev Date: Thu, 14 Aug 2025 13:18:33 -0400 Subject: [PATCH] init project plan --- README.md | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 128 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cae3fde..d73b28d 100644 --- a/README.md +++ b/README.md @@ -1 +1,128 @@ -# sone4ka-tok +## **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 (2–3 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 (3–4 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) (3–5 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 (2–3 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 ~2–3 focused hours/day: +- **Week 1:** Phases 0–2 (setup, PWA, local CRUD) +- **Week 2:** Phases 3–4 (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?