Chamber-Music-MVP

0
3
0
TypeScript
public

HarmonyForge

A modern web application for forging chamber music harmonies from MIDI/XML files with intelligent instrument selection and customization options.

React
TypeScript
Tailwind CSS
Vite

✨ Features

🎡 File Upload & Processing

  • Drag & Drop Interface - Intuitive upload experience with visual feedback and animated gradient
  • File Validation - Supports MIDI (.mid, .midi) and MusicXML (.xml, .musicxml) files up to 50MB
  • Animated Processing - Multi-step validation with musical staff visualization and smooth transitions

🎹 Smart Instrument Selection

  • Interactive Cards - Select up to 4 instruments from a curated library (Violin, Viola, Cello, Double Bass)
  • Responsive Grid Layout - 2-column mobile, 4-column desktop
  • Customization Options:
    • Musical Style (Classical, Jazz, Pop, Rock, Blues, Folk)
    • Difficulty Level (Beginner, Intermediate, Advanced, Expert)
  • Real-time Feedback - Toast notifications and visual indicators

πŸ“Š Results Dashboard

  • Harmony Preview - Expandable sheet music viewer with pagination
  • Project Management:
    • Inline project name editing
    • Regenerate harmony with same settings
    • Start new project functionality
    • Quick action buttons (Save, Share, Export)
  • Metadata Display - View selected instruments, style, and difficulty with icon badges

🧭 Navigation & Pages

  • Draggable Sidebar - Repositionable sidebar with 6 snap positions (corners and center-top/bottom)
  • Home Page - Main upload interface with animated title and circular gradient
  • Projects Page - View and manage saved harmony projects
  • Profile Page - User account information and statistics

🎨 Design & UX

  • Fully Responsive - Mobile-first design (375px to 1440px+) with Tailwind breakpoints
  • Expandable Sidebar - Hover-to-expand navigation with smooth animations
  • Custom Branding - Musical note themed logo and warm color palette
  • Ripple Animations - Subtle breathing effect on circular elements
  • Gradient Pulse - Dynamic animated gradient on upload area

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • npm or yarn

Installation

  1. Clone the repository

    git clone https://github.com/spatel54/Is492musicapp.git
    cd Is492musicapp
    
  2. Install dependencies

    npm install
    
  3. Start development server

    npm run dev
    
  4. Open in browser

    • Navigate to http://localhost:5173

Production Build

npm run build

The built files will be in the build/ directory.

πŸ“ Project Structure

