A mobile-first photo-sharing social media app built with SvelteKit and PocketBase.
- Create posts with up to 10 images, a caption, and a location
- Image carousel with swipe navigation and dot indicators
- Like posts (with double-tap heart animation)
- Follow/unfollow users — private accounts require approval
- Activity feed for likes and follow requests/notifications
- Search users by username or name
- User profiles with followers/following lists
- SvelteKit (SPA mode) + Svelte 5 Runes
- PocketBase — backend, database, file storage, and auth
- Tailwind CSS v4 + shadcn-svelte
- TypeScript
- pocketbase-typegen for auto-generated types
-
Install dependencies and the PocketBase binary:
pnpm install pnpm run install:pocketbase
-
Start the dev server (SvelteKit + PocketBase run in parallel):
pnpm run dev
The app is available at http://localhost:5173 and the PocketBase admin panel at http://localhost:8090/_/.
pnpm run check # TypeScript type check
pnpm run lint # Prettier + ESLint
pnpm run format # Auto-format with Prettier
pnpm run typegen # Regenerate PocketBase types (run after schema changes)The project includes a Dockerfile that builds the SvelteKit app and serves it through PocketBase on port 8080. Mount a volume to /pb/pb_data to persist data.