# Plan: Nextcloud WebDAV Integration (COMPLETED) Transition from static file hosting to a dynamic SvelteKit (Node.js) application that fetches content directly from Nextcloud. ## 1. Infrastructure Shift - [x] Replace `@sveltejs/adapter-static` with `@sveltejs/adapter-node`. - [x] Update `svelte.config.js` to use the Node adapter. - [x] Remove `fallback: undefined` and other static-specific configurations. ## 2. Dependencies - [x] Install `webdav` client library. - [x] Install `dotenv` (handled by SvelteKit's built-in env support). ## 3. Secure Configuration - [x] Set up `.env` with: - `NEXTCLOUD_URL` - `NEXTCLOUD_USER` - `NEXTCLOUD_PASSWORD` - [x] Use `$env/dynamic/private` to access these in server-side code only. ## 4. Server-Side Data Fetching - [x] Create `src/lib/server/nextcloud.ts` to initialize and export the WebDAV client. - [x] Implement `+page.server.ts` for each content route: - Fetch Markdown content from Nextcloud. - Return the raw string to the frontend. - [x] Update `Markdown.svelte` to receive and render raw strings instead of fetching from a URL on the client. ## 5. Asset Proxying - [x] Create a catch-all server route (e.g., `src/routes/assets/[...path]/+server.ts`). - [x] This route will: - Authenticate with WebDAV. - Stream images/files from Nextcloud directly to the browser. - [x] Update Markdown rendering logic to rewrite image URLs to point to this proxy route. ## 6. Optimization - [x] Implement server-side caching to avoid hitting Nextcloud on every single request. - [x] Implement dynamic route discovery to automatically create pages from Nextcloud folders.