{"id":30594029,"url":"https://github.com/codershubinc/music-codershubinc","last_synced_at":"2025-08-29T19:33:21.842Z","repository":{"id":310659312,"uuid":"839898940","full_name":"codershubinc/music-codershubinc","owner":"codershubinc","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-19T12:06:53.000Z","size":1871,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-19T14:23:27.209Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://musichubinc.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codershubinc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-08T14:47:25.000Z","updated_at":"2025-08-19T12:06:56.000Z","dependencies_parsed_at":"2025-08-19T14:23:44.420Z","dependency_job_id":"34e6b05d-a54e-41c6-a28a-a5ca02486e51","html_url":"https://github.com/codershubinc/music-codershubinc","commit_stats":null,"previous_names":["codershubinc/music-codershubinc"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/codershubinc/music-codershubinc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codershubinc%2Fmusic-codershubinc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codershubinc%2Fmusic-codershubinc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codershubinc%2Fmusic-codershubinc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codershubinc%2Fmusic-codershubinc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codershubinc","download_url":"https://codeload.github.com/codershubinc/music-codershubinc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codershubinc%2Fmusic-codershubinc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272749611,"owners_count":24986868,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-29T02:00:10.610Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-29T19:33:21.191Z","updated_at":"2025-08-29T19:33:21.833Z","avatar_url":"https://github.com/codershubinc.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Music Hub (Next.js + Appwrite)\n\nA modern, themeable music player web app with playlists, user accounts, and media session controls.\n\n- Live: \u003chttps://music-codershubinc.vercel.app\u003e\n\n![Home Page](.github/static/homePage.png)\n\nCaption: Home page — title shows \"Playlists\" (or other section when switched).\n\n## Features\n\n- Playlists\n  - View all playlists and your own (admin-gated for now)\n  - Add/remove songs to user playlists\n  - Search singer playlists when uploading\n- Player\n  - Inline and fullscreen players\n  - Media Session integration (lock screen/keyboard media keys)\n  - Next/Previous, seek, pause/play, queue handling\n- Auth \u0026 Profiles\n  - Appwrite-based auth\n  - User preferences (avatars, created playlists)\n  - Avatar upload/change with preview\n- Theming \u0026 UI\n  - Dark mode with `next-themes`\n  - Tailwind CSS + Radix UI + shadcn-inspired components\n  - AMP-friendly ad snippet support\n\n## Tech Stack\n\n- Framework: `Next.js 14`\n- Language: `TypeScript`\n- UI: `Tailwind CSS`, Radix UI primitives, Framer Motion\n- State/Context: React Context (`AuthContext`)\n- Backend: `Appwrite` (Auth, DB, Storage)\n- Toasts: `react-hot-toast`\n\n## Screenshots\n\nThese are under `.github/static` in this repo.\n\n![Home Page](.github/static/homePage.png)\n\nCaption: Home page — title shows \"Playlists\" (or other section when switched).\n\n![Player (compact)](.github/static/musicPlayer00.png)\n\nCaption: Music player (compact view) — play/pause, next/previous, seek.\n\n![Player (full)](.github/static/musicPlayer01.png)\n\nCaption: Music player (full-screen view) with artwork and controls.\n\n![View Playlist](.github/static/viewPlaylist.png)\n\nCaption: Playlist view — list of tracks with actions.\n\n## Getting Started\n\n1. Install dependencies\n\n```zsh\nbun install # or npm install / pnpm install / yarn\n```\n\n1. Configure environment variables\n\nCreate a `.env.local` in the project root with your Appwrite values. These are referenced in `src/conf/conf.ts`:\n\n```env\nNEXT_PUBLIC_APPWRITE_PROJECT_ID=...\nNEXT_PUBLIC_APPWRITE_DATABASE_ID=...\nNEXT_PUBLIC_APPWRITE_USER_CONFIG_COLLECTION_ID=...\nNEXT_PUBLIC_APPWRITE_MUSIC_CONFIG_COLLECTION_ID=...\nNEXT_PUBLIC_APPWRITE_MUSIC_PLAYLIST_COLLECTION_ID=...\nNEXT_PUBLIC_APPWRITE_MUSIC_PLAYLIST_BY_USER_COLLECTION_ID=...\nNEXT_PUBLIC_APPWRITE_MUSIC_BUCKET_ID=...\nNEXT_PUBLIC_APPWRITE_AVATAR_BUCKET_ID=...\nNEXT_PUBLIC_SECRET_KEY=...\nNEXT_PUBLIC_APPWRITE_DEV_KEY=...\n```\n\n1. Run the dev server\n\n```zsh\nnpm run dev\n# or\npnpm dev\n# or\nyarn dev\n# or\nbun run dev\n```\n\nOpen \u003chttp://localhost:3000\u003e\n\n## Scripts\n\n- `dev`: start Next.js dev server\n- `build`: build production bundle\n- `start`: start production server\n- `lint`: run Next.js ESLint\n\n## Project Structure (high level)\n\n- `src/app/*` routes, layouts, pages (Next.js App Router)\n- `src/components/*` UI and feature components\n- `src/context/AuthContext.tsx` auth state and user prefs\n- `src/config/*` Appwrite SDK usage and DB configs\n- `src/utils/*` helpers, media session, playback controllers\n- `public/*` static assets\n\n## Notes\n\n- Admin-only sections: Some playlist management features are gated to users with `labels` containing `admin`.\n- Media Session: If the browser doesn’t support Media Session API, player still works without media key bindings.\n\n## Deployment\n\nDeploy easily on Vercel (recommended). Ensure all `NEXT_PUBLIC_*` env vars are set in your deployment environment.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodershubinc%2Fmusic-codershubinc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodershubinc%2Fmusic-codershubinc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodershubinc%2Fmusic-codershubinc/lists"}