- Updated LICENSE file to include copyright for RunCode Inc. (2026). - Revised README.md to change commercial support contact and sponsorship details to RunCode Inc. - Incremented version number in pyproject.toml and uv.lock from 1.17.0 to 1.17.1. - Removed outdated funding.json file and updated frontend README for clarity on project structure and setup. - Adjusted login page links for terms of service. |
||
|---|---|---|
| .. | ||
| src | ||
| static | ||
| test/stubs | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .npmrc | ||
| .prettierignore | ||
| .prettierrc | ||
| components.json | ||
| Dockerfile | ||
| eslint.config.js | ||
| jsconfig.json | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| tailwind.config.ts | ||
| vite.config.js | ||
| vitest.config.js | ||
BottleCRM web app
The SvelteKit (Svelte 5) web client for BottleCRM. It has no database of its own: every page reads
and writes through the Django REST API in ../backend, the same API the Flutter app
in ../mobile uses. For what BottleCRM is, see the project README.
Run it locally
Start the backend first (see Development setup), then:
cd frontend
cp .env.example .env # PUBLIC_DJANGO_API_URL points at the backend, http://localhost:8000 by default
pnpm install
pnpm run dev # http://localhost:5181
The browser calls the API cross-origin, so the backend's CORS_ALLOWED_ORIGINS must include
http://localhost:5181. A missing entry shows up as a CORS error, not a 404.
Checks
pnpm run check # svelte-check type checking
pnpm run lint # prettier + eslint
pnpm run test # vitest
pnpm run build # production build (adapter-node)
Access control
Org membership and role (USER or ADMIN) come from the server, and the backend is the only place
they are enforced; anything the UI hides is a convenience, not a control. Platform super admin is
the is_superuser flag on the user record, granted explicitly and never derived from an email
address.
More
- Manual setup and Docker quick start
- Contributing
- License: MIT