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.
- 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
- 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
- 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)
- 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
- 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
- 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
- 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
- Node.js: v22.13.0 (use nvm for version management)
- Package Manager: pnpm (recommended)
- Database: PostgreSQL (required for multi-tenancy features)
- 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:
# 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:5173"
- Set up the database:
# 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
Before committing code, ensure quality checks pass:
# Type checking
pnpm run check
# Linting and formatting
pnpm run lint
# Build verification
pnpm run build
# 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
- 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: Standard access to organization data
- Admin: Organization-level administrative privileges
- Super Admin: Platform-wide access (requires @micropyramid.com email)
- All database queries are organization-scoped
- Strict permission validation on all routes
- Audit logging for compliance and tracking
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
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
We welcome contributions of all kinds! See our CONTRIBUTING.md for details on how to get started.
- 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
BottleCRM is open source software licensed as MIT.
Built with โค๏ธ for small businesses everywhere. We believe quality CRM software should be accessible to everyone.