{"id":26040262,"url":"https://github.com/meeksonjr/clone-for-sportify_next","last_synced_at":"2026-05-03T12:32:12.722Z","repository":{"id":280940139,"uuid":"943668790","full_name":"MeeksonJr/clone-for-sportify_next","owner":"MeeksonJr","description":"SoundBite: Spotify-Powered Music Discovery App","archived":false,"fork":false,"pushed_at":"2025-03-06T05:17:06.000Z","size":172,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-06T06:20:12.260Z","etag":null,"topics":["api","music","nextjs","spotify-api","student-project","tailwindcss","vercel-deployment"],"latest_commit_sha":null,"homepage":"https://clone-for-sportify-next.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/MeeksonJr.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}},"created_at":"2025-03-06T04:34:53.000Z","updated_at":"2025-03-06T05:19:53.000Z","dependencies_parsed_at":"2025-03-06T06:20:18.891Z","dependency_job_id":"c2d6414e-8a32-4a89-828a-072fe74de3e8","html_url":"https://github.com/MeeksonJr/clone-for-sportify_next","commit_stats":null,"previous_names":["meeksonjr/clone-for-sportify_next"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MeeksonJr/clone-for-sportify_next","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeeksonJr%2Fclone-for-sportify_next","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeeksonJr%2Fclone-for-sportify_next/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeeksonJr%2Fclone-for-sportify_next/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeeksonJr%2Fclone-for-sportify_next/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MeeksonJr","download_url":"https://codeload.github.com/MeeksonJr/clone-for-sportify_next/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeeksonJr%2Fclone-for-sportify_next/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271723045,"owners_count":24809670,"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-22T02:00:08.480Z","response_time":65,"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":["api","music","nextjs","spotify-api","student-project","tailwindcss","vercel-deployment"],"created_at":"2025-03-07T12:08:59.176Z","updated_at":"2026-05-03T12:32:12.672Z","avatar_url":"https://github.com/MeeksonJr.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Here’s the updated **README.md** file in one clean, copyable format:\n\n```md\n# SoundBite: Spotify-Powered Music Discovery App\n\n## Table of Contents\n1. [Overview](#overview)\n2. [Features](#features)\n3. [Tech Stack](#tech-stack)\n4. [Prerequisites](#prerequisites)\n5. [Setup and Installation](#setup-and-installation)\n6. [Project Structure](#project-structure)\n7. [Key Components](#key-components)\n8. [Usage](#usage)\n9. [API Routes](#api-routes)\n10. [Authentication](#authentication)\n11. [Styling](#styling)\n12. [Error Handling](#error-handling)\n13. [Testing](#testing)\n14. [Deployment](#deployment)\n15. [Contributing](#contributing)\n16. [License](#license)\n17. [Acknowledgements](#acknowledgements)\n18. [Support](#support)\n\n---\n\n## Overview\n\nSoundBite is a web application built with **Next.js** that leverages the **Spotify API** to provide users with a rich music discovery experience. This app allows users to **search for tracks**, **view artist details**, **explore new releases**, and **play music previews**. For authenticated users, it offers **full track playback** using the **Spotify Web Playback SDK**.\n\n---\n\n## Features\n\n- **Search Functionality**\n  - Search for tracks, artists, and albums across Spotify's vast library.\n  - Real-time search suggestions.\n\n- **Artist Pages**\n  - Detailed artist profiles with top tracks, albums, and related artists.\n\n- **Album Pages**\n  - Full track listings and release details.\n\n- **New Releases**\n  - Showcase of the latest album drops.\n\n- **Music Playback**\n  - Full track playback for logged-in users, 30-second previews for others.\n\n- **User Authentication**\n  - Spotify OAuth integration for personalized experiences.\n\n- **Responsive Design**\n  - Fully optimized for mobile and desktop.\n\n- **Accessibility**\n  - Implemented with web accessibility standards.\n\n---\n\n## Tech Stack\n\n- **Frontend**\n  - Next.js 13 with App Router\n  - React 18\n  - TypeScript\n\n- **Styling**\n  - Tailwind CSS\n  - CSS Modules\n\n- **UI Components**\n  - shadcn/ui\n\n- **State Management**\n  - React Context API\n  - React Query\n\n- **API Integration**\n  - Spotify Web API\n  - Next.js API Routes\n\n- **Authentication**\n  - Spotify OAuth\n  - NextAuth.js\n\n- **Testing**\n  - Jest\n  - React Testing Library\n\n- **Linting \u0026 Formatting**\n  - ESLint\n  - Prettier\n\n---\n\n## Prerequisites\n\nEnsure you have:\n\n- **Node.js** (v14+)\n- **npm** (v6+) or **yarn** (v1.22+)\n- A **Spotify Developer account**\n- **Git** installed\n\n---\n\n## Setup and Installation\n\n1. Clone the repository:\n\n   ```sh\n   git clone https://github.com/MeeksonJr/soundbite.git\n   cd soundbite\n   ```\n\n2. Install dependencies:\n\n   ```sh\n   npm install\n   # or\n   yarn install\n   ```\n\n3. Create a `.env.local` file and add:\n\n   ```env\n   SPOTIFY_CLIENT_ID=your_spotify_client_id\n   SPOTIFY_CLIENT_SECRET=your_spotify_client_secret\n   NEXT_PUBLIC_BASE_URL=https://api.spotify.com.\n   SPOTIFY_REDIRECT_URI=https://open.spotify.com/\n   ```\n\n4. Start the development server:\n\n   ```sh\n   npm run dev\n   # or\n   yarn dev\n   ```\n\n5. Open **[http://localhost:3000](http://localhost:3000)** in your browser.\n\n---\n\n## Project Structure\n\n```\n.\n├── app/                # Next.js app directory\n│   ├── api/            # API routes\n│   ├── ....            # Folders of content\n│   ├── page.tsx        # Page component\n│   ├── layout.tsx      # Root layout\n│   ├── globals.css     # Global CSS file\n├── |components/        # Reusable components\n├── |hooks/             # Custom React hooks\n├── |lib/               # lib functions\n├── public/             # Static assets\n├── .env.local          # Environment variables\n├── tsconfig.json       # TypeScript configuration\n├── next.config.js      # Next.js configuration\n├── package.json        # Project dependencies and scripts\n```\n\n---\n\n## Key Components\n\n- **`SpotifyPlayer.tsx`** - Handles music playback.\n- **`SearchBar.tsx`** - Implements search with auto-suggestions.\n- **`ArtistCard.tsx`** - Displays artist details.\n- **`TrackList.tsx`** - Renders track lists with playback controls.\n\n---\n\n## Usage\n\n- **Search for music**: Enter a track, artist, or album in the search bar.\n- **View artist details**: Click an artist for their top songs, albums, and related artists.\n- **Play tracks**: Click play on a track.\n- **Login with Spotify**: Sign in for full playback features.\n\n---\n\n## API Routes\n\n- **`/api/spotify/auth`** - Handles Spotify OAuth authentication.\n- **`/api/spotify/search`** - Fetches search results from Spotify API.\n- **`/api/spotify/artist/[id]`** - Retrieves artist details.\n- **`/api/spotify/playlist/[id]`** - Fetches a specific playlist.\n\n---\n\n## Authentication\n\n- Uses **Spotify OAuth 2.0** for user login.\n- Tokens are stored in **cookies** for authentication.\n- Full track playback is enabled using the **Spotify Web Playback SDK**.\n\n---\n\n## Styling\n\n- **Tailwind CSS** for styling.\n- **Mobile-first design** approach.\n- **Dark mode support**.\n\n---\n\n## Error Handling\n\n- Friendly **error messages** if something goes wrong.\n- Uses **React Error Boundaries** for unexpected failures.\n- Handles **Spotify API rate limits** gracefully.\n\n---\n\n## Testing\n\nRun tests using:\n\n```sh\nnpm test\n# or\nyarn test\n```\n\n---\n\n## Deployment\n\nDeploy SoundBite to **Vercel**:\n\n1. Install the **Vercel CLI**:\n\n   ```sh\n   npm install -g vercel\n   ```\n\n2. Deploy:\n\n   ```sh\n   vercel\n   ```\n\n---\n\n## Contributing\n\nContributions are welcome! Follow these steps:\n\n1. Fork the repo.\n2. Create a new branch:\n\n   ```sh\n   git checkout -b feature-name\n   ```\n\n3. Commit your changes:\n\n   ```sh\n   git commit -m \"Add new feature\"\n   ```\n\n4. Push the branch:\n\n   ```sh\n   git push origin feature-name\n   ```\n\n5. Open a **Pull Request**.\n\n---\n\n## License\n\nThis project is licensed under the **MIT License**.\n\n---\n\n## Acknowledgements\n\n- **Spotify** for their API.\n- Inspired by various **music discovery platforms**.\n- Built using **Next.js**, **React**, and **TypeScript**.\n\n---\n\n## Support\n\nFor any issues, open an issue on **[GitHub](https://github.com/MeeksonJr/soundbite/issues)**.\n\n---\n\n🚀 **Happy Listening!** 🎵","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeeksonjr%2Fclone-for-sportify_next","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeeksonjr%2Fclone-for-sportify_next","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeeksonjr%2Fclone-for-sportify_next/lists"}