A minimal, efficient customer relationship manager built with Rust, Dioxus 0.7, and Tailwind CSS v4.
"Cut the noise. Maximize efficiency."
DCRM reimagines what a CRM should be. Instead of a bloated behemoth with features you'll never use, DCRM provides a focused, minimal toolset that covers what actually matters:
- Contacts - Your people, organized
- Deals - Your pipeline, visualized
- Activities - Your interactions, tracked
- Dashboard - Your KPIs, at a glance
That's it. No marketing automation. No social media integrations. No AI-powered-blockchain-synergy. Just the essentials, done well.
- Full contact profiles with company, position, and tags
- Real-time fuzzy search across all contacts
- Activity history per contact
- Deal associations and tracking
- Custom notes and metadata
- Visual Kanban-style board with 6 stages (Lead → Qualified → Proposal → Negotiation → Won/Lost)
- Drag-and-drop stage progression
- Pipeline value tracking with currency formatting
- Weighted probability forecasting
- Deal-to-contact associations
- Multiple activity types: Tasks, Calls, Emails, Meetings, Notes
- Filter by type or completion status
- Link activities to contacts and deals
- Quick task completion toggle
- Due date tracking
- Outcome recording
- Real-time pipeline overview
- Recent activity feed
- Pending tasks list
- Key metrics at a glance
| Technology | Purpose | Version |
|---|---|---|
| Rust | Memory-safe systems language | 2024 edition |
| Dioxus | React-like UI framework for Rust | 0.7.1 |
| Tailwind CSS | Utility-first CSS framework | v4 |
| Tokio | Async runtime | 1.48+ |
| Serde | Serialization/deserialization | 1.0+ |
| Chrono | Date and time handling | 0.4+ |
- Frontend: Dioxus with WebView renderer (native desktop)
- Styling: Tailwind CSS v4 with automatic DX integration
- State: Reactive signals with context providers
- Storage: Local JSON file persistence
- Search: Fuzzy matching for real-time filtering
- Rust (stable toolchain, 2024 edition)
- Dioxus CLI
# Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Install Dioxus CLI
cargo install dioxus-cli# Ubuntu/Debian
sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libappindicator3-dev
# Fedora
sudo dnf install gtk3-devel webkit2gtk4.1-devel libappindicator-gtk3-devel
# Arch
sudo pacman -S webkit2gtk gtk3# No additional dependencies required
# WebKit is included with macOS# No additional dependencies required
# WebView2 is included with Windows 10+# Clone the repository
git clone https://github.com/dirmacs/dcrm.git
cd dcrm
# Development mode with hot-reload
# (DX automatically handles Tailwind CSS compilation)
dx serve
# Build for release
dx build --release
# Run the release build
./dist/dcrm # or dcrm.exe on Windowsdcrm/
├── src/
│ ├── main.rs # Application entry point & routing
│ ├── components/
│ │ ├── mod.rs # Component exports
│ │ ├── modals.rs # Modal dialogs (contact, deal, activity forms)
│ │ ├── sidebar.rs # Navigation sidebar
│ │ └── topbar.rs # Top navigation bar with search
│ ├── models/
│ │ └── mod.rs # Data models (Contact, Deal, Activity, AppData)
│ ├── pages/
│ │ ├── mod.rs # Page exports
│ │ ├── dashboard.rs # Dashboard page with metrics
│ │ ├── contacts.rs # Contact list and management
│ │ ├── deals.rs # Deal pipeline Kanban board
│ │ └── activities.rs # Activity list and filtering
│ └── state/
│ └── mod.rs # Global state management (View, Modal enums)
├── assets/
│ ├── dashboard.png # Screenshot for README
│ └── tailwind.css # Generated by DX (gitignored)
├── tailwind.css # Tailwind v4 source (DX auto-detected)
├── Cargo.toml # Rust dependencies
├── Dioxus.toml # Dioxus configuration
├── LICENSE # MIT License
└── README.md # This file
- Total Lines: ~2,800 lines of Rust
- Components: 4 reusable UI components
- Pages: 4 main views
- Models: 3 core data structures (Contact, Deal, Activity)
{
id: String, // UUID
first_name: String,
last_name: String,
email: String,
phone: Option<String>,
company: Option<String>,
position: Option<String>,
tags: Vec<String>,
notes: Option<String>,
created_at: DateTime<Utc>,
updated_at: DateTime<Utc>
}{
id: String, // UUID
contact_id: String, // Reference to Contact
title: String,
value: f64,
stage: DealStage, // Lead | Qualified | Proposal | Negotiation | Won | Lost
probability: u8, // 0-100%
expected_close: DateTime<Utc>,
notes: Option<String>,
created_at: DateTime<Utc>,
updated_at: DateTime<Utc>
}{
id: String, // UUID
contact_id: Option<String>,
deal_id: Option<String>,
activity_type: ActivityType, // Task | Call | Email | Meeting | Note
subject: String,
description: Option<String>,
due_date: Option<DateTime<Utc>>,
completed: bool,
completed_at: Option<DateTime<Utc>>,
outcome: Option<String>,
created_at: DateTime<Utc>
}DCRM stores all data locally in a single JSON file for simplicity and portability.
- Linux:
~/.local/share/dcrm/data.json - macOS:
~/Library/Application Support/dcrm/data.json - Windows:
%APPDATA%\dcrm\data.json
{
"contacts": [...],
"deals": [...],
"activities": [...]
}On first launch, DCRM creates sample data to demonstrate features. This includes:
- 5 sample contacts with various companies
- 6 sample deals across different pipeline stages
- 10 sample activities (tasks, calls, meetings)
DCRM uses Tailwind CSS v4 with automatic Dioxus CLI integration.
- DX CLI auto-detects
tailwind.cssat the project root - Downloads Tailwind CLI automatically (first run only)
- Scans Rust source files for Tailwind classes
- Generates
assets/tailwind.cssautomatically - Watches for changes in development mode
@theme {
/* Dark Mode Palette */
--color-dark-900: #0a0a0b; /* Deep black background */
--color-dark-800: #111113; /* Panel background */
--color-dark-700: #18181b; /* Card background */
/* Accent Colors */
--color-accent: #00d4ff; /* Electric cyan */
--color-accent-dim: #00a8cc; /* Dimmed cyan */
/* Typography */
--font-mono: "JetBrains Mono", monospace;
--font-sans: "Inter", system-ui, sans-serif;
}DCRM uses an industrial minimal design language inspired by modern developer tools.
| Color | Hex | Usage |
|---|---|---|
| Deep Black | #0a0a0b |
Main background |
| Dark Gray | #111113 |
Panel background |
| Mid Gray | #18181b |
Card background |
| Electric Cyan | #00d4ff |
Primary accent, CTAs |
| Zinc Gray | #3f3f46 |
Borders, dividers |
- UI Text: Inter (300, 400, 500, 600, 700)
- Data/Code: JetBrains Mono (400, 500, 600, 700)
- Base Size: 14px
- Line Height: 1.5
- Buttons: Minimal with hover states, accent color for primary actions
- Cards: Subtle borders, dark backgrounds, hover elevation
- Forms: Inline validation, clear focus states
- Modals: Centered overlay with backdrop blur
- Sidebar: Fixed navigation with active state indicators
| Shortcut | Action |
|---|---|
Ctrl/⌘ + K |
Quick search contacts |
Escape |
Close modal or clear search |
Enter |
Submit active form |
DX provides instant hot-reload during development:
dx serve
# Make changes to Rust code or Tailwind classes
# App updates automatically without losing stateRun with console logging:
RUST_LOG=debug dx serve- Formatting:
cargo fmt - Linting:
cargo clippy - Testing:
cargo test
- Data import/export (CSV, JSON)
- Full keyboard navigation
- Contact merging/deduplication
- Bulk operations (tags, delete)
- Activity templates
- Dark/Light theme toggle
- Multiple deal pipelines
- Email integration (IMAP/SMTP)
- Calendar view for activities
- Undo/Redo system
- Advanced filtering and sorting
- Cross-platform sync (optional cloud)
- Mobile companion app
- API/webhook integrations
- Custom fields and workflows
- Reports and analytics
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please ensure your code:
- Follows Rust style guidelines (
cargo fmt,cargo clippy) - Includes appropriate documentation
- Maintains the minimal philosophy of the project
MIT License - see LICENSE for details.
Copyright (c) 2025 Dirmacs
- Dioxus Team - For the excellent React-like Rust framework
- Tailwind Labs - For the utility-first CSS framework
- Rust Community - For the amazing ecosystem
Built with ❤️ and ⚡ by Dirmacs
DCRM: Because your CRM should be a tool, not a second job.
