Skip to content

Conversation

@gurjeetsinghvirdee
Copy link
Contributor

@gurjeetsinghvirdee gurjeetsinghvirdee commented Oct 12, 2025

Description

This PR introduces a major upgrade to the music experience, focusing on in-app playlist management, local audio uploads, custom playback, and a beautiful, animated UI using Framer Motion. The work is ongoing see below for a list of completed and pending features.

✅ Features Implemented

  • Dedicated Mood Playlist page inside SkyBuddy
  • Dynamic weather-synced backgrounds (rain, snow, clouds, etc.)
  • User playlist management: add, edit, delete playlists by mood (local storage)
  • Add and delete tracks within playlists
  • Upload, list, play, and delete multiple local audio files per playlist
  • Custom, professional audio player UI (no default bar, no download)
  • Responsive UI with Framer Motion transitions and animations
  • No external redirection for local playback (Spotify/YT embed is in-app)
    • Interactive music player:
    • Volume control
    • Shuffle
    • Animated progress bar (the current bar is functional but not animated)
    • Next/Previous (for uploaded tracks in the custom player)
  • Shareable mood playlists: generate shareable links for playlists
  • State management with Zustand/Context API (currently using React state/hooks)
    • Storage with Cloudflare R2 + Cloudflare CDN (currently only local storage)

⏳ Features NOT YET Implemented

  • API integration: Spotify API/Open Music API for real track data (currently using local/demo data)

Attachments

image
Recording.2025-10-12.061121.1.mp4

…avorites, and framer-motion animations

- Add persistent playlist management by mood (local storage)
- Enable add, edit, delete tracks within playlists
- Support uploading, listing, playing, and deleting multiple local audio files per playlist
- Implement custom professional audio player UI (no default bar, no download)
- Fix pause/resume, progress, and re-upload logic for local audio
- Add song favoriting and favorites view (local storage)
- Integrate Framer Motion for animated, interactive music page and player
@gurjeetsinghvirdee
Copy link
Contributor Author

gurjeetsinghvirdee commented Oct 12, 2025

Heya @SrinjoyeeDey,
This PR will take some time. And just wanted to share a quick thought, Firebase might not be the best fit for storing all the mood playlist audio. Since we’re planning to have hundreds of songs (around 3GB+ total as we have 5 different moods), it could easily surpass the free tier limits. Firebase also doesn’t notify you when limits are crossed, so it might lead to unexpected billing later 😅.

I have an alternative suggestion that could work smoothly and stay completely free if you’d like. I can share that idea!

@SrinjoyeeDey
Copy link
Owner

@gurjeetsinghvirdee , yes please go ahead and share the idea

@gurjeetsinghvirdee
Copy link
Contributor Author

@SrinjoyeeDey,
We can use Cloudflare R2 + Cloudflare CDN, which gives 10GB free storage, super-fast global delivery, and smooth streaming without buffering.

It’s perfect for hosting all our mood playlist songs, and we can keep user favorites locally using localStorage. That way, everything stays fast, free, and simple to maintain.

@SrinjoyeeDey
Copy link
Owner

SrinjoyeeDey commented Oct 12, 2025

Go ahead @gurjeetsinghvirdee and also document the entire implementation which can smoothen other developers work

@gurjeetsinghvirdee
Copy link
Contributor Author

@SrinjoyeeDey
For documentation, I will open another PR that will not be a part of hacktoberfest. I mean don't label it anything, just mark it as docs, nothing else.

@SrinjoyeeDey
Copy link
Owner

Heyy @gurjeetsinghvirdee , any progress?

@gurjeetsinghvirdee
Copy link
Contributor Author

Heyy @gurjeetsinghvirdee , any progress?

Sorry, but my health is still down! I try to do this before 18

@gurjeetsinghvirdee
Copy link
Contributor Author

image

Added a custom music player with all functions

- Fixed hardcoded 'Happy' mood & URL param handling
- Added Inter + Plus Jakarta Sans typography system
- Introduced glass morphism & gradient visuals\n- Improved UX for mobile & mood selection
- Cleaned TypeScript imports and optimized CSS
@gurjeetsinghvirdee
Copy link
Contributor Author

image

