Skip to content
CAI
Software that uses CAICheck a score

fly-apps/live_beats

47.5

Weak · 23 September 2026

5k

lines of production code

Elixir

with JavaScript

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This is a music streaming and management application built on Phoenix 1.7 and LiveView 1.0, featuring user authentication via GitHub and real-time presence tracking. It allows users to upload and manage MP3 files with metadata and transcripts, while also providing an audio player interface and profile management. The system supports background processing for audio transcription and includes a media library with genre categorization.

Features

Add GitHub authentication and audio processing capabilities

Users can now sign in with GitHub, which creates or links their account using the new LiveBeats.Accounts and LiveBeats.Github modules. The application also supports audio processing, including MP3 metadata extraction via LiveBeats.MP3Stat and speech-to-text transcription using Bumblebee/Whisper, which is initialized at startup. Additionally, background tasks for cleaning up expired songs and managing presence are now active.

_lib/live\beats · high confidence

Add presence tracking for active users

Introduces a new Presence module and BadgeComponent to track and display users currently active in a profile. The module handles join/leave events and broadcasts local updates, while the component renders a list of active users with their avatar, username, and region. This enables real-time visibility of who is listening now.

_lib/live\_beats\web/channels · high confidence

Add song upload and metadata entry interface

Users can now upload MP3 files and enter song metadata (title, artist, attribution) via a new upload form. The interface includes a drag-and-drop zone, progress bars for each file, and validation for file size, type, and count limits (10 files, 20MB each).

_lib/live\_beats\_web/live/profile\live · high confidence

Added Dockerfile, Fly.io configuration, and license

The application is now fully containerized with a new Dockerfile and .dockerignore, enabling consistent builds and deployments. A fly.toml configuration has been added to support deployment on Fly.io, including port mappings, concurrency limits, and environment variables. Additionally, an MIT license (LICENSE.md) has been added to the repository.

(repo-wide) · high confidence

Added delayed show support to topbar progress indicator

The topbar vendor file was updated to support a new \delayedShow\ method, which allows the progress bar to be shown after a specified timeout rather than immediately. This is achieved by introducing a \delayTimerId\ variable to track the pending timeout, which is cleared in the \hide\ method to prevent the delayed show from firing if the bar is hidden. The \show\ method was also modified to clear any existing \delayTimerId\ to ensure the bar displays immediately if \show\ is called before the delay expires.

assets/vendor · high confidence

Added release environment and server startup scripts

The application now includes new release environment configuration and startup scripts. The environment script configures IPv6, DNS clustering, and node naming for Fly.io deployments. New server startup scripts have been added to handle S3 bucket mounting via s3fs and launch the Phoenix server, with corresponding Windows batch files provided for compatibility.

rel · high confidence

GitHub authentication and user profile management

Users can now sign in with GitHub, which creates a new Identity record linking the GitHub account to a User. The User model now includes profile fields such as username, tagline, and avatar URL, and supports updating these settings. An event system has been introduced to track changes to the active profile and public settings.

_lib/live\beats/accounts · high confidence

Introduce live audio player, profile, and settings views

Users can now play and control music via a new audio player interface, browse and manage their own or other users' playlists through a dedicated profile view, and update their public profile details in a settings page. The player supports play, pause, skip, and stop actions, while the profile view displays song lists, upload options, and active listeners. Settings allow users to edit their username, tagline, and email. A sign-in page with GitHub authentication is also added.

_lib/live\_beats\web/live · high confidence

Introduces core media library domain models and event structures

The media library now includes new Ecto schemas for Song, Genre, and Profile, along with a set of event structs (Play, Pause, PublicProfileUpdated, etc.) to handle media state and user profile updates. The Song schema adds fields for attribution, MP3 file metadata, and a unique constraint on the title, while the Profile struct tracks user-specific media statistics.

_lib/live\_beats/media\library · high confidence

New authentication and file serving controllers

The application now includes dedicated controllers for user authentication and file access. A new UserAuth module handles login, logout, and session management, supporting GitHub OAuth integration via the OAuthCallbackController. Additionally, a FileController has been added to serve media files, supporting both direct local delivery and proxying to remote servers, while the legacy PageController has been removed.

_lib/live\_beats\web/controllers · high confidence

