Skip to content

[Setup] Add Required Dependencies and ConfigurationΒ #21

@asyncnavi

Description

@asyncnavi

Description

Set up project dependencies required for the authentication phase.

Dependencies to Add

Production Dependencies

# In mix.exs
defp deps do
  [
    # ... existing deps
    {:bcrypt_elixir, "~> 3.0"},  # or {:argon2_elixir, "~> 4.0"}
    {:joken, "~> 2.6"},
    {:hammer, "~> 6.2"},  # Rate limiting (or ex_rated)
  ]
end

Configuration

Add to config/config.exs or appropriate env files:

# JWT Configuration
config :joken, default_signer: System.get_env("JWT_SECRET")

# Token expiry
config :wavve_backend, :tokens,
  access_token_ttl: {7, :days},
  refresh_token_ttl: {30, :days}

# Rate limiting
config :hammer,
  backend: {Hammer.Backend.ETS, [expiry_ms: 60_000 * 60 * 4, cleanup_interval_ms: 60_000 * 10]}

Tasks

  • Add dependencies to mix.exs
  • Run mix deps.get
  • Configure JWT settings in environment files
  • Set up rate limiting configuration
  • Update .env.example with required variables
  • Document all new environment variables

Environment Variables to Add

# JWT Configuration
JWT_SECRET=<generate with mix phx.gen.secret>

# Email Service (choose one)
SMTP_HOST=smtp.sendgrid.net
SMTP_PORT=587
SMTP_USERNAME=apikey
SMTP_PASSWORD=your_sendgrid_api_key
FROM_EMAIL=noreply@wavve.app

# OR use Mailgun
MAILGUN_API_KEY=your_api_key
MAILGUN_DOMAIN=mg.wavve.app

Verification

  • All dependencies compile successfully
  • No version conflicts
  • Configuration loads correctly
  • Environment variables documented
  • Team notified of new requirements

Definition of Done

  • Dependencies added and working
  • Configuration complete
  • Documentation updated
  • No compilation errors

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions