An open API service indexing awesome lists of open source software.

https://github.com/gabrielmaialva33/jim_studio

A comprehensive platform for music lessons that analyzes student performances and provides AI-powered feedback for musical improvement.
https://github.com/gabrielmaialva33/jim_studio

elixir liveview music-learning studio timescaledb

Last synced: 5 months ago
JSON representation

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

Awesome Lists containing this project

README

          




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


## :sparkles: 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


## :art: Architecture

### System Overview

```mermaid
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
```

### Processing Pipeline

```mermaid
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
```


## :computer: Technologies

### Core Framework

- **[Elixir](https://elixir-lang.org/)** 1.15+ - Functional programming for scalable applications
- **[Phoenix](https://phoenixframework.org/)** 1.8 - Real-time web framework with LiveView
- **[Ecto](https://hexdocs.pm/ecto/)** 3.13 - Database wrapper and query generator

### Database & Storage

- **[TimescaleDB](https://www.timescale.com/)** - Time-series optimized PostgreSQL
- **[Redis](https://redis.io/)** - In-memory caching with Redix
- **[Qdrant](https://qdrant.tech/)** - Vector database for semantic search
- **[Cloudflare R2](https://www.cloudflare.com/products/r2/)** - Object storage for media files

### AI & Machine Learning

- **[NVIDIA NIM](https://developer.nvidia.com/nim)** - AI inference microservices
- Parakeet CTC for audio transcription
- NV-EmbedQA for text embeddings
- LLaMA 3.1 for performance analysis

### Authentication & Payments

- **[Guardian](https://github.com/ueberauth/guardian)** - JWT authentication
- **[Firebase Auth](https://firebase.google.com/products/auth)** - Social authentication
- **[Stripe](https://stripe.com/)** - Payment processing

### Background Processing

- **[Oban](https://getoban.pro/)** 2.17 - Job processing with persistence

### Frontend

- **[Phoenix LiveView](https://hexdocs.pm/phoenix_live_view/)** - Server-rendered real-time UI
- **[Tailwind CSS](https://tailwindcss.com/)** 4.0 - Utility-first styling
- **[Heroicons](https://heroicons.com/)** - Beautiful hand-crafted icons


## :package: Installation

### Prerequisites

- **[Elixir](https://elixir-lang.org/)** 1.15+
- **[Docker](https://www.docker.com/)** & Docker Compose
- **[NVIDIA API Key](https://developer.nvidia.com/)** for AI features

### Quick Start

1. **Clone the repository**

```bash
git clone https://github.com/gabrielmaialva33/jim-studio.git
cd jim-studio
```

2. **Start infrastructure**

```bash
docker-compose up -d
```

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

3. **Install dependencies**

```bash
mix deps.get
```

4. **Configure environment**

```bash
cp .env.example .env
```

Fill in your credentials:
```env
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
```

5. **Setup database**

```bash
mix ecto.setup
```

6. **Start the server**

```bash
mix phx.server
```

7. **Open in browser**

Navigate to [http://localhost:4000](http://localhost:4000)


## :rocket: 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


## :hammer_and_wrench: Commands

```bash
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
```


## :memo: License

This project is under the **MIT** license. See [LICENSE](./LICENSE) for details.


## :handshake: 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


## :busts_in_silhouette: Author


Maia


Made with :heart: by Maia


gabrielmaialva33@gmail.com
 | 
@gabrielmaialva33





Jim Studio - Empowering Musical Growth Through AI


© 2017-present Maia