vollstock c470240dc0 Fix: Job to check invoice due dates was never run
Made it a command so it runs with the scheduler
2026-03-05 10:42:40 +01:00
2025-10-20 08:57:51 +02:00
2025-10-20 09:03:01 +02:00
2025-10-20 08:57:51 +02:00
2025-10-20 08:57:51 +02:00
2025-10-20 08:57:51 +02:00
2025-10-20 09:03:01 +02:00
2026-02-17 10:35:03 +01:00
2025-10-20 08:57:51 +02:00
2025-10-20 08:57:51 +02:00
2025-10-20 08:57:51 +02:00
2025-12-04 13:11:08 +01:00
2025-10-20 08:57:51 +02:00
2026-02-25 12:05:56 +01:00
2025-10-20 08:57:51 +02:00
2025-10-12 10:02:33 +02:00
2026-02-25 15:07:07 +01:00
2026-02-17 10:35:03 +01:00
2025-10-20 08:57:51 +02:00
2025-10-20 08:57:51 +02:00
2025-10-20 08:57:51 +02:00

Caramel CRM

A simple, secure, and GOBD-compliant invoicing and customer management tool for small businesses and freelancers.

Caramel CRM Screenshots

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.

  • 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

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.

⚠️ 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

Apache config

<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>

Steps

  1. Clone the repository:
    git clone http://code.tooloop.de/Tooloop/Caramel-CRM.**git**
    cd Caramel-CRM
    
  2. Create empty database:
    touch database/database.sqlite
    
  3. Set permissions
    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/
    
  4. Install dependencies:
    composer update
    composer install
    npm install
    
  5. Set up the environment:
    cp .env.example .env
    sudo php artisan key\:generate
    
  6. Create a symbolic link for public storage
    sudo php artisan storage:link
    
  7. Run migrations and seeders:
    sudo php artisan migrate --seed
    
  8. Build frontend assets:
    npm run build
    
  9. Start the development server:
    php artisan serve
    

Configuration

Edit the .env file to configure your database, mail settings, and other environment-specific variables.

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:

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.
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 .envfile:

...
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:

*/5 * * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

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.

Contact

For questions or feedback, get in touch :-)

See all contact information on our wbsite at Tooloop Multimedia. or find us in the Projekt-Matrix channel: #caramel-crm:matrix.org

S
Description
Sweet acquisition and buttery smooth customer care
Readme MIT 1.7 MiB
Languages
Vue 55.3%
PHP 29.6%
TypeScript 8.8%
Blade 4.6%
CSS 1.2%
Other 0.5%