{"id":30091936,"url":"https://github.com/permitio/springboot-authorization-example-app","last_synced_at":"2025-08-09T07:54:26.780Z","repository":{"id":305211254,"uuid":"1017268568","full_name":"permitio/springboot-authorization-example-app","owner":"permitio","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-10T09:22:52.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-30T01:06:29.380Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/permitio.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":"2025-07-10T09:22:22.000Z","updated_at":"2025-07-10T09:22:56.000Z","dependencies_parsed_at":"2025-07-18T23:34:29.653Z","dependency_job_id":"6bd65b74-120d-4cd6-8729-fdb6b6b9fa7f","html_url":"https://github.com/permitio/springboot-authorization-example-app","commit_stats":null,"previous_names":["permitio/springboot-authorization-example-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/permitio/springboot-authorization-example-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permitio%2Fspringboot-authorization-example-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permitio%2Fspringboot-authorization-example-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permitio%2Fspringboot-authorization-example-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permitio%2Fspringboot-authorization-example-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/permitio","download_url":"https://codeload.github.com/permitio/springboot-authorization-example-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permitio%2Fspringboot-authorization-example-app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269548490,"owners_count":24436109,"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-09T02:00:10.424Z","response_time":111,"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-09T07:54:25.820Z","updated_at":"2025-08-09T07:54:26.761Z","avatar_url":"https://github.com/permitio.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎵 Spring Boot Music Player with Permit.io Authorization\n\nA modern, responsive web-based music player built with Spring Boot and featuring fine-grained authorization using Permit.io.\n\n## ✨ Features\n\n-   **Music Management**: Browse songs, create playlists, queue management\n-   **Authorization**: Fine-grained permissions using Permit.io\n-   **Multi-User Support**: Switch between users with different access levels\n-   **Modern UI**: Dark theme with responsive design\n-   **Real-time Permissions**: Dynamic permission checks for all actions\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n-   Java 17 or higher\n-   Maven 3.6 or higher\n-   Permit.io account (free at [app.permit.io](https://app.permit.io))\n\n### Setup\n\n1. **Clone the repository**\n\n    ```bash\n    git clone \u003crepository-url\u003e\n    cd springboot-music-player\n    ```\n\n2. **Configure Permit.io**\n\n    - Create a free account at [app.permit.io](https://app.permit.io)\n    - Get your API key from the dashboard\n    - Update `src/main/resources/application.properties`:\n        ```properties\n        permit.api.key=YOUR_PERMIT_API_KEY_HERE\n        ```\n\n3. **Run the application**\n\n    ```bash\n    ./run.sh\n    ```\n\n    Or manually:\n\n    ```bash\n    mvn spring-boot:run\n    ```\n\n4. **Access the application**\n   Open your browser and navigate to: `http://localhost:8080`\n\n## 🔐 Permission Model\n\nThe application uses Permit.io to enforce the following permissions:\n\n### Resources\n\n-   **playlist**: Public and private playlists\n-   **song**: Individual songs\n\n### Actions\n\n-   **view-public**: View public playlists\n-   **view-private**: View private playlists\n-   **add-to-playlist**: Add songs to playlists\n-   **delete**: Remove songs from playlists\n-   **play**: Play songs\n-   **add-to-queue**: Add songs to playback queue\n\n## 🏗️ Architecture\n\n### Backend\n\n-   **Spring Boot**: REST API with authorization enforcement\n-   **Permit.io SDK**: Real-time permission checks\n-   **In-memory storage**: Simple data layer for demo purposes\n\n### Frontend\n\n-   **Thymeleaf + Bootstrap**: Responsive UI\n-   **jQuery**: AJAX calls with permission-aware error handling\n\n## 🛠️ Development\n\n### Project Structure\n\n```\nsrc/\n├── main/\n│   ├── java/com/example/musicplayer/\n│   │   ├── MusicPlayerApplication.java\n│   │   ├── controller/          # REST endpoints with authorization\n│   │   ├── model/              # Data models\n│   │   └── config/             # Permit.io configuration\n│   └── resources/\n│       ├── static/             # CSS and JavaScript\n│       ├── templates/          # Thymeleaf templates\n│       └── application.properties\n```\n\n### API Endpoints\n\n-   `GET /api/songs` - List all songs\n-   `GET /api/songs/{id}/play` - Get song playback URL (requires permission)\n-   `GET /api/playlists/{id}` - Get playlist (requires view permission)\n-   `POST /api/playlists/{id}/songs` - Add song to playlist (requires permission)\n-   `DELETE /api/playlists/{id}/songs/{songId}` - Remove song (requires permission)\n\n## 📝 License\n\nThis project is open source and available under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpermitio%2Fspringboot-authorization-example-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpermitio%2Fspringboot-authorization-example-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpermitio%2Fspringboot-authorization-example-app/lists"}