Listoxi is a modern, collaborative shopping and task list application designed with an offline-first architecture and real-time synchronization.
Built with Svelte 5 (Runes), SvelteKit 2, Dexie.js for local in-browser persistence, and PocketBase as the authentication and synchronization backend.
- 📴 Offline-First Architecture: Work seamlessly without an internet connection. Data is stored locally via IndexedDB with Dexie.js.
- 🔄 Bidirectional Synchronization: Automatic synchronization and conflict resolution with PocketBase as soon as network connectivity is restored.
- 👥 Shared Lists: Share shopping lists and collaborate with other users via email invitations.
- 🎨 Modern Interface & WebAwesome: Clean, accessible UI components powered by
@awesome.me/webawesome. - 🌓 Dark / Light Mode: Integrated support for toggling visual themes.
- 🏷️ Emoji Customization: Personalize and quickly recognize lists using custom emoji tags.
- 📦 PWA / Service Worker: Configured for rapid, reliable progressive web app installation across mobile and desktop devices.
- Frontend: Svelte 5 (using modern Runes:
$state,$derived,$effect,$props) - Meta-framework: SvelteKit 2 configured with
@sveltejs/adapter-static - Language: TypeScript
- Local Database (Offline): Dexie.js (IndexedDB)
- Backend & Auth: PocketBase
- Component Library: WebAwesome (
@awesome.me/webawesome) - Bundler: Vite
- Package Manager: pnpm
- Containerization: Docker & Docker Compose (Nginx + PocketBase)
- Node.js (v20+ recommended)
- pnpm (recommended via Corepack:
corepack enable && corepack prepare pnpm@latest --activate) - A running PocketBase instance (local or remote)
git clone https://github.com/esaramago/listoxi.git
cd listoxipnpm installCopy .env.example to create .env:
cp .env.example .envEdit .env as required:
# URL of your PocketBase instance (e.g. https://pb.listoxi.com or http://localhost:8090)
PUBLIC_POCKETBASE_URL=http://localhost:8090
ENV=developmentpnpm run devThe application will be available at http://localhost:5173.
This repository is private and/or governed by the terms specified by the repository owner.