Skip to content

gabrielmaialva33/jim_studio

Repository files navigation


Jim Studio
Jim Studio - AI-Powered Music Education Platform

A comprehensive platform for music lessons that analyzes student performances and provides AI-powered feedback for musical improvement.

Portugues

Elixir Phoenix TimescaleDB Tailwind CSS NVIDIA NIM License


FeaturesΒ Β Β |Β Β Β  ArchitectureΒ Β Β |Β Β Β  TechnologiesΒ Β Β |Β Β Β  InstallationΒ Β Β |Β Β Β  UsageΒ Β Β |Β Β Β  License


✨ Features

Performance Analysis

  • Audio Transcription - Convert student performances to text using NVIDIA Parakeet CTC
  • AI Feedback - Intelligent musical analysis powered by LLaMA 3.1
  • Semantic Search - Find similar performances using vector embeddings with Qdrant
  • Progress Tracking - Monitor improvement over time with detailed metrics

Course Management

  • Multi-Instrument Support - 47+ instruments across categories (strings, wind, percussion, keyboard, voice, electronic)
  • Structured Curriculum - Courses with modules, lessons, and materials
  • Live & Recorded Lessons - Support for live sessions, recorded content, and tutorials

Gamification System

  • XP & Levels - Experience points system for student engagement
  • Achievements - Unlock badges and milestones for musical accomplishments
  • Weekly Digests - Automated progress reports and activity summaries

Multi-Role Platform

  • Students - Take lessons, record performances, track progress
  • Guardians - Parent accounts with guardian-child relationships
  • Teachers - Create courses, provide feedback, manage students
  • Coordinators - Manage institutions and teacher assignments
  • Admins - Full system access and configuration

Billing & Subscriptions

  • Stripe Integration - Secure payment processing
  • Credit Packages - Flexible lesson credits system
  • Multiple Plans - Free, Pro, and Enterprise tiers

🎨 Architecture

System Overview

graph TD
    User[User / Admin]

    subgraph "Jim Studio Platform"
        LB[Phoenix Server]
        UI[LiveView UI]
        API[REST API]
        Workers[Oban Workers]
    end

    subgraph "Data Layer"
        DB[(TimescaleDB)]
        Redis[Redis Cache]
        Qdrant[Qdrant Vector DB]
    end

    subgraph "External Services"
        R2[Cloudflare R2]
        NVIDIA[NVIDIA NIM API]
        Stripe[Stripe Payments]
        Firebase[Firebase Auth]
    end

    User -->|HTTPS| LB
    LB --> UI
    LB --> API
    API --> Workers

    Workers --> DB
    Workers --> Redis
    Workers --> Qdrant
    Workers --> R2
    Workers --> NVIDIA

    API --> Stripe
    API --> Firebase
Loading

Processing Pipeline

sequenceDiagram
    participant S as Student
    participant A as API
    participant R2 as Cloudflare R2
    participant T as Transcription Worker
    participant N as NVIDIA NIM
    participant An as Analysis Worker
    participant Q as Qdrant

    S->>A: Upload Performance
    A->>R2: Store Audio File
    A->>T: Queue Transcription Job
    T->>N: Parakeet CTC
    N-->>T: Transcribed Text
    T->>An: Queue Analysis Job
    An->>N: LLaMA 3.1 Analysis
    N-->>An: Musical Feedback
    An->>Q: Store Embeddings
    An-->>S: WebSocket Notification
Loading

πŸ’» Technologies

Core Framework

  • Elixir 1.15+ - Functional programming for scalable applications
  • Phoenix 1.8 - Real-time web framework with LiveView
  • Ecto 3.13 - Database wrapper and query generator

Database & Storage

  • TimescaleDB - Time-series optimized PostgreSQL
  • Redis - In-memory caching with Redix
  • Qdrant - Vector database for semantic search
  • Cloudflare R2 - Object storage for media files

AI & Machine Learning

  • NVIDIA NIM - AI inference microservices
    • Parakeet CTC for audio transcription
    • NV-EmbedQA for text embeddings
    • LLaMA 3.1 for performance analysis

Authentication & Payments

Background Processing

  • Oban 2.17 - Job processing with persistence

Frontend


πŸ“¦ Installation

Prerequisites

Quick Start

  1. Clone the repository
git clone https://github.com/gabrielmaialva33/jim-studio.git
cd jim-studio
  1. Start infrastructure
docker-compose up -d

This starts TimescaleDB (5432), Redis (6380), and Qdrant (6335/6336).

  1. Install dependencies
mix deps.get
  1. Configure environment
cp .env.example .env

Fill in your credentials:

DATABASE_URL=postgresql://postgres:postgres@localhost:5432/jim_studio_dev
REDIS_URL=redis://localhost:6380
GUARDIAN_SECRET_KEY=your-secret-key-min-32-chars
NVIDIA_API_KEY=your-nvidia-api-key
R2_ACCESS_KEY_ID=your-r2-access-key
R2_SECRET_ACCESS_KEY=your-r2-secret-key
STRIPE_SECRET_KEY=your-stripe-secret-key
  1. Setup database
mix ecto.setup
  1. Start the server
mix phx.server
  1. Open in browser

Navigate to http://localhost:4000


πŸš€ Usage

Student Experience

  1. Browse available Courses and enroll
  2. Access lesson materials and video content
  3. Record and upload your Performance
  4. Receive AI-powered analysis and feedback
  5. Track your progress and earn Achievements

Teacher Dashboard

  1. Create Courses with structured modules
  2. Upload lesson materials and recordings
  3. Review student performances
  4. Provide personalized feedback

Performance Analysis

  1. Student uploads audio recording
  2. System transcribes audio using NVIDIA Parakeet
  3. AI analyzes musical elements (timing, pitch, dynamics)
  4. Detailed feedback delivered via WebSocket
  5. Performance stored with vector embeddings for comparison

πŸ› οΈ Commands

mix deps.get        # Install dependencies
mix ecto.setup      # Create, migrate, and seed database
mix phx.server      # Start development server
mix test            # Run test suite
mix test path:line  # Run specific test
mix format          # Format code
mix credo           # Check code quality
mix ecto.reset      # Reset database
mix assets.build    # Build frontend assets
mix precommit       # Run pre-commit checks

πŸ“ License

This project is under the MIT license. See LICENSE for details.


🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ‘₯ Author

Maia

Made with ❀️ by Maia

gabrielmaialva33@gmail.com Β |Β  @gabrielmaialva33


Jim Studio - Empowering Musical Growth Through AI

Β© 2017-present Maia

About

A comprehensive platform for music lessons that analyzes student performances and provides AI-powered feedback for musical improvement.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors