BottleCRM: Free and Open Source Customer Relationship Management
Powerful, Modern Multi-Tenant CRM for Everyone
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.
⨠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 2.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
- Case Management: Handle customer support cases and track resolution
- Solution Knowledge Base: Maintain searchable solutions for common issues
- Multi-Channel Support: Handle cases 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
- 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 2.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
Clone the repository:
git clone https://github.com/micropyramid/svelte-crm.git
cd svelte-crm
Set up Node.js version:
nvm use 22.13.0
Install dependencies:
pnpm install
Configure environment variables:
Create a .env
file based on the following template:
```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=""
Google OAuth (Optional)
GOOGLE_CLIENT_ID=""
GOOGLE_CLIENT_SECRET=""
GOOGLE_LOGIN_DOMAIN="http://localhost:5173"
5. **Set up the database:**
```bash
# Generate Prisma client
npx prisma generate
# Run database migrations
npx prisma migrate dev
# (Optional) Open Prisma Studio to view data
npx prisma studio
- Start the development server:
pnpm run dev
Development Workflow
Before committing code, ensure quality checks pass:
# Type checking
pnpm run check
# Linting and formatting
pnpm run lint
# Build verification
pnpm run build
Production Deployment
# 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 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.
Built with ā¤ļø for small businesses everywhere. We believe quality CRM software should be accessible to everyone.