···11-# sv
11+# steve.photo
2233-Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
33+
4455-## Creating a project
55+My personal photography website built with [SvelteKit](https://svelte.dev)
6677-If you're seeing this, you've probably already done this step. Congrats!
77+## Features
8899-```sh
1010-# create a new project
1111-npx sv create my-app
1212-```
1313-1414-To recreate this project with the same configuration:
99+- Photo gallery with infinite scroll and progressive image loading
1010+- Automatic EXIF metadata extraction (camera, lens, aperture, ISO, etc.)
1111+- Admin panel for uploading, editing, and deleting photos
1212+- RSS feed for content syndication
1313+- SEO optimized with dynamic OpenGraph and Twitter card metadata
15141616-```sh
1717-# recreate this project
1818-bun x sv create --template minimal --types ts --add tailwindcss="plugins:none" --install bun steve-photo-svelte
1919-```
1515+## Quickstart
20162121-## Developing
1717+```bash
1818+# Install dependencies
1919+bun install
22202323-Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
2121+# Run development server
2222+bun run dev
24232525-```sh
2626-npm run dev
2424+# Build for production
2525+bun run build
27262828-# or start the server and open the app in a new browser tab
2929-npm run dev -- --open
2727+# Deploy to Cloudflare
2828+bun run deploy
3029```
31303232-## Building
3333-3434-To create a production version of your app:
3131+## Structure
35323636-```sh
3737-npm run build
3333+```
3434+src/
3535+├── lib/
3636+│ ├── auth.ts # HMAC session management
3737+│ ├── feed.ts # RSS feed photo retrieval
3838+│ ├── types.ts # TypeScript interfaces
3939+│ └── components/
4040+│ └── ProgressiveImage.svelte
4141+├── routes/
4242+│ ├── +page.svelte # Gallery with infinite scroll
4343+│ ├── photo/[slug]/ # Photo detail page
4444+│ ├── admin/ # Protected upload panel
4545+│ ├── login/ # Authentication
4646+│ ├── api/photos/ # Pagination endpoint
4747+│ └── rss.xml/ # RSS feed
4848+└── hooks.server.ts # Session verification
3849```
39504040-You can preview the production build with `npm run preview`.
5151+## Stack
41524242-> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
5353+- **SvelteKit** - Full-stack framework handling routing, SSR, and API endpoints
5454+- **Cloudflare Workers** - Edge runtime for serverless deployment
5555+- **D1 Database** - SQLite database for storing photo metadata
5656+- **R2 Storage** - Object storage for hosting images and thumbnails