My Weekly ToDo List - A web-based weekly task management app
Root cause: React registers onTouchStart props as non-passive listeners at the app root. iOS Safari sees any non-passive touchstart on an ancestor and blocks the scroll gesture on those elements, waiting for JS to finish. This is why the time column (no handlers) scrolled freely but day columns (slots had onTouchStart) were frozen. Changes: - Removed onTouchStart prop from all time-slot divs — no more React touch handlers in the time grid, so iOS never blocks scroll - Added data-slot-blocked attribute to occupied/protected slots - Moved slot long-press logic into the permanent native touchstart listener on document (passive: true), reading slot/date from data attributes - Added touch-action: pan-y on .time-grid-wrapper — explicitly tells iOS that vertical pan = scroll even if child content has touch handlers - CSS: align-items: start on .weekly-days-grid so sticky headers in each day column have a proper scroll context - Reinforced position:sticky on .time-grid-wrapper .weekly-day-header v1.77.3 |
||
|---|---|---|
| .claude | ||
| .github/workflows | ||
| .opencode | ||
| .planning | ||
| prisma | ||
| public | ||
| scripts | ||
| spec | ||
| specs | ||
| src | ||
| tests | ||
| Version 01 | ||
| .dockerignore | ||
| .env.example | ||
| .env.production.save | ||
| .eslintrc.json | ||
| .gitignore | ||
| CLAUDE.md | ||
| COMMIT_SUMMARY.md | ||
| comprehensive-debug.js | ||
| debug-login-page.js | ||
| debug-signup.js | ||
| deploy.sh | ||
| deployment-notes.md | ||
| docker-compose.dev.yml | ||
| docker-compose.local.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| final_phase3_analysis.md | ||
| INFRASTRUCTURE_REQUIREMENTS.md | ||
| mock-prisma.ts | ||
| next-env.d.ts | ||
| next.config.js | ||
| opencode.json | ||
| package-lock.json | ||
| package.json | ||
| phase3_analysis.md | ||
| playwright.config.ts | ||
| postcss.config.js | ||
| query.js | ||
| README.md | ||
| SETUP.md | ||
| tailwind.config.js | ||
| TEST_PLAN_SUMMARY.md | ||
| TEST_PLAN.md | ||
| test-account-setup.js | ||
| test-api.js | ||
| test-email.js | ||
| test-route.js | ||
| test-syno.js | ||
| tsconfig.json | ||
| tsconfig.tsbuildinfo | ||
My Weekly To Do List
A web-based weekly task management application that organizes to-dos and calendar events in a single, intuitive weekly view.
Features
- Weekly view of tasks and calendar events
- Drag and drop functionality between days
- Calendar integration with Google and Apple Calendar
- Responsive design for all devices
- Accessible user interface (WCAG 2.1 AA compliant)
Deployment with Docker
This application can be deployed using Docker and Docker Compose.
Prerequisites
- Docker Engine
- Docker Compose
Quick Start
- Clone the repository and navigate to the project directory
- Build and start the containers:
docker-compose up --build - Access the application at http://localhost:3000
Environment Variables
The application requires the following environment variables:
DATABASE_URL: PostgreSQL connection stringNEXTAUTH_SECRET: Secret for NextAuth.jsNEXT_PUBLIC_BASE_URL: Public URL of the applicationMICROSOFT_CLIENT_ID: Azure AD Application (client) ID for Microsoft LoginMICROSOFT_CLIENT_SECRET: Azure AD Application secret for Microsoft Login
Database Configuration
The application uses PostgreSQL for data storage. The Docker Compose setup includes a PostgreSQL service, but you can also connect to an external database by setting the DATABASE_URL accordingly.
Building for Production
To build the production version:
docker build -t my-weekly-todo-list .
Development
For development, you can run:
npm run dev
License
This project is licensed under the MIT License.