diff --git a/README.md b/README.md index 210fcbc..80611bb 100644 --- a/README.md +++ b/README.md @@ -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! - -```sh -# create a new project -npx sv create my-app -``` - -To recreate this project with the same configuration: - -```sh -# recreate this project -npx sv create --template minimal --types ts --no-install . -``` - -## Developing - -Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: +- **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 ```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 - -# or start the server and open the app in a new browser tab -npm run dev -- --open ``` -## Building - -To create a production version of your app: +### Docker ```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 diff --git a/package.json b/package.json index 819ae54..2c9439d 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "kanban", + "name": "pounce", "private": true, "version": "0.1.0", "type": "module", diff --git a/prisma/seed.ts b/prisma/seed.ts index 14062a7..b0f9707 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -17,7 +17,7 @@ async function main() { }); // 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) { await prisma.tenantHostname.upsert({ where: { hostname }, diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index cf2a31f..813ab03 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -10,13 +10,13 @@