bottleneckcrm/frontend
Ashwin ce02cda571 Update license and project details to reflect new ownership and version increment
- 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.
2026-10-20 14:15:21 +05:30
..
src Update license and project details to reflect new ownership and version increment 2026-10-20 14:15:21 +05:30
static Update license and project details to reflect new ownership and version increment 2026-10-20 14:15:21 +05:30
test/stubs Refactor imports to use new aliasing convention and update environment variable handling 2026-10-15 20:38:58 +05:30
.dockerignore feat: add email templates for assigned contacts, leads, and opportunities 2026-08-12 20:19:53 +05:30
.env.example Add ticket approval panel tests and enhance ticket board functionality 2026-09-26 23:33:20 +05:30
.gitignore feat: integrate Sentry for error monitoring in the frontend and remove various old linting/formatting configurations. 2026-02-20 17:49:19 +05:30
.npmrc revamp and upgrade to modern stack (#562) 2025-11-29 10:07:50 +05:30
.prettierignore chore: clean up code formatting and improve readability across multiple files 2026-08-07 22:42:57 +05:30
.prettierrc feat: Implement enterprise constraints, update models, serializers, views, and enhance UI components across the application. 2025-12-09 16:26:17 +05:30
components.json feat: Implement enterprise constraints, update models, serializers, views, and enhance UI components across the application. 2025-12-09 16:26:17 +05:30
Dockerfile Refactor imports to use new aliasing convention and update environment variable handling 2026-10-15 20:38:58 +05:30
eslint.config.js Refactor imports to use new aliasing convention and update environment variable handling 2026-10-15 20:38:58 +05:30
jsconfig.json Refactor imports to use new aliasing convention and update environment variable handling 2026-10-15 20:38:58 +05:30
package.json Refactor imports to use new aliasing convention and update environment variable handling 2026-10-15 20:38:58 +05:30
pnpm-lock.yaml Refactor imports to use new aliasing convention and update environment variable handling 2026-10-15 20:38:58 +05:30
pnpm-workspace.yaml Refactor imports to use new aliasing convention and update environment variable handling 2026-10-15 20:38:58 +05:30
README.md Update license and project details to reflect new ownership and version increment 2026-10-20 14:15:21 +05:30
tailwind.config.ts feat: Implement enterprise constraints, update models, serializers, views, and enhance UI components across the application. 2025-12-09 16:26:17 +05:30
vite.config.js Refactor imports to use new aliasing convention and update environment variable handling 2026-10-15 20:38:58 +05:30
vitest.config.js Refactor imports to use new aliasing convention and update environment variable handling 2026-10-15 20:38:58 +05:30

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