- Implement proper error handling for audio playback
- Add empty state handling for playlists with no tracks
- Improve styling and UX for playlist creation and track management
- Fix sharing functionality for playlists
- Ensure proper mood filtering in PlaylistManager
- Add R2 upload worker for secure file storage
- Create storage service with mock implementation for contributors
- Add file validation and size limits (20MB max)
- Implement retry logic for network resilience
- Configure environment detection for dev/prod modes
- Add documentation for maintainers
@gurjeetsinghvirdee
Copy link
Contributor Author

Recording.2025-10-17.054637.mp4

Hey @SrinjoyeeDey,
I've implemented the code for Cloudflare R2 and CDN integration, but there's a minor blocker:

  • The API setup requires a credit card for account verification
  • I attempted to use my card, but it wasn't accepted
  • Currently using localStorage as a fallback for audio files
  • Once the account is verified, data will be fetched directly from Cloudflare R2

Spotify API Integration

The Spotify API integration code is implemented, but requires a deployed website:

  • OAuth redirect URLs must point to a deployed domain
  • Authentication flows will redirect to the SkyBuddy homepage if authentication fails
  • All the necessary code is in place for when we have a proper deployment

This PR is nearly complete with the following status:

✅ UnifiedPlayer component fully implemented
✅ Playlist management functionality complete
✅ Track upload/import functionality working
✅ README updated with Cloudflare setup instructions

🟡 Some CSS refinements still needed
🟡 Missing one button for adding local songs to playlists
🟡 API integrations are ready but require deployment/verification

We can address the remaining minor issues in future PRs.

Note: Any performance issues you're seeing are due to my system lagging, not the application itself.

@SrinjoyeeDey
Copy link
Owner

@gurjeetsinghvirdee well done but
image
can you update the ui for both dark and light mode and try to match it with the background with a subtle glowing background to elevate the theme

@SrinjoyeeDey
Copy link
Owner

Also @gurjeetsinghvirdee , for cloudflare I myself tried to use my card but it failed , is there any alternative way to test it or may be any alternative platform like cloudflare which doesn't require card details as many contributor is not comfortable with it.

@SrinjoyeeDey
Copy link
Owner

Another issue I want to address, previously, one of the buttons were redirecting to the spotify page, now as you said it requires authentication, can you explain how the entire process of authentication is to be done and is there any endpoint required for it? @gurjeetsinghvirdee

@gurjeetsinghvirdee
Copy link
Contributor Author

Hey @SrinjoyeeDey! No worries about the card issue.
Let's go with GitHub Releases for now only maintainers can upload, but we can automate it with a workflow/button later so contributors can add songs too. Once you get some funding in the future, we can easily migrate to Supabase or similar platforms that support user uploads seamlessly.

For Spotify authentication: You'll need to create a Spotify Developer app at Dashboard, get your Client ID & Secret, and set a Redirect URI. The flow works like: User clicks "Login with Spotify" → Redirects to Spotify → User authorizes → Spotify redirects back with auth code → We exchange it for access tokens. The main blocker is we need the site deployed first since Spotify requires a valid redirect URL.

@SrinjoyeeDey
Copy link
Owner

okay @gurjeetsinghvirdee , but can you update the ui? Then today itself i will review and merge it

@gurjeetsinghvirdee
Copy link
Contributor Author

Hey @SrinjoyeeDey,
Can you review it again? I believe this will not merge today 😅!

Light Mode

image image

Dark Mode

image image

@SrinjoyeeDey
Copy link
Owner

@gurjeetsinghvirdee , well done. But I observed this small error or am confused
playlist-problem

clicking on the text bar to add track(or can we add track?) is directing to a page This playlist doesn't have any tracks yet. Add some tracks to get started!

@SrinjoyeeDey
Copy link
Owner

@gurjeetsinghvirdee , any update?

@gurjeetsinghvirdee
Copy link
Contributor Author

@SrinjoyeeDey
Hey! Thanks for the reminder. I did look into the issue, but currently, my system is having some serious performance issues (VS Code and Codespaces both are lagging badly), and I also have a heavy workload for my full-time task. I need to complete and clean up data from 130+ forms before Monday.

I genuinely enjoy contributing and wanted to finish this PR, but with everything going on, I might not be able to fix it immediately. If it’s okay, I can pick it up in a few days once my schedule clears up otherwise, feel free to reassign or take over if it’s time-sensitive.

Sorry for the delay, and thanks for understanding!

@SrinjoyeeDey
Copy link
Owner

It's okay! Any other updates @gurjeetsinghvirdee

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants