Skip to content

LiliaBilous/TrackManagerApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

54 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎡 Music Track Manager

A Vue 3 frontend application for managing music tracks with advanced features including audio playback, waveform visualization, and real-time updates. Built with Vue 3 + TypeScript and integrated with a provided Node.js backend.

πŸš€ Quick Start

Prerequisites

  • Node.js v20.13.1 or higher
  • NPM v10+ or higher

Install All & Run (Monorepo)

npm install
npm run dev

Backend Setup

cd backend
npm install
npm run dev

Backend will be available at: http://localhost:8000
GraphQL Playground: http://localhost:8000/graphql

Frontend Setup

cd frontend
npm install
npm run dev

Frontend will be available at: http://localhost:3000

πŸ›  Tech Stack

Frontend

  • Vue 3 + Composition API
  • TypeScript for type safety
  • Pinia for state management
  • Vite for fast development and building
  • WaveSurfer.js for audio waveform visualization
  • Playwright for E2E & Component testing
  • Vitest for unit testing
  • Apollo Client for GraphQL integration

Backend (Provided)

  • Node.js with Express
  • GraphQL with Apollo Server (migrated from REST API)
  • TypeScript for type safety
  • File upload handling
  • REST API endpoints
  • Vitest for testing

✨ Features

Core Functionality

  • πŸ“‹ Track Management - Create, edit, delete tracks
  • 🎧 Audio Playback - Play tracks with waveform visualization
  • πŸ“ File Upload - Upload audio files with validation
  • πŸ” Advanced Filtering - Filter by genre, artist, title
  • πŸ“„ Pagination - Efficient track list navigation
  • 🏷️ Genre Management - Add/remove genre tags

Advanced Features

  • βœ… Bulk Operations - Select and delete multiple tracks
  • βœ… Real-time Updates - GraphQL subscriptions for live sync
  • βœ… Responsive Design - Works on desktop and mobile
  • βœ… Accessibility - Keyboard navigation and ARIA support

πŸ§ͺ Testing

Frontend Tests

cd frontend
npm run test          # Unit tests (Vitest)
npm run test:e2e      # E2E tests (Playwright)
npm run test:ct       # Component tests (Playwright CT)

Backend Tests

cd backend
npm run test          # Unit tests (Vitest)

πŸ“ Project Structure

β”œβ”€β”€ frontend/                 # Vue 3 + TypeScript application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ features/         # Feature-based modules
β”‚   β”‚   β”‚   β”œβ”€β”€ tracks/       # Track management
β”‚   β”‚   β”‚   β”œβ”€β”€ filters/      # Search and filtering
β”‚   β”‚   β”‚   └── audio/        # Audio playback
β”‚   β”‚   β”œβ”€β”€ shared/           # Reusable components & utilities
β”‚   β”‚   └── tests/            # Test files
β”‚   β”œβ”€β”€ docs/                 # Documentation & ADRs
β”‚   └── public/               # Static assets
β”œβ”€β”€ backend/                  # Provided Node.js + GraphQL API
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ controllers/      # Route handlers
β”‚   β”‚   β”œβ”€β”€ graphql/          # GraphQL schema & resolvers
β”‚   β”‚   β”œβ”€β”€ types/            # TypeScript types
β”‚   β”‚   └── utils/            # Utilities
β”‚   β”œβ”€β”€ data/                 # Database files
β”‚   └── uploads/              # Uploaded audio files
└── .github/workflows/        # CI/CD pipeline

πŸ”§ Development

Available Scripts

Frontend

cd frontend
npm run dev          # Start development server
npm run build        # Build for production
npm run preview      # Preview production build
npm run lint         # Run ESLint
npm run analyze      # Analyze bundle size

Backend

cd backend
npm run dev          # Start development server
npm run build        # Build TypeScript
npm run start        # Start production server
npm run test         # Run tests

πŸ“Š Performance & Quality

  • βœ… Bundle Analysis - Track bundle size with rollup-plugin-visualizer
  • βœ… Lighthouse Reports - Performance, accessibility, SEO scores
  • βœ… Security Audit - Regular security assessments
  • βœ… Code Coverage - Comprehensive test coverage
  • βœ… CI/CD Pipeline - Automated quality checks

πŸ“š Documentation

🀝 Contributing

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

🎯 Learning Objectives

This project demonstrates:

  • Modern Frontend Architecture with Vue 3 + TypeScript
  • API Integration with GraphQL (migrated from REST) and REST endpoints
  • Testing Strategies (Unit, Component, E2E)
  • CI/CD Best Practices with GitHub Actions
  • Documentation Standards with ADRs and comprehensive READMEs
  • Performance Optimization with bundle analysis and Lighthouse
  • Security Awareness with regular audits
  • Engineering Culture with proper project structure and conventions

About

This is a test assignment aimed at building a single-page application (SPA) for managing music tracks.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors