parent: Work in progress grand_parent: Idee

FlowPulse Profile gestisci il tuo profilo

L’app FlowPulse Profile è il primo modulo per la gestione degli utenti e dell’autenticazione.

Questo modulo è responsabile di registrare e autenticare gli utenti, consentendo l’accesso sicuro agli altri moduli dell’ecosistema FlowPulse. Utilizza il framework Rails Authentication insieme a JWT per generare token di accesso, e integra la gestione dei profili utente, consentendo la personalizzazione e il salvataggio dei dati relativi agli utenti.

Caratteristiche principali:

  • Gestione utenti: Permette di registrare e autenticare gli utenti tramite email e password.
  • Autenticazione con JWT: Utilizza JSON Web Tokens (JWT) per generare e gestire i token di accesso.
  • Profili utente: Ogni utente ha un profilo personalizzato con informazioni come username, contatti e avatar.

cerca un app per fare i mockup

Tecnologie utilizzate:

  • Rails 8
  • cursorules
  • rails template
  • CSS Zero (per il layout minimalista)
  • Stimulus
  • Hotwire
  • Turbo
  • Rails Authentication
  • JWT
  • Importmap (gestione delle dipendenze)

Comandi per la creazione dell’app FlowPulse Profile

Per creare l’app FlowPulse Profile, segui i passaggi qui sotto:

1️⃣ Creare una nuova app Rails con PostgreSQL:

rails new flowpulse_profile -d postgresql

2️⃣ Aggiungere e installare il gemma CSS Zero per il layout minimalista:

gem "css-zero", "~> 1.1"

bundle add css-zero
rails generate css_zero:install
rails generate css_zero:add layouts

3️⃣ Generare l’autenticazione per l’app (con Rails Authentication):

rails g authentication

4️⃣ Creare un utente di esempio (con email e password):

User.create(email_address: "you@example.com", password: "test-password-123")

5️⃣ Generare il modello “Profile” per memorizzare i dati utente:

rails g scaffold Profile user:references username:string descriptions:text avatar_img_url:string visibility:integer
class CreateProfiles < ActiveRecord::Migration[8.0]
  def change
    create_table :profiles do |t|
      t.references :user, null: false, foreign_key: true
      t.string :username, null: false
      t.text :descriptions
      t.string :avatar_img_url
      t.integer :visibility

      t.timestamps
    end

    add_index :profiles, :username, unique: true
  end
end


# app/controllers/profiles_controller.rb

# app/models/profile.rb
class Post < ApplicationRecord
  enum :visibility { privato: 0, gruppo: 1, pubblico: 2 }

  validates :visibility, presence: true
  validates :username, presence: true, uniqueness: true, 
                       format: { with: /\A[a-z0-9_]+\z/, message: "può contenere solo lettere minuscole, numeri e underscore" }

end

# app/views/profiles/_form.html.erb

<%= form.label :visibility, class: "text-sm font-medium leading-none" %> <%= form.select :visibility, Profile.visibilities.keys.map { |v| [v.humanize, v] }, {}, class: "input" %>

6️⃣


Table of contents