Behavioural changes

Add core UI components and layout templates for LiveView 1.0 and Phoenix 1.7

The application introduces new core UI components and layout templates to support the upgrade to LiveView 1.0 and Phoenix 1.7. The \core\_components.ex\ file provides reusable UI elements including connection status indicators, flash message displays, spinners, and icon helpers. Additionally, \layouts.ex\ introduces sidebar components for displaying active users, navigation links, and account dropdowns, ensuring the user interface is compatible with the latest framework standards.

_lib/live\_beats\web/components · medium confidence

Added seed data for songs and genres

The database seeding script (priv/repo/seeds.exs) has been updated to include sample data for the media library. Specifically, it now contains commented-out logic to create genre entries (e.g., Chill, Pop, Hip-hop, Electronic) and 200 sample song entries with generated filenames and paths. This provides a baseline set of data for development and testing environments.

priv/repo · high confidence

Configuration updates for LiveView 1.0 and Phoenix 1.7

The application configuration has been updated to support LiveView 1.0 and Phoenix 1.7. Key changes include migrating the error rendering configuration to use the new \LiveBeatsWeb.ErrorHTML\ and \LiveBeatsWeb.ErrorJSON\ views, and updating the esbuild watcher to remove the \--target\ argument. Tailwind CSS is now managed via a dedicated \:tailwind\ watcher instead of a raw \npx\ command. Additionally, the Swoosh API client is explicitly disabled in development and test environments, and production settings are updated to support Fly.io deployments with DNS-based clustering and configurable upload directories.

config · medium confidence

Database schema expanded with user authentication, song metadata, and transcript support

The database schema has been extended to support new application features. A new \users\ table was added to support user authentication and profiles, including fields for email, username, role, and profile details. The \songs\ table was expanded with new columns for attribution, file size, position, and a JSONB field for transcripts. Additionally, an \identities\ table was created to support third-party login providers, and a \genres\ table was introduced to categorize songs.

priv/repo/migrations · high confidence

Migrate Tailwind configuration to JIT mode and add LiveView variants

The project has removed the legacy PostCSS configuration and migrated the Tailwind CSS setup to use the JIT (Just-In-Time) engine, which improves build performance and enables dynamic class generation. The Tailwind configuration now explicitly defines content paths for JavaScript and Elixir templates, and adds custom plugins to support LiveView-specific CSS states such as phx-click-loading, phx-submit-loading, and phx-error, enabling more precise styling of interactive UI states.

assets · medium confidence

Migrate to Phoenix 1.7 and LiveView 1.0-rc with component-based rendering

The application has been upgraded to Phoenix 1.7 and LiveView 1.0-rc, shifting the rendering architecture from the legacy \Phoenix.View\ to the new component-based \Phoenix.Component\ system. This change replaces the old \:view\ macro with \:html\ and \:live\_view\ macros, enabling the use of function components and verified routes. The \LiveBeatsWeb\ module now provides \html\ and \live\_view\ helpers that import \Phoenix.Component\ and \Phoenix.HTML\, while the main \LiveBeats\ module introduces a new event dispatch system using \:telemetry\ for granular, struct-based event handling across contexts.

lib · medium confidence

Migrate to Phoenix 1.7 and LiveView 1.0-rc with updated routing and session configuration

The application has been upgraded to support Phoenix 1.7 and LiveView 1.0-rc. This update includes rotating the session key and signing salt for security, and enabling longpolling for LiveView sockets. Routing has been restructured to use the new \LiveBeatsWeb.Layouts\ module for root layouts and to integrate user authentication via \UserAuth\ plugs. New routes have been added for OAuth callbacks, file viewing, and sign-out, while existing LiveView routes for profiles, songs, and settings are now grouped under \live\_session\ blocks with appropriate authentication mounts.

_lib/live\_beats\web · medium confidence

Removal of default Phoenix layout and page templates

The default layout templates (app, live, root) and the welcome page template have been removed from the application. This eliminates the standard Phoenix scaffolding, indicating a shift away from the default UI structure and requiring the application to rely on custom templates or a different layout strategy.

_lib/live\_beats\web/templates · high confidence

Removed legacy Phoenix view modules

