init project plan
This commit is contained in:
129
README.md
129
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?
|
||||
|
||||
Reference in New Issue
Block a user