2025-12-04 12:07:59 +01:00
# Caramel CRM
2025-10-12 10:02:33 +02:00
2025-12-04 12:07:59 +01:00
**A simple, secure, and GOBD-compliant invoicing and customer management tool for small businesses and freelancers. **
2025-10-20 08:57:51 +02:00
2025-12-04 13:06:18 +01:00

2025-10-20 08:57:51 +02:00
2025-12-04 12:07:59 +01:00
Caramel CRM is an open-source web application designed for small businesses, freelancers, and non-balancing partnerships (GbRs). It provides an easy-to-use, secure, and GOBD-compliant solution for invoicing and customer management. Since 2025, e-invoicing has become mandatory in Germany, and Caramel CRM aims to bridge the gap for small businesses unprepared for this transition.
2025-10-20 08:57:51 +02:00
2025-12-04 12:07:59 +01:00
- **Self-hosted**: Run it on any web hosting service.
- **GOBD-compliant**: Ensures legal compliance for invoicing.
- **ZUGFeRD/XRechnung/Factur-X support**: Standardized e-invoicing formats.
- **AI-assisted CRM**: Helps with customer care and acquisition.
- **User-friendly**: Designed for non-technical users.
## Status
**Current Status: Prototype **
2025-12-04 18:07:31 +01:00
Caramel CRM is currently in the **prototype phase ** . It provides basic invoicing and customer management features but is **not yet GOBD-compliant ** . This project has just started development and has applied for the [Prototype Fund ](https://www.prototypefund.de/ ).
2025-12-04 12:07:59 +01:00
## ⚠️ Warning
**Do not use this software in production environments yet! **
- The prototype is **not GOBD-compliant ** and lacks essential security audits.
- Data loss or legal non-compliance may occur.
- Use only for **testing and development purposes ** .
## Installation
### Prerequisites
- PHP 8.1+
- Composer
- Node.js (for frontend assets)
- SQLite/MySQL/PostgreSQL
2026-02-25 15:07:27 +01:00
### Apache config
``` apache
<VirtualHost *:80 >
ServerName crm.tooloop.de
Redirect permanent / https://crm.tooloop.de/
</VirtualHost >
<VirtualHost *:443 >
ServerName crm.tooloop.de
DocumentRoot /var/www/html/caramel/public/
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/cloud.tooloop.de/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/cloud.tooloop.de/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
<Directory /var/www/html/caramel/public >
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory >
ErrorLog ${APACHE_LOG_DIR}/caramel_error.log
CustomLog ${APACHE_LOG_DIR}/caramel-access.log combined
</VirtualHost >
```
2025-12-04 12:07:59 +01:00
### Steps
1. Clone the repository:
```bash
2026-02-25 15:07:27 +01:00
git clone http://code.tooloop.de/Tooloop/Caramel-CRM.**git**
2025-12-04 12:07:59 +01:00
cd Caramel-CRM
2025-12-04 22:37:16 +01:00
` ``
2. Create empty database:
` ``bash
touch database/database.sqlite
` ``
2026-02-25 15:07:27 +01:00
3. Set permissions
` ``bash
sudo chown -R www-data:www-data /var/www/html/caramel/storage/ bootstrap/cache/
sudo chmod g+rw /var/www/html/caramel/storage/ /var/www/html/caramel/bootstrap/cache/
` ``
2025-12-04 22:37:16 +01:00
3. Install dependencies:
2025-12-04 12:07:59 +01:00
` ``bash
2026-02-25 15:07:27 +01:00
composer update
2025-12-04 12:07:59 +01:00
composer install
npm install
` ``
2025-12-04 22:37:16 +01:00
4. Set up the environment:
2025-12-04 12:07:59 +01:00
` ``bash
cp .env.example .env
2026-02-25 15:07:27 +01:00
sudo php artisan key\:generate
2025-12-04 12:07:59 +01:00
` ``
2026-03-04 14:43:01 +01:00
5. Create a symbolic link for public storage
` ``bash
sudo php artisan storage:link
` ``
6. Run migrations and seeders:
2025-12-04 12:07:59 +01:00
` ``bash
2026-02-25 15:07:27 +01:00
sudo php artisan migrate --seed
2025-12-04 12:07:59 +01:00
` ``
2026-03-04 14:43:01 +01:00
7. Build frontend assets:
2025-12-04 12:07:59 +01:00
` ``bash
2026-02-25 15:07:27 +01:00
npm run build
2025-12-04 12:07:59 +01:00
` ``
2026-03-04 14:43:01 +01:00
8. Start the development server:
2025-12-04 12:07:59 +01:00
` ``bash
php artisan serve
` ``
## Configuration
Edit the .env file to configure your database, mail settings, and other environment-specific variables.
2025-12-07 18:07:51 +01:00
### Running the scheduler
Some tasks need to be done in regular interval, e. g. syncing data with an axternal CalDAV server.
Therfor the command ` artisan schedule:run` should be called every 5 minutes.
You can choose between one of three updating methods by editing the ` app.cron_method` value in the database table ` settings`:
2026-02-25 15:07:27 +01:00
| Value | Description |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ` cron` | If you can, configure a CRON job in the OS |
| ` webcron` | Some hosting prividers provide a feature to call a HTTP-request in regular intervals. |
2025-12-07 18:07:51 +01:00
| ` request` | If both of the above are not possible in your setup, you can choose ` request`. The web UI will then regularly call the ` /webcron` route from your browser. |
#### Webcron
Configure a unique token in your ` .env`file:
` ``.environment
...
WEBCRON_SECRET=<YOUR_TOKEN>
...
` ``
Then make sure this URL is called every 5 minutes:
` http(s)://<YOUR-URL>/webcron?token=<YOUR_TOKEN>`
#### CRON
Add this line in your crontab by typing ` crontab -e`:
` ``bash
2025-12-08 13:21:33 +01:00
*/5 * * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
2025-12-07 18:07:51 +01:00
` ``
2025-12-04 12:07:59 +01:00
## Usage
1. Access the application at http://localhost:8000.
2. Log in with the default admin credentials (see .env for details).
3. Start creating invoices and managing customers.
## Contributing
We welcome contributions!
## License
Caramel CRM is open-source software licensed under the [MIT License ](LICENCE ).
## Contact
For questions or feedback, get in touch :-)
See all contact information on our wbsite at [Tooloop Multimedia ](https://www.tooloop.de ).
or find us in the Projekt-Matrix channel: [#caramel-crm:matrix.org ](https://matrix.to/#/%23caramel-crm:matrix.org )