7559102479c02ff8058848526e505a5b4352881e
- Add dark mode with theme toggle, localStorage/cookie persistence, anti-FOUC script - Add toast notification system with auto-dismiss and color-coded types - Add api() fetch wrapper with auto JSON, X-Socket-ID, and error toasts - Add keyboard shortcuts (/ search, b boards, ? help, n new card, Esc close) - Add error page with status code and navigation - Add focus trap utility and apply to CardModal with full ARIA dialog support - Add hamburger menu for mobile, responsive columns, fullscreen card modal on mobile - Add aria-labels to icon-only buttons and DnD live region - Migrate all ~30 fetch calls to api() wrapper with success toasts - Add dark: Tailwind variants to all 20+ pages and components Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Pounce
An open source, self-hosted, multi-tenant kanban board.
Tech Stack
- Frontend: SvelteKit + Svelte 5 + Tailwind CSS v4
- Backend: SvelteKit API routes + Prisma ORM
- Database: PostgreSQL 16
- Real-time: Socket.IO
- Auth: Email/password with bcrypt + session cookies
- Deployment: Docker Compose + Portainer
Getting Started
Prerequisites
- Node.js 22+
- PostgreSQL 16+
Development
npm install
cp .env.example .env # edit DATABASE_URL as needed
npm run db:push # sync schema to database
npm run db:seed # seed default tenant + admin user
npm run dev
Docker
docker compose up
The app will be available at http://localhost:3000.
Default Credentials
- Email: admin@example.com
- Password: admin123
Multi-Tenancy
Pounce supports multiple tenants on a single instance. Each tenant is identified by hostname — map additional domains via the tenant_hostnames table.
License
MIT
Description
Languages
Svelte
57.5%
TypeScript
40%
JavaScript
1.4%
CSS
0.5%
Shell
0.3%
Other
0.3%