Rebrand to Pounce, the Open Source Kanban Solution
- Rename project from "kanban" to "pounce" - Update landing page: "Pounce on your tasks" - Replace navbar icon with cat paw - Update seed hostname to pounce.catrenelle.com - Write proper README with setup instructions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,42 +1,50 @@
|
|||||||
# sv
|
# Pounce
|
||||||
|
|
||||||
Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
|
An open source, self-hosted, multi-tenant kanban board.
|
||||||
|
|
||||||
## Creating a project
|
## Tech Stack
|
||||||
|
|
||||||
If you're seeing this, you've probably already done this step. Congrats!
|
- **Frontend**: SvelteKit + Svelte 5 + Tailwind CSS v4
|
||||||
|
- **Backend**: SvelteKit API routes + Prisma ORM
|
||||||
```sh
|
- **Database**: PostgreSQL 16
|
||||||
# create a new project
|
- **Real-time**: Socket.IO
|
||||||
npx sv create my-app
|
- **Auth**: Email/password with bcrypt + session cookies
|
||||||
```
|
- **Deployment**: Docker Compose + Portainer
|
||||||
|
|
||||||
To recreate this project with the same configuration:
|
## Getting Started
|
||||||
|
|
||||||
```sh
|
### Prerequisites
|
||||||
# recreate this project
|
|
||||||
npx sv create --template minimal --types ts --no-install .
|
- Node.js 22+
|
||||||
```
|
- PostgreSQL 16+
|
||||||
|
|
||||||
## Developing
|
### Development
|
||||||
|
|
||||||
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
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
|
npm run dev
|
||||||
|
|
||||||
# or start the server and open the app in a new browser tab
|
|
||||||
npm run dev -- --open
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Building
|
### Docker
|
||||||
|
|
||||||
To create a production version of your app:
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
npm run build
|
docker compose up
|
||||||
```
|
```
|
||||||
|
|
||||||
You can preview the production build with `npm run preview`.
|
The app will be available at `http://localhost:3000`.
|
||||||
|
|
||||||
> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
|
### 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
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "kanban",
|
"name": "pounce",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ async function main() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Map hostnames to default tenant
|
// Map hostnames to default tenant
|
||||||
const hostnames = ['localhost', '127.0.0.1', 'kanban.catrenelle.com'];
|
const hostnames = ['localhost', '127.0.0.1', 'pounce.catrenelle.com'];
|
||||||
for (const hostname of hostnames) {
|
for (const hostname of hostnames) {
|
||||||
await prisma.tenantHostname.upsert({
|
await prisma.tenantHostname.upsert({
|
||||||
where: { hostname },
|
where: { hostname },
|
||||||
|
|||||||
@@ -10,13 +10,13 @@
|
|||||||
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
|
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
|
||||||
<div class="flex h-14 items-center justify-between">
|
<div class="flex h-14 items-center justify-between">
|
||||||
<a href="/" class="flex items-center gap-2 text-white font-bold text-lg">
|
<a href="/" class="flex items-center gap-2 text-white font-bold text-lg">
|
||||||
<svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
<svg class="w-6 h-6" viewBox="0 0 24 24" fill="currentColor">
|
||||||
<rect x="3" y="3" width="7" height="7" rx="1" />
|
<circle cx="7" cy="5" r="2.2" />
|
||||||
<rect x="14" y="3" width="7" height="4" rx="1" />
|
<circle cx="12" cy="3.5" r="2.2" />
|
||||||
<rect x="14" y="10" width="7" height="7" rx="1" />
|
<circle cx="17" cy="5" r="2.2" />
|
||||||
<rect x="3" y="13" width="7" height="8" rx="1" />
|
<ellipse cx="12" cy="14" rx="6" ry="7" />
|
||||||
</svg>
|
</svg>
|
||||||
{data.tenant?.name ?? 'Kanban'}
|
{data.tenant?.name ?? 'Pounce'}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div class="flex items-center gap-3">
|
<div class="flex items-center gap-3">
|
||||||
|
|||||||
@@ -3,13 +3,13 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
<title>Kanban Board</title>
|
<title>Pounce</title>
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
<div class="flex flex-col items-center justify-center px-4 py-20">
|
<div class="flex flex-col items-center justify-center px-4 py-20">
|
||||||
<h1 class="text-4xl font-bold text-gray-900 mb-4">Organize your work</h1>
|
<h1 class="text-4xl font-bold text-gray-900 mb-4">Pounce on your tasks</h1>
|
||||||
<p class="text-lg text-gray-600 mb-8 text-center max-w-xl">
|
<p class="text-lg text-gray-600 mb-8 text-center max-w-xl">
|
||||||
A collaborative Kanban board for your team. Create boards, organize tasks, and track progress in real-time.
|
An open source kanban board for your team. Create boards, organize tasks, and track progress in real-time.
|
||||||
</p>
|
</p>
|
||||||
<div class="flex gap-3">
|
<div class="flex gap-3">
|
||||||
<a
|
<a
|
||||||
|
|||||||
Reference in New Issue
Block a user