Skip to content

Commit 6602d02

Browse files
committed
Add PWA support
1 parent 1638114 commit 6602d02

File tree

9 files changed

+6083
-1059
lines changed

9 files changed

+6083
-1059
lines changed

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ Sort your Spotify playlists by **BPM** and **harmonic key** using the **Camelot
55
![Vue 3](https://img.shields.io/badge/Vue-3.5-4FC08D?logo=vuedotjs)
66
![TypeScript](https://img.shields.io/badge/TypeScript-5.9-3178C6?logo=typescript)
77
![Vuestic UI](https://img.shields.io/badge/Vuestic_UI-1.10-154EC1)
8+
![PWA](https://img.shields.io/badge/PWA-Ready-5A0FC8?logo=pwa)
89

910
## Features
1011

1112
- **BPM Sorting** - Organize tracks by tempo for smooth energy transitions
1213
- **Harmonic Mixing** - Use the Camelot Wheel for seamless key-matched transitions
1314
- **Smart Preview** - See before/after comparison with harmonic score analysis
1415
- **Direct Spotify Integration** - Sort existing playlists without creating duplicates
16+
- **Progressive Web App** - Install on your device for offline access
1517

1618
## How It Works
1719

@@ -72,6 +74,26 @@ npm run build
7274
npm run preview
7375
```
7476

77+
## PWA Features
78+
79+
SortMyMix is a Progressive Web App with the following capabilities:
80+
81+
- **Installable** - Add to home screen on mobile or desktop
82+
- **Offline Support** - Core app works without internet
83+
- **Caching** - Spotify album artwork is cached for faster loading
84+
- **Auto Updates** - Service worker updates automatically
85+
86+
### Generating PNG Icons (Optional)
87+
88+
For better browser compatibility, you can generate PNG icons:
89+
90+
```bash
91+
npm install -D sharp
92+
node scripts/generate-icons.js
93+
```
94+
95+
Then update `vite.config.ts` to use PNG icons in the manifest.
96+
7597
## Deployment
7698

7799
This project is configured for GitHub Pages deployment:
@@ -95,6 +117,7 @@ npm run build
95117
- **Pinia** for state management
96118
- **Vue Router** for navigation
97119
- **Vite** for blazing fast builds
120+
- **vite-plugin-pwa** for PWA support
98121

99122
## The Camelot Wheel
100123

index.html

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,27 @@
22
<html lang="en">
33
<head>
44
<meta charset="UTF-8" />
5-
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
5+
<link rel="icon" type="image/svg+xml" href="/SortMyMix/favicon.svg" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
77
<title>SortMyMix - Sort Your Spotify Playlists</title>
8+
9+
<!-- PWA Meta Tags -->
10+
<meta name="theme-color" content="#1DB954" />
11+
<meta name="description" content="Sort your Spotify playlists by BPM and harmonic key using the Camelot Wheel for perfect DJ-style mixing" />
12+
13+
<!-- Apple PWA -->
14+
<meta name="apple-mobile-web-app-capable" content="yes" />
15+
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
16+
<meta name="apple-mobile-web-app-title" content="SortMyMix" />
17+
<link rel="apple-touch-icon" href="/SortMyMix/apple-touch-icon.svg" />
18+
19+
<!-- Open Graph -->
20+
<meta property="og:title" content="SortMyMix - Spotify Playlist Sorter" />
21+
<meta property="og:description" content="Sort your Spotify playlists by BPM and harmonic key using the Camelot Wheel" />
22+
<meta property="og:type" content="website" />
23+
<meta property="og:image" content="/SortMyMix/pwa-512x512.svg" />
24+
25+
<!-- Fonts -->
826
<link rel="preconnect" href="https://fonts.googleapis.com">
927
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
1028
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&family=Instrument+Serif:ital@0;1&display=swap" rel="stylesheet">
@@ -14,4 +32,3 @@
1432
<script type="module" src="/src/main.ts"></script>
1533
</body>
1634
</html>
17-

0 commit comments

Comments
 (0)