harmonyforge/
β”œβ”€β”€ docs/                          # Documentation
β”‚   β”œβ”€β”€ DESIGN_SYSTEM.md          # Design system guidelines
β”‚   β”œβ”€β”€ EXPORT_GUIDE.md           # Export and deployment guide
β”‚   β”œβ”€β”€ Attributions.md           # Asset credits
β”‚   β”œβ”€β”€ Guidelines.md             # Development guidelines
β”‚   └── Prompting Guidelines.prompt.md  # AI interaction protocol
β”œβ”€β”€ public/                        # Static assets
β”‚   β”œβ”€β”€ assets/                   # Public images and files
β”‚   └── fonts/                    # Custom web fonts
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/               # React components
β”‚   β”‚   β”œβ”€β”€ ui/                   # Shadcn/ui components (20+ components)
β”‚   β”‚   β”œβ”€β”€ home/                 # Home page components
β”‚   β”‚   β”‚   β”œβ”€β”€ AnimatedTitle.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ UploadZone.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ UploadContent.tsx
β”‚   β”‚   β”‚   └── UploadMessage.tsx
β”‚   β”‚   β”œβ”€β”€ icons/                # Custom icon components
β”‚   β”‚   β”œβ”€β”€ figma/                # Figma-specific components
β”‚   β”‚   β”œβ”€β”€ HomePage.tsx          # Landing/upload screen
β”‚   β”‚   β”œβ”€β”€ InstrumentSelectionScreen.tsx
β”‚   β”‚   β”œβ”€β”€ ProcessingScreen.tsx
β”‚   β”‚   β”œβ”€β”€ ResultsScreen.tsx
β”‚   β”‚   β”œβ”€β”€ ProjectsPage.tsx      # Projects management page
β”‚   β”‚   β”œβ”€β”€ ProfilePage.tsx       # User profile page
β”‚   β”‚   β”œβ”€β”€ Sidebar.tsx           # Draggable navigation
β”‚   β”‚   β”œβ”€β”€ AppHeader.tsx
β”‚   β”‚   β”œβ”€β”€ PageHeader.tsx
β”‚   β”‚   └── Breadcrumbs.tsx
β”‚   β”œβ”€β”€ config/                   # Configuration files
β”‚   β”‚   └── typography.ts
β”‚   β”œβ”€β”€ styles/                   # Global styles
β”‚   β”‚   └── globals.css
β”‚   β”œβ”€β”€ imports/                  # SVG and asset imports
β”‚   β”œβ”€β”€ assets/                   # Component assets (images)
β”‚   β”œβ”€β”€ App.tsx                   # Main application component with routing
β”‚   β”œβ”€β”€ main.tsx                  # React entry point
β”‚   └── index.css                 # Global CSS with animations
β”œβ”€β”€ build/                        # Production build output
β”œβ”€β”€ package.json                  # Dependencies and scripts
β”œβ”€β”€ vite.config.ts                # Vite configuration
β”œβ”€β”€ tailwind.config.js            # Tailwind v4 configuration
└── README.md                     # This file

πŸ› οΈ Tech Stack

  • Frontend Framework: React 18.3 with TypeScript
  • Build Tool: Vite 6.3
  • Styling: Tailwind CSS v4
  • UI Components: Shadcn/ui (Radix UI primitives)
  • Icons: Lucide React
  • State Management: React hooks
  • Form Handling: React Hook Form

πŸ“– Documentation

πŸ”§ Development

Available Scripts

  • npm run dev - Start development server
  • npm run build - Build for production
  • npm run preview - Preview production build locally

Key Dependencies

  • UI Components: 20+ Radix UI components
  • Charts: Recharts for data visualization
  • Forms: React Hook Form with validation
  • Themes: next-themes for dark/light mode support
  • Animations: CSS transitions and transforms

🎯 Usage

  1. Upload File - Drag and drop or click the circular gradient area to browse for MIDI/XML files
  2. Processing - Watch automated validation steps with musical staff visualization
  3. Select Instruments - Choose up to 4 instruments with style/difficulty preferences
  4. View Results - Explore generated harmony with expandable sheet music viewer
  5. Navigate - Use the draggable sidebar to access Projects and Profile pages

🌐 Browser Support

  • Chrome 90+
  • Firefox 88+
  • Safari 14+
  • Edge 90+

πŸ“ License

MIT License - see Attributions for asset credits.

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

πŸ“ž Support

For issues or questions:

  1. Check the Export Guide for common solutions
  2. Review browser console for errors
  3. Ensure Node.js version compatibility
  4. Check that all dependencies are installed

πŸš€ Future Enhancements

πŸ“‹ Recent Updates (v1.0.0)

November 2025

  • βœ… Fully responsive design across all screens (mobile to desktop)
  • βœ… Reduced and optimized circular gradient upload area
  • βœ… Added ripple animations to gray circles
  • βœ… Implemented Projects and Profile pages
  • βœ… Added sidebar navigation with home button functionality
  • βœ… Draggable sidebar with 6 snap positions
  • βœ… Enhanced ProcessingScreen with musical staff visualization
  • βœ… Improved InstrumentSelectionScreen with grid layout
  • βœ… Added quick action buttons to ResultsScreen

Built with ❀️ using React, TypeScript, and modern web technologies

v0.3.1[beta]