eminuxandCursor 4e03fa58ab
CI / scan_js (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / scan_ruby (push) Has been cancelled
Aggiorna lo stato dell'invio email senza ricaricare la pagina.
Così la lista destinatari si aggiorna in corso d'opera senza riportare lo scroll in cima.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 23:03:35 +02:00

eminuxCRM

CRM commerciale standalone focalizzato su una domanda:

Cosa devo fare oggi per trasformare i miei prospect in clienti?

Applicazione Rails tradizionale (Hotwire / Turbo / Stimulus + Tailwind), pensata per poche persone, veloce da usare e semplice da mantenere. Completamente indipendente da MatchLiveTV.

Architettura

  • Ruby on Rails 8 + PostgreSQL 16
  • Hotwire (Turbo + Stimulus) — nessuna SPA
  • Tailwind CSS
  • Autenticazione locale con has_secure_password (bcrypt)
  • Audit base created_by / updated_by sulle entità principali
  • Timezone: Europe/Rome · UI: italiano

Servizi Docker

Servizio Ruolo
web Applicazione Rails (porta 3000)
postgres Database PostgreSQL 16

Requisiti

  • Docker + Docker Compose
  • (Opzionale) Ruby 3.3+ per sviluppo fuori da Docker

Avvio rapido (Docker)

cp .env.example .env
# modifica SECRET_KEY_BASE e password DB se necessario

docker compose up -d --build

Al primo avvio vengono eseguiti automaticamente:

  1. bundle install (in build)
  2. tailwindcss:build
  3. db:prepare (create + migrate)
  4. db:seed

Apri: http://localhost:3001

Su questa macchina la porta 3000 è già usata da un altro stack: di default eminuxCRM usa 3001. Puoi cambiarla con APP_PORT nel file .env.

Progetti = istanze CRM separate

Ogni progetto ha un URL dedicato:

  • Launcher: /
  • MatchLiveTV: /p/matchlivetv
  • RiskMeter: /p/riskmeter
  • Cardoo: /p/cardoo

Dentro ogni istanza trovi dashboard, organizzazioni, pipeline, task, report e impostazioni del solo quel progetto.

  • Gli admin vedono tutti i progetti
  • Gli utenti solo i progetti abilitati
  • In sidebar: “Tutti i progetti” + switch rapido tra istanze

Credenziali development (solo seed)

Email Password Ruolo Progetti
admin@simplecrm.local password123 Admin Tutti
marco@simplecrm.local password123 Utente MatchLiveTV, RiskMeter
lucia@simplecrm.local password123 Utente MatchLiveTV, Cardoo

Configurazione .env

Copia .env.example.env. Variabili principali:

  • POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DB
  • DATABASE_HOST (in Docker: postgres)
  • SECRET_KEY_BASE
  • MAILER_FROM
  • APP_HOST / APP_PORT
  • TZ=Europe/Rome

Non committare .env con secret reali.

Migration e seed

docker compose exec web bin/rails db:migrate
docker compose exec web bin/rails db:seed

Reset completo (distruttivo):

docker compose exec web bin/rails db:reset

Test

docker compose exec web bin/rails db:test:prepare
docker compose exec web bin/rails test

Backup / restore

bin/backup
# crea tmp/backups/simplecrm_YYYYMMDD_HHMMSS.sql.gz

bin/restore tmp/backups/simplecrm_YYYYMMDD_HHMMSS.sql.gz

Con Docker Compose attivo gli script usano pg_dump / psql sul container postgres.

Import CSV

Pagina: Impostazioni → Import CSV oppure /imports/new.

Formato standard (file esempio: examples/organizations_import_sample.csv):

organization_name,organization_type,sport,country,region,province,city,website,organization_email,contact_first_name,contact_last_name,contact_role,contact_email,contact_phone,lead_source,notes

Duplicati evitati confrontando nome organizzazione, email e sito.

Export CSV

Disponibile da liste Organizzazioni, Contatti e Opportunità (rispetta i filtri attivi dove applicabile).

Struttura database (principale)

  • users — autenticazione, ruolo admin/user
  • organizations — prospect/clienti
  • contacts — contatti per organizzazione
  • opportunities — pipeline commerciale
  • activities — timeline
  • tasks — follow-up / next actions
  • sales_goals — obiettivi dashboard
  • products — catalogo prodotti (Light, Full, …)

Pipeline stages: Da contattare → Contattato → Ha risposto → Interessato → Demo/Trial → Primo utilizzo → Proposta → Cliente / Perso.

Funzionalità principali

  • Dashboard con obiettivo, KPI, funnel, “Cosa fare oggi”, indicatori di attenzione
  • Pagina /today operativa
  • Scheda Organization come centro operativo + quick actions
  • Kanban pipeline con drag & drop (Stimulus) e cambio stage da menu
  • Task con evidenziazione scaduti / oggi / futuri
  • Report: funnel, lead source, won/lost, lost reasons, sales owner, revenue
  • Import/export CSV

Deploy (suggerimento semplice)

  1. Copia il progetto su una VM
  2. Configura .env di produzione (RAILS_ENV=production, SECRET_KEY_BASE, password DB forti)
  3. docker compose up -d --build (oppure builda il target production del Dockerfile)
  4. Metti un reverse proxy (Caddy/Nginx) con HTTPS davanti alla porta 3000
  5. Esegui backup periodici con bin/backup

Sviluppo locale senza Docker (opzionale)

bundle install
bin/rails db:prepare db:seed
bin/dev   # server + tailwind watch

Volutamente fuori scope (fase successiva)

  • Integrazioni Gmail/SMTP avanzate, sync email, calendario
  • Stripe, webhook, API REST pubblica
  • Multi-tenant / multi-progetto
  • Dark mode, BI avanzata, microservizi

Licenza

Uso interno / progetto privato.

S
Description
CRM di supporto a MatchLiveTv, RiskMeter e altri progetti
Readme
870 KiB
Languages
Ruby 56.7%
HTML 38.4%
JavaScript 3.1%
CSS 1.1%
Shell 0.4%
Other 0.3%