The project has removed the legacy Phoenix view modules (ErrorHelpers, ErrorView, LayoutView, and PageView). This change reflects a migration away from the traditional Phoenix view layer, likely as part of an upgrade to Phoenix 1.7 or a shift towards LiveView, where these view modules are no longer required for rendering HTML templates.

_lib/live\_beats\web/views · high confidence

Replaces Phoenix CSS with Tailwind CSS and adds UI animations

The application's stylesheet has been migrated from the default Phoenix CSS to Tailwind CSS, replacing the previous styling approach. Additionally, new CSS classes and keyframe animations have been introduced to support UI transitions, including fade-in, fade-out, and pulse effects for LiveView states.

assets/css · medium confidence

Updated layout templates for Phoenix 1.7 and LiveView 1.0

The application's layout templates (app, live, and root) have been updated to align with Phoenix 1.7 and LiveView 1.0-rc. This includes migrating to the new \\~p\ path helper syntax, adopting the new \flash\ component for displaying info and error messages, and restructuring the sidebar and mobile navigation to support the updated LiveView rendering model.

_lib/live\_beats\web/components/layouts · medium confidence

Upgrade to Phoenix LiveView 1.0 and add interactive JS hooks

The application has been upgraded to support Phoenix LiveView 1.0, which includes a new \phx\_feedback\_dom.js\ module to manage form feedback states. Additionally, the \app.js\ entry point now integrates several new interactive hooks: a \Sortable\ hook for drag-and-drop reordering, a \Flash\ hook that auto-hides notifications after a timeout, a \Menu\ hook that handles keyboard navigation and focus management for dropdowns, and an \AudioPlayer\ hook that manages playback, progress updates, and media session metadata.

assets/js · high confidence

Test coverage

Added and updated controller tests for authentication and GitHub OAuth; Added mock implementations for Presence client and server for testing; Added test coverage for accounts, media library, and MP3 stat modules; Added test coverage for user profile and settings live views; Added test fixtures for accounts and media library; Enhanced test support with user login helper and presence synchronization; Test suite now uses automatic database sandboxing.

Dependencies

Upgraded to Phoenix 1.7 and LiveView master

The project has been upgraded to Phoenix 1.7.12 and the latest Phoenix LiveView from the master branch. This update includes a broad range of dependency updates, such as Ecto 3.11, Ecto SQL 3.11, and Phoenix HTML 3.3. Additionally, new dependencies like Bumblebee, EXLA, and Tailwind have been added, while the frontend asset build process has been simplified by removing the npm-based build in favor of the native \tailwind\ Mix task.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 48 → 47 (-0.2)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 96 → 97 (+1.1)
  • Architecture 100 → 91 (-8.8)
  • Maturity 48 → 48 (+0.0)
  • Readiness 24 → 28 (+4.0)
  • Security 82 → 85 (+3.2)
  • Accessibility 68 (new)

Resolved (20)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — no supported dependency manifest was read
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High IaC: DS-0029 (Dockerfile)
  • Medium CVE: EEF-[CVE redacted] (mix.lock)
  • Medium CVE: EEF-[CVE redacted] (mix.lock)
  • Medium IaC: CKV_DOCKER_2 (Dockerfile)
  • Medium IaC: CKV_DOCKER_8 (Dockerfile)
  • No exposed public API
  • Test reliability not included
  • TooManyMethods: CoreComponents (lib/live_beats_web/components/core_components.ex)
  • dormant codebase — no living knowledge left to concentrate

New (45)

  • Change coupling: core_components.ex ↔ layouts.ex (lib/live_beats_web/components/core_components.ex)
  • Documentation: no project overview (README.md)
  • Floating source dependency: bumblebee
  • Floating source dependency: phoenix_live_view
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High IaC: DS-0029 (Dockerfile)
  • High IaC: DS-0029 (Dockerfile)
  • Leaked secret: signing-key (config/config.exs)
  • Medium CVE: [CVE redacted] (mix.lock)
  • Medium CVE: EEF-[CVE redacted] (mix.lock)
  • Medium CVE: EEF-[CVE redacted] (mix.lock)
  • Medium IaC: WD-DOCKER-0003 (Dockerfile)
  • …and 25 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

fly-apps/live_beats was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit ac9780472e7019af274110a1cf71250a8d40c986 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.