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.
This commit is contained in:
parent
4022f914af
commit
ce02cda571
7 changed files with 38 additions and 348 deletions
1
LICENSE
1
LICENSE
|
|
@ -1,6 +1,7 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2017 MicroPyramid
|
||||
Copyright (c) 2026 RunCode Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
|||
|
|
@ -83,8 +83,7 @@ We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for setup instr
|
|||
## Community
|
||||
|
||||
- **Issues**: [GitHub Issues](https://github.com/django-crm/Django-CRM/issues)
|
||||
- **Twitter**: [@micropyramid](https://twitter.com/micropyramid)
|
||||
- **Commercial Support**: [Contact us](https://micropyramid.com/contact/)
|
||||
- **Commercial support**: [Contact us](https://bottlecrm.io/contact)
|
||||
|
||||
## License
|
||||
|
||||
|
|
@ -92,11 +91,9 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|||
|
||||
## Sponsors
|
||||
|
||||
We are grateful to the sponsors who support BottleCRM's continued development and maintenance.
|
||||
BottleCRM is developed and maintained by [RunCode Inc.](https://runcode.io)
|
||||
|
||||
- [MicroPyramid](https://micropyramid.com/)
|
||||
|
||||
We warmly welcome new sponsors. If you would like to support BottleCRM and help the project grow, please [get in touch](https://micropyramid.com/contact/).
|
||||
We warmly welcome new sponsors. If you would like to support BottleCRM and help the project grow, please [get in touch](https://bottlecrm.io/contact).
|
||||
|
||||
## Contributors
|
||||
|
||||
|
|
|
|||
|
|
@ -4,18 +4,20 @@ build-backend = "hatchling.build"
|
|||
|
||||
[project]
|
||||
name = "django-crm"
|
||||
version = "1.17.0"
|
||||
version = "1.17.1"
|
||||
# The one-line summary PyPI shows under the project title and in search results,
|
||||
# so it carries the terms people actually search for ("open source CRM",
|
||||
# "self-hosted CRM", "Django CRM") and names the modules rather than the
|
||||
# architecture. Published release metadata is immutable, so a change here only
|
||||
# reaches PyPI on the next version bump.
|
||||
description = "Open-source self-hosted CRM with a Django REST API: leads, deals, contacts, invoices and support tickets, multi-tenant by PostgreSQL row-level security."
|
||||
# architecture. It leads with the product name because an unrelated project,
|
||||
# DjangoCRM/django-crm, shares this one's name on GitHub and awesome lists.
|
||||
# Published release metadata is immutable, so a change here only reaches PyPI
|
||||
# on the next version bump.
|
||||
description = "BottleCRM, the open-source self-hosted CRM with a Django REST API: leads, deals, contacts, invoices and support tickets, multi-tenant by PostgreSQL row-level security."
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12"
|
||||
license = { text = "MIT" }
|
||||
authors = [
|
||||
{ name = "MicroPyramid", email = "hello@micropyramid.com" },
|
||||
{ name = "RunCode Inc.", email = "hello@bottlecrm.io" },
|
||||
]
|
||||
keywords = [
|
||||
"django",
|
||||
|
|
|
|||
|
|
@ -695,7 +695,7 @@ wheels = [
|
|||
|
||||
[[package]]
|
||||
name = "django-crm"
|
||||
version = "1.17.0"
|
||||
version = "1.17.1"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "cairocffi" },
|
||||
|
|
|
|||
|
|
@ -1,229 +1,41 @@
|
|||
# BottleCRM: Free and Open Source Customer Relationship Management
|
||||
# BottleCRM web app
|
||||
|
||||
<div align="center">
|
||||
<h3>Powerful, Modern Multi-Tenant CRM for Everyone</h3>
|
||||
</div>
|
||||
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`](../backend), the same API the Flutter app
|
||||
in [`../mobile`](../mobile) uses. For what BottleCRM is, see the [project README](../README.md).
|
||||
|
||||
BottleCRM is a free, open-source Customer Relationship Management solution designed to help small and medium businesses effectively manage their customer relationships. Built with modern technologies and enterprise-grade multi-tenancy, it offers a comprehensive set of features without the enterprise price tag.
|
||||
## Run it locally
|
||||
|
||||
## ✨ Key Highlights
|
||||
|
||||
- **Multi-Tenant Architecture**: Secure organization-based data isolation
|
||||
- **Role-Based Access Control**: Granular permissions for users and admins
|
||||
- **Modern Technology Stack**: Built with SvelteKit 3.x, Svelte 5.x, and PostgreSQL
|
||||
- **Mobile-First Design**: Responsive interface optimized for all devices
|
||||
|
||||
## 🚀 Core Features
|
||||
|
||||
### Sales & Lead Management
|
||||
|
||||
- **Lead Management**: Track and nurture leads from initial contact to conversion
|
||||
- **Account Management**: Maintain detailed records of customer accounts and organizations
|
||||
- **Contact Management**: Store and organize all your customer contact information
|
||||
- **Opportunity Management**: Track deals through your sales pipeline with customizable stages
|
||||
|
||||
### Customer Support
|
||||
|
||||
- **Ticket Management**: Handle customer support tickets and track resolution
|
||||
- **Solution Knowledge Base**: Maintain searchable solutions for common issues
|
||||
- **Multi-Channel Support**: Handle tickets from various origins (email, web, phone)
|
||||
|
||||
### Productivity & Collaboration
|
||||
|
||||
- **Task Management**: Never miss a follow-up with built-in task tracking
|
||||
- **Event Management**: Schedule and manage meetings and activities
|
||||
- **Board Management**: Trello-like kanban boards for project tracking
|
||||
- **Comment System**: Collaborate with team members on records
|
||||
|
||||
### Sales Tools
|
||||
|
||||
- **Quote Management**: Generate professional quotes with line items
|
||||
- **Product Catalog**: Maintain product inventory with pricing
|
||||
- **Sales Pipeline**: Visual opportunity tracking with probability scoring
|
||||
|
||||
### Administrative Features
|
||||
|
||||
- **User Management**: Add team members with appropriate role assignments
|
||||
- **Organization Management**: Multi-tenant structure with data isolation
|
||||
- **Audit Logging**: Complete activity tracking for compliance
|
||||
- **Super Admin Panel**: Platform-wide management for system administrators
|
||||
|
||||
## 🔮 Coming Soon
|
||||
|
||||
- **Invoice Management**: Create, send, and track invoices (in development)
|
||||
- **Email Integration**: Connect your email accounts for seamless communication
|
||||
- **Analytics Dashboard**: Make data-driven decisions with powerful reporting tools
|
||||
- **API Integration**: REST API for third-party integrations
|
||||
|
||||
## 🖥️ Technology Stack
|
||||
|
||||
- **Frontend**: SvelteKit 3.x, Svelte 5.x, TailwindCSS 4.x
|
||||
- **Backend**: Node.js with Prisma ORM
|
||||
- **Database**: PostgreSQL (recommended) with multi-tenant schema
|
||||
- **Authentication**: Session-based authentication with organization membership
|
||||
- **Icons**: Lucide Svelte icon library
|
||||
- **Validation**: Zod for type-safe form validation
|
||||
|
||||
## 🚀 Getting Started
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- **Node.js**: v22.13.0 (use nvm for version management)
|
||||
- **Package Manager**: pnpm (recommended)
|
||||
- **Database**: PostgreSQL (required for multi-tenancy features)
|
||||
|
||||
### Installation
|
||||
|
||||
1. **Clone the repository:**
|
||||
|
||||
```bash
|
||||
git clone https://github.com/micropyramid/svelte-crm.git
|
||||
cd svelte-crm
|
||||
```
|
||||
|
||||
2. **Set up Node.js version:**
|
||||
|
||||
```bash
|
||||
nvm use 22.13.0
|
||||
```
|
||||
|
||||
3. **Install dependencies:**
|
||||
Start the backend first (see [Development setup](../docs/contributing/development-setup.md)), then:
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
4. **Configure environment variables:**
|
||||
Create a `.env` file based on the following template:
|
||||
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.
|
||||
|
||||
```env
|
||||
# Database Configuration
|
||||
DATABASE_URL="postgresql://postgres:password@localhost:5432/bottlecrm?schema=public"
|
||||
|
||||
# JWT Secret (required for authentication)
|
||||
# Generate a secure secret using openssl:
|
||||
# openssl rand -base64 32
|
||||
JWT_SECRET="<your-generated-secret>"
|
||||
|
||||
# Google OAuth (Optional)
|
||||
GOOGLE_CLIENT_ID=""
|
||||
GOOGLE_CLIENT_SECRET=""
|
||||
GOOGLE_LOGIN_DOMAIN="http://localhost:5181"
|
||||
```
|
||||
|
||||
5. **Set up the database:**
|
||||
## Checks
|
||||
|
||||
```bash
|
||||
# Generate Prisma client
|
||||
npx prisma generate
|
||||
|
||||
# Run database migrations
|
||||
npx prisma migrate dev
|
||||
|
||||
# (Optional) Open Prisma Studio to view data
|
||||
npx prisma studio
|
||||
pnpm run check # svelte-check type checking
|
||||
pnpm run lint # prettier + eslint
|
||||
pnpm run test # vitest
|
||||
pnpm run build # production build (adapter-node)
|
||||
```
|
||||
|
||||
6. **Start the development server:**
|
||||
## Access control
|
||||
|
||||
```bash
|
||||
pnpm run dev
|
||||
```
|
||||
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.
|
||||
|
||||
### Development Workflow
|
||||
## More
|
||||
|
||||
Before committing code, ensure quality checks pass:
|
||||
|
||||
```bash
|
||||
# Type checking
|
||||
pnpm run check
|
||||
|
||||
# Linting and formatting
|
||||
pnpm run lint
|
||||
|
||||
# Build verification
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
### Production Deployment
|
||||
|
||||
```bash
|
||||
# Set Node.js version
|
||||
nvm use 22.13.0
|
||||
|
||||
# Generate Prisma client
|
||||
npx prisma generate
|
||||
|
||||
# Run production migrations
|
||||
npx prisma migrate deploy
|
||||
|
||||
# Build application
|
||||
pnpm run build
|
||||
|
||||
# Start production server
|
||||
pnpm run preview
|
||||
```
|
||||
|
||||
## 🏗️ Architecture & Security
|
||||
|
||||
### Multi-Tenant Design
|
||||
|
||||
- **Organization Isolation**: Complete data separation between organizations
|
||||
- **Role-Based Access**: Users can have different roles across organizations
|
||||
- **Session Management**: Secure cookie-based authentication with organization context
|
||||
|
||||
### User Roles
|
||||
|
||||
- **User**: Standard access to organization data
|
||||
- **Admin**: Organization-level administrative privileges
|
||||
- **Super Admin**: Platform-wide access (requires @micropyramid.com email)
|
||||
|
||||
### Data Security
|
||||
|
||||
- All database queries are organization-scoped
|
||||
- Strict permission validation on all routes
|
||||
- Audit logging for compliance and tracking
|
||||
|
||||
## 📁 Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── routes/
|
||||
│ ├── (site)/ # Public marketing pages
|
||||
│ ├── (no-layout)/ # Authentication pages
|
||||
│ ├── (app)/ # Main CRM application
|
||||
│ └── (admin)/ # Super admin panel
|
||||
├── lib/
|
||||
│ ├── stores/ # Svelte stores for state management
|
||||
│ ├── data/ # Static data and configurations
|
||||
│ └── utils/ # Utility functions
|
||||
└── hooks.server.js # Authentication and route protection
|
||||
```
|
||||
|
||||
## 💬 Community and Feedback
|
||||
|
||||
We love to hear from our users! Please share your feedback, report bugs, or suggest new features:
|
||||
|
||||
- **Issues**: Open an issue on GitHub for bugs and feature requests
|
||||
- **Discussions**: Join community discussions for general questions
|
||||
- **Pull Requests**: Contribute code improvements and new features
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
We welcome contributions of all kinds! See our [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to get started.
|
||||
|
||||
### Development Guidelines
|
||||
|
||||
- Follow existing code patterns and conventions
|
||||
- Ensure all forms have proper accessibility (labels associated with controls)
|
||||
- Never use `$app` imports from SvelteKit (see packaging best practices)
|
||||
- Always filter database queries by organization membership
|
||||
- Add appropriate error handling and validation
|
||||
|
||||
## 📄 License
|
||||
|
||||
BottleCRM is open source software [licensed as MIT](LICENSE).
|
||||
|
||||
---
|
||||
|
||||
_Built with ❤️ for small businesses everywhere. We believe quality CRM software should be accessible to everyone._
|
||||
- [Manual setup](../docs/getting-started/manual-setup.md) and [Docker quick start](../docs/getting-started/docker-quick-start.md)
|
||||
- [Contributing](../CONTRIBUTING.md)
|
||||
- License: [MIT](../LICENSE)
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@
|
|||
<div class="v2-auth-foot">
|
||||
<a href="https://bottlecrm.io/privacy-policy">Privacy</a>
|
||||
<span class="v2-auth-dot"></span>
|
||||
<a href="https://bottlecrm.io/terms">Terms</a>
|
||||
<a href="https://bottlecrm.io/terms-of-service">Terms</a>
|
||||
<span class="v2-auth-dot"></span>
|
||||
<a href="https://github.com/django-crm/Django-CRM" target="_blank" rel="noopener">GitHub</a>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,122 +0,0 @@
|
|||
{
|
||||
"version": "v1.0.0",
|
||||
|
||||
"entity": {
|
||||
"type": "organisation",
|
||||
"role": "owner",
|
||||
"name": "MicroPyramid Informatics Private Limited",
|
||||
"email": "hello@micropyramid.com",
|
||||
"phone": "+91-9959166266",
|
||||
"description": "MicroPyramid is a technology company specializing in web development, mobile applications, and SaaS solutions. We build modern, scalable software solutions for businesses of all sizes, with expertise in Python, Django, React, and other cutting-edge technologies.",
|
||||
"webpageUrl": {
|
||||
"url": "https://micropyramid.com",
|
||||
"wellKnown": ""
|
||||
}
|
||||
},
|
||||
|
||||
"projects": [
|
||||
{
|
||||
"guid": "startup-crm",
|
||||
"name": "BottleCRM",
|
||||
"description": "BottleCRM is a dynamic, SaaS CRM platform designed to streamline the entire CRM needs of startups and enterprises. Built with modern web technologies including SvelteKit, Svelte 5, and Prisma, it offers a seamless experience for users through robust role-based access control (RBAC). Each user role is equipped with tailored functionalities to enhance efficiency, engagement, and management, ensuring a streamlined and secure business process.",
|
||||
"webpageUrl": {
|
||||
"url": "https://bottlecrm.io",
|
||||
"wellKnown": ""
|
||||
},
|
||||
"repositoryUrl": {
|
||||
"url": "https://github.com/django-crm/Django-CRM",
|
||||
"wellKnown": ""
|
||||
},
|
||||
"licenses": ["spdx:MIT"],
|
||||
"tags": [
|
||||
"crm",
|
||||
"saas",
|
||||
"business-tools",
|
||||
"customer-management",
|
||||
"sales",
|
||||
"svelte",
|
||||
"typescript",
|
||||
"web-application",
|
||||
"enterprise",
|
||||
"startup"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
"funding": {
|
||||
"channels": [
|
||||
{
|
||||
"guid": "paypal",
|
||||
"type": "payment-provider",
|
||||
"address": "paypal@micropyramid.com",
|
||||
"description": "PayPal payments for international transactions"
|
||||
},
|
||||
{
|
||||
"guid": "bank-transfer",
|
||||
"type": "bank",
|
||||
"address": "Contact hello@micropyramid.com for bank details",
|
||||
"description": "Direct bank transfers for larger contributions"
|
||||
},
|
||||
{
|
||||
"guid": "github-sponsors",
|
||||
"type": "payment-provider",
|
||||
"address": "https://github.com/sponsors/micropyramid",
|
||||
"description": "GitHub Sponsors for recurring monthly support"
|
||||
}
|
||||
],
|
||||
|
||||
"plans": [
|
||||
{
|
||||
"guid": "monthly-supporter",
|
||||
"status": "active",
|
||||
"name": "Monthly Supporter",
|
||||
"description": "Monthly support to help maintain and improve BottleCRM with regular updates, bug fixes, and new features.",
|
||||
"amount": 25,
|
||||
"currency": "USD",
|
||||
"frequency": "monthly",
|
||||
"channels": ["paypal", "github-sponsors"]
|
||||
},
|
||||
{
|
||||
"guid": "yearly-backer",
|
||||
"status": "active",
|
||||
"name": "Yearly Backer",
|
||||
"description": "Annual support for sustained development and maintenance of BottleCRM platform.",
|
||||
"amount": 250,
|
||||
"currency": "USD",
|
||||
"frequency": "yearly",
|
||||
"channels": ["paypal", "bank-transfer", "github-sponsors"]
|
||||
},
|
||||
{
|
||||
"guid": "enterprise-sponsor",
|
||||
"status": "active",
|
||||
"name": "Enterprise Sponsor",
|
||||
"description": "Enterprise-level sponsorship for priority support, custom features, and dedicated development resources.",
|
||||
"amount": 1000,
|
||||
"currency": "USD",
|
||||
"frequency": "monthly",
|
||||
"channels": ["bank-transfer", "paypal"]
|
||||
},
|
||||
{
|
||||
"guid": "one-time-donation",
|
||||
"status": "active",
|
||||
"name": "One-time Contribution",
|
||||
"description": "One-time donation to support BottleCRM development. Any amount is appreciated.",
|
||||
"amount": 0,
|
||||
"currency": "USD",
|
||||
"frequency": "one-time",
|
||||
"channels": ["paypal", "github-sponsors"]
|
||||
}
|
||||
],
|
||||
|
||||
"history": [
|
||||
{
|
||||
"year": 2025,
|
||||
"income": 0,
|
||||
"expenses": 5000,
|
||||
"taxes": 0,
|
||||
"currency": "USD",
|
||||
"description": "Initial development phase with investment in infrastructure, development tools, and hosting."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue