Commit iniziale di eminuxCRM: CRM Rails con pipeline, campagne email e Docker.
CI / scan_ruby (push) Failing after 11m20s
CI / scan_js (push) Successful in 10m35s
CI / lint (push) Has been cancelled

Include autenticazione, progetti isolati, mail marketing HTML con SMTP, test A/B e editor WYSIWYG.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-17 23:01:48 +02:00
co-authored by Cursor
commit c4e5f289cf
258 changed files with 11293 additions and 0 deletions
@@ -0,0 +1,79 @@
class CreateMailMarketing < ActiveRecord::Migration[8.1]
def change
create_table :mail_identities do |t|
t.string :name, null: false
t.string :from_name, null: false
t.string :from_email, null: false
t.string :reply_to
t.string :smtp_host, null: false
t.integer :smtp_port, null: false, default: 587
t.string :smtp_username
t.text :smtp_password
t.string :smtp_authentication, default: "plain", null: false
t.string :encryption, default: "starttls", null: false
t.boolean :verify_ssl, default: true, null: false
t.boolean :active, default: true, null: false
t.bigint :created_by_id
t.bigint :updated_by_id
t.timestamps
end
add_index :mail_identities, :from_email
add_index :mail_identities, :active
create_table :mail_templates do |t|
t.bigint :project_id
t.string :name, null: false
t.string :subject, null: false
t.text :body_html, null: false
t.bigint :created_by_id
t.bigint :updated_by_id
t.timestamps
end
add_index :mail_templates, :project_id
add_index :mail_templates, :name
create_table :mailings do |t|
t.bigint :project_id, null: false
t.bigint :mail_identity_id, null: false
t.bigint :mail_template_id
t.string :name, null: false
t.string :subject, null: false
t.text :body_html, null: false
t.string :audience, default: "to_send", null: false
t.string :status, default: "draft", null: false
t.integer :interval_seconds, default: 0, null: false
t.datetime :queued_at
t.datetime :completed_at
t.bigint :created_by_id
t.bigint :updated_by_id
t.timestamps
end
add_index :mailings, :project_id
add_index :mailings, :mail_identity_id
add_index :mailings, :status
create_table :mailing_recipients do |t|
t.bigint :mailing_id, null: false
t.bigint :organization_id, null: false
t.bigint :contact_id
t.string :email
t.string :status, default: "pending", null: false
t.string :skip_reason
t.text :error_message
t.string :rendered_subject
t.datetime :sent_at
t.timestamps
end
add_index :mailing_recipients, %i[mailing_id organization_id], unique: true, name: "idx_mailing_recipients_unique"
add_index :mailing_recipients, :status
add_index :mailing_recipients, :email
add_foreign_key :mail_templates, :projects
add_foreign_key :mailings, :projects
add_foreign_key :mailings, :mail_identities
add_foreign_key :mailings, :mail_templates
add_foreign_key :mailing_recipients, :mailings
add_foreign_key :mailing_recipients, :organizations
add_foreign_key :mailing_recipients, :contacts
end
end