======================
DaybydayCRM is an everyday customer relationship management system (CRM) to help you keep track of customers, tasks, appointments, invoices, payments, documents, and other daily workflows. The CRM is available as an open-source, self-hosted platform and as a hosted CRM system on daybydaycrm.com.
Try a demo version of DaybydayCRM at:
If you benefit from or like using DaybydayCRM, please consider helping drive the future development of the project by:
- Starring the project. β
- Creating a pull request. π§
- Donating/Sponsoring today. π
- Considering the hosted version of DaybydayCRM. βοΈ
The project continues to ship features, releases, support, and fixes through community and sponsor support.
- Tasks and leads management
- Invoice management
- Time registration
- User absence and vacation registration
- Client and user appointments
- Role and permission management
- Global search
- Client overview
- Uploading documents and tracking client files
- And much more; see daybydaycrm.com for a broader feature overview
- PHP 8.3+
- Laravel 12
- MySQL/MariaDB
- Redis/queue support
- Blade + Vue 2 + Vite
- PHPUnit, Dusk, and Playwright
- Docker Compose and Makefile-driven workflows
For help getting started, take a look at the wiki first:
make up
make dsh
make setupcomposer install
yarn install
cp .env.example .env
php artisan key:generate
php artisan migrate:fresh --seed
yarn run build
composer devmake testβ run PHPUnit with stop-on-failure behaviormake test-filter f=SomeTestβ run a filtered PHPUnit subsetmake test-failβ run PHPUnit, stop on first failuremake paratestβ run tests in parallel
make e2e-installβ install Playwright and browser dependenciesmake e2e-testβ run all Playwright e2e testsmake e2e-test STOP_ON_FAILURE=trueβ run all tests, stop on first failuremake e2e-test-one E2E_SPEC=tests/e2e/auth/auth.spec.jsβ run a single spec filemake e2e-test-one E2E_SPEC=tests/e2e/auth/auth.spec.js STOP_ON_FAILURE=trueβ run single spec, stop on failuremake e2e-failβ run Playwright tests, stop on first failuremake e2e-listβ list all discovered Playwright testsnpm run test:e2eβ run e2e tests directly via npmnpm run test:e2e:stop-on-failureβ run e2e tests, stop on first failure
make clearβ clear Laravel cachesmake dmfsβ fresh migrate/seed inside Dockermake dseedβ seed demo and dummy data inside Docker
git ls-files '*.php' | xargs -n1 php -lβ minimum required PHP syntax lint before push/PR
AGENTS.mdβ contributor and AI-agent workflow guide.github/ARCHITECTURE.mdβ architecture and technical debt notes.github/TESTING.mdβ testing and isolation standards.github/ROADMAP.mdβ current modernization roadmap.github/copilot-instructions.mdβ concise Copilot-specific guidance.junie/*.mdβ short operational summaries for analysis, testing, fixes, and refactorsCHANGELOG.mdβ current branch changelog summary
DaybydayCRM follows a layered Laravel architecture:
Routes -> Middleware -> Controllers -> Services/Actions -> Repositories/Models -> Views or JSON responses
Current repository conventions emphasize:
- thin controllers
- FormRequest-based validation
- service/action extraction for business logic
- enums and helpers for fixed value sets
- observer and trait-based model behavior
- explicit JSON vs web response handling
DaybydayCRM follows PSR-2 coding standards.
Before pushing changes:
- keep tests self-contained and factory-driven
- place new HTTP/controller coverage in
tests/Feature/* - normalize dates before assertions
- refresh users after permission changes in tests
- run
git ls-files '*.php' | xargs -n1 php -l
If workflows are available, all tests should pass on GitHub Actions, or failing expectations should be updated to reflect intentional behavior changes.
Feel free to send feedback on Twitter or file an issue. Feature requests are always welcome. If you want to contribute, please take a quick look at the repository guidance above.
You can help translate DaybydayCRM into other languages by copying resources/lang/en into, for example, resources/lang/de and translating the files inside that folder.
DaybydayCRM from version 2.0.0 and up is open-sourced software licensed under the GNU GPLv3. FAQ GPL
DaybydayCRM under and not including version 2.0.0 is open-sourced software licensed under the MIT license.
