{"id":25171370,"url":"https://github.com/basemax/shortenerlaravelgraphql","last_synced_at":"2026-04-17T05:03:57.200Z","repository":{"id":188568034,"uuid":"676919579","full_name":"BaseMax/ShortenerLaravelGraphQL","owner":"BaseMax","description":"ShortenerLaravelGraphQL is a GraphQL-based web service developed using PHP 8.2 and Laravel 10. This project aims to provide a URL shortening service with a GraphQL API interface, making it easy to create short links and retrieve original URLs using GraphQL queries.","archived":false,"fork":false,"pushed_at":"2024-12-10T01:27:53.000Z","size":2800,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-28T17:08:09.231Z","etag":null,"topics":["graphql","laravel","laravel-graphql","php","php-graphql","php-laravel","url-shortener","url-shortener-api","url-shorter","url-shortner"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BaseMax.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-08-10T10:08:59.000Z","updated_at":"2024-11-13T21:33:21.000Z","dependencies_parsed_at":"2023-08-15T22:55:09.493Z","dependency_job_id":"50613c64-9aa1-4315-8217-9156121df4a5","html_url":"https://github.com/BaseMax/ShortenerLaravelGraphQL","commit_stats":null,"previous_names":["basemax/shortenerlaravelgraphql"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BaseMax%2FShortenerLaravelGraphQL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BaseMax%2FShortenerLaravelGraphQL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BaseMax%2FShortenerLaravelGraphQL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BaseMax%2FShortenerLaravelGraphQL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BaseMax","download_url":"https://codeload.github.com/BaseMax/ShortenerLaravelGraphQL/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247079296,"owners_count":20880030,"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","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":["graphql","laravel","laravel-graphql","php","php-graphql","php-laravel","url-shortener","url-shortener-api","url-shorter","url-shortner"],"created_at":"2025-02-09T09:19:59.289Z","updated_at":"2026-04-17T05:03:57.169Z","avatar_url":"https://github.com/BaseMax.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"![URL Shortener Laravel GraphQL](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/44795a12-1026-4945-810f-f9d427a2dffe)\n\n# URL Shortener Laravel GraphQL\n\nShortenerLaravelGraphQL is a GraphQL-based web service developed using PHP 8.2 and Laravel 10. This project aims to provide a URL shortening service with a GraphQL API interface, making it easy to create short links and retrieve original URLs using GraphQL queries.\n\n## Features\n\n- **URL shortening:** Generate short URLs from long URLs.\n- **URL redirection:** Redirect short URLs to their original long URLs.\n- **GraphQL API:** Intuitive API for creating short links and retrieving original URLs.\n\n## Prerequisites\n\nBefore you begin, ensure you have met the following requirements:\n\n- PHP 8.2 installed on your system.\n- Composer installed to manage PHP dependencies.\n- Laravel 10 installed globally or within the project.\n\n## Installation\n\nClone this repository to your local machine:\n\n```bash\ngit clone https://github.com/BaseMax/ShortenerLaravelGraphQL.git\n```\n\nNavigate to the project directory:\n\n```bash\ncd ShortenerLaravelGraphQL\n```\n\nInstall the required dependencies using Composer:\n\n```bash\ncomposer install\n```\n\nCopy the `.env.example` file and rename it to `.env`:\n\n```bash\ncp .env.example .env\n```\n\nGenerate the application key:\n\n```bash\nphp artisan key:generate\n```\n\nConfigure your database connection in the `.env` file.\n\nRun database migrations:\n\n```bash\nphp artisan migrate\n```\n\nStart the Laravel development server:\n\n```bash\nphp artisan serve\n```\n\nVisit `http://localhost:8000` in your web browser to access the GraphQL playground.\n\n## Usage\n\nShortenerLaravelGraphQL provides a GraphQL API endpoint for creating short links and redirecting to the original URLs. You can interact with the API using a GraphQL client or the built-in GraphQL playground.\n\n## GraphQL\n\n| Query/Mutation       | Description                                        | Examples                                             |\n|----------------------|----------------------------------------------------|------------------------------------------------------|\n| `allLinks`           | Get a list of all short links.                    | `{ allLinks { id, short_code, original_url } }`      |\n| `link`               | Get details of a specific short link.             | `{ link(id: \"abc123\") { id, short_code, original_url } }` |\n| `redirectLink`       | Redirect a short link to its original URL.        | (N/A)                                                |\n| `createShortLink`    | Create a new short link.                          | `{ createShortLink(url: \"https://www.example.com\") { id, short_code, original_url } }` |\n| `updateShortLink`    | Update details of an existing short link.        | `{ updateShortLink(id: \"abc123\", original_url: \"https://newurl.com\") { id, short_code, original_url } }` |\n| `deleteShortLink`    | Delete a short link.                              | `{ deleteShortLink(id: \"abc123\") }`                 |\n| `allUsers`           | Get a list of all users.                          | `{ allUsers { id, username, email } }`              |\n| `user`               | Get details of a specific user.                   | `{ user(id: \"user123\") { id, username, email } }`   |\n| `createUser`         | Create a new user.                                | `{ createUser(username: \"newuser\", email: \"new@example.com\") { id, username, email } }` |\n| `updateUser`         | Update details of an existing user.              | `{ updateUser(id: \"user123\", email: \"updated@example.com\") { id, username, email } }` |\n| `deleteUser`         | Delete a user.                                    | `{ deleteUser(id: \"user123\") }`                    |\n| `linkVisitStats`     | Get statistics for visits to a short link.       | `{ linkVisitStats(shortCode: \"abc123\") { total_visits, unique_visits } }` |\n| `userLinkStats`      | Get statistics for a user's short links.         | `{ userLinkStats(userId: \"user123\") { total_links, total_visits } }` |\n| `topVisitedLinks`    | Get a list of top visited short links.           | `{ topVisitedLinks(limit: 10) { id, short_code, original_url, total_visits } }` |\n| `searchLinks`        | Search for short links based on criteria.       | `{ searchLinks(keyword: \"example\", limit: 5) { id, short_code, original_url } }` |\n| `createUserSession`  | Create a new user session.                        | `{ createUserSession(userId: \"user123\") { id, token, created_at } }` |\n| `deleteUserSession`  | Delete a user session.                            | `{ deleteUserSession(sessionId: \"sess123\") }`       |\n| `createBookmark`     | Create a bookmark for a user.                   | `{ createBookmark(userId: \"user123\", linkId: \"abc123\") { id, user_id, link_id } }` |\n| `deleteBookmark`     | Delete a user's bookmark.                        | `{ deleteBookmark(userId: \"user123\", linkId: \"abc123\") }` |\n| `likeLink`           | Like a short link.                               | `{ likeLink(userId: \"user123\", linkId: \"abc123\") { id, user_id, link_id } }` |\n| `unlikeLink`         | Remove a like from a short link.                | `{ unlikeLink(userId: \"user123\", linkId: \"abc123\") }` |\n| `addComment`         | Add a comment to a short link.                   | `{ addComment(userId: \"user123\", linkId: \"abc123\", text: \"Great link!\") { id, user_id, link_id, text } }` |\n| `updateComment`      | Update a comment on a short link.               | `{ updateComment(commentId: \"comm123\", text: \"Updated comment.\") { id, user_id, link_id, text } }` |\n| `deleteComment`      | Delete a comment from a short link.              | `{ deleteComment(commentId: \"comm123\") }`          |\n| `rateLink`           | Rate a short link.                               | `{ rateLink(userId: \"user123\", linkId: \"abc123\", rating: 4) { id, user_id, link_id, rating } }` |\n| `updateRating`       | Update a user's rating for a short link.        | `{ updateRating(userId: \"user123\", linkId: \"abc123\", rating: 5) { id, user_id, link_id, rating } }` |\n| `deleteRating`       | Delete a user's rating for a short link.        | `{ deleteRating(userId: \"user123\", linkId: \"abc123\") }` |\n| `flagLink`           | Flag a short link for review.                   | `{ flagLink(userId: \"user123\", linkId: \"abc123\", reason: \"Inappropriate content\") { id, user_id, link_id, reason } }` |\n| `unflagLink`         | Remove a flag from a short link.                | `{ unflagLink(userId: \"user123\", linkId: \"abc123\") }` |\n| `reportLink`         | Report an issue with a short link.              | `{ reportLink(userId: \"user123\", linkId: \"abc123\", issue: \"Broken link\") { id, user_id, link_id, issue } }` |\n| `createCategory`     | Create a new category for short links.          | `{ createCategory(name: \"News\") { id, name } }`    |\n| `updateCategory`     | Update details of an existing category.        | `{ updateCategory(categoryId: \"cat123\", name: \"Updated Category\") { id, name } }` |\n| `deleteCategory`     | Delete a category.                               | `{ deleteCategory(categoryId: \"cat123\") }`         |\n| `addLinkToCategory`  | Add a short link to a category.                 | `{ addLinkToCategory(categoryId: \"cat123\", linkId: \"abc123\") { id, category_id, link_id } }` |\n| `removeLinkFromCategory` | Remove a short link from a category.         | `{ removeLinkFromCategory(categoryId: \"cat123\", linkId: \"abc123\") }` |\n| `searchCategories`   | Search for categories based on criteria.       | `{ searchCategories(keyword: \"news\", limit: 3) { id, name } }` |\n| `createTag`          | Create a new tag for short links.               | `{ createTag(name: \"technology\") { id, name } }`    |\n| `updateTag`          | Update details of an existing tag.             | `{ updateTag(tagId: \"tag123\", name: \"Updated Tag\") { id, name } }` |\n| `deleteTag`          | Delete a tag.                                     | `{ deleteTag(tagId: \"tag123\") }`                   |\n| `addTagToLink`       | Add a tag to a short link.                      | `{ addTagToLink(tagId: \"tag123\", linkId: \"abc123\") { id, tag_id, link_id } }` |\n| `removeTagFromLink`  | Remove a tag from a short link.                 | `{ removeTagFromLink(tagId: \"tag123\", linkId: \"abc123\") }` |\n| `searchTags`         | Search for tags based on criteria.             | `{ searchTags(keyword: \"tech\", limit: 2) { id, name } }` |\n| `createReport`       | Create a new report for a short link.           | `{ createReport(userId: \"user123\", linkId: \"abc123\", issue: \"Spam\") { id, user_id, link_id, issue } }` |\n| `updateReport`       | Update details of an existing report.         | `{ updateReport(reportId: \"rep123\", issue: \"Inaccurate information\") { id, user_id, link_id, issue } }` |\n| `deleteReport`       | Delete a report.                                 | `{ deleteReport(reportId: \"rep123\") }`             |\n| `approveLink`        | Approve a flagged short link.                   | `{ approveLink(linkId: \"abc123\") }`                |\n| `rejectLink`         | Reject a flagged short link.                     | `{ rejectLink(linkId: \"abc123\", reason: \"Low quality content\") }` |\n| `createNotification` | Create a new notification for a user.         | `{ createNotification(userId: \"user123\", message: \"New update!\") { id, message, created_at } }` |\n| `markAsRead`         | Mark a notification as read for a user.       | `{ markAsRead(notificationId: \"notif123\") }`        |\n| `deleteNotification` | Delete a notification for a user.             | `{ deleteNotification(notificationId: \"notif123\") }` |\n| `createSubscription` | Create a subscription for updates.           | `{ createSubscription(userId: \"user123\") { id, user_id, created_at } }` |\n| `cancelSubscription` | Cancel a subscription for a user.             | `{ cancelSubscription(userId: \"user123\") }`        |\n| `updateSettings`     | Update user-specific settings.               | `{ updateSettings(userId: \"user123\", theme: \"dark\") }` |\n| `resetPassword`      | Initiate the password reset process.         | `{ resetPassword(email: \"user@example.com\") }`      |\n| `changePassword`     | Change the user's password.                  | `{ changePassword(userId: \"user123\", newPassword: \"newpass123\") }` |\n\n## Database Scheme\n\n### Table: users\n- `id` (Primary Key)\n- `username` (Unique)\n- `email` (Unique)\n- `password`\n- `created_at`\n- `updated_at`\n\n### Table: links\n- `id` (Primary Key)\n- `user_id` (Foreign Key to `users`)\n- `short_code` (Unique)\n- `original_url`\n- `total_visits`\n- `created_at`\n- `updated_at`\n\n### Table: link_likes\n- `id` (Primary Key)\n- `user_id` (Foreign Key to `users`)\n- `link_id` (Foreign Key to `links`)\n- `created_at`\n- `updated_at`\n\n### Table: link_comments\n- `id` (Primary Key)\n- `user_id` (Foreign Key to `users`)\n- `link_id` (Foreign Key to `links`)\n- `text`\n- `created_at`\n- `updated_at`\n\n### Table: link_ratings\n- `id` (Primary Key)\n- `user_id` (Foreign Key to `users`)\n- `link_id` (Foreign Key to `links`)\n- `rating`\n- `created_at`\n- `updated_at`\n\n### Table: link_flags\n- `id` (Primary Key)\n- `user_id` (Foreign Key to `users`)\n- `link_id` (Foreign Key to `links`)\n- `reason`\n- `created_at`\n- `updated_at`\n\n### Table: link_reports\n- `id` (Primary Key)\n- `user_id` (Foreign Key to `users`)\n- `link_id` (Foreign Key to `links`)\n- `issue`\n- `created_at`\n- `updated_at`\n\n### Table: categories\n- `id` (Primary Key)\n- `name` (Unique)\n- `created_at`\n- `updated_at`\n\n### Table: category_links\n- `id` (Primary Key)\n- `category_id` (Foreign Key to `categories`)\n- `link_id` (Foreign Key to `links`)\n\n### Table: tags\n- `id` (Primary Key)\n- `name` (Unique)\n- `created_at`\n- `updated_at`\n\n### Table: link_tags\n- `id` (Primary Key)\n- `tag_id` (Foreign Key to `tags`)\n- `link_id` (Foreign Key to `links`)\n\n### Table: notifications\n- `id` (Primary Key)\n- `user_id` (Foreign Key to `users`)\n- `message`\n- `read` (Boolean)\n- `created_at`\n- `updated_at`\n\n### Table: user_sessions\n- `id` (Primary Key)\n- `user_id` (Foreign Key to `users`)\n- `token`\n- `created_at`\n- `updated_at`\n\n### Table: bookmarks\n- `id` (Primary Key)\n- `user_id` (Foreign Key to `users`)\n- `link_id` (Foreign Key to `links`)\n\n### Table: subscriptions\n- `id` (Primary Key)\n- `user_id` (Foreign Key to `users`)\n- `created_at`\n- `updated_at`\n\n## Examples:\n\n![Screenshot from 2023-08-15 10-08-58](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/7fe769c4-4438-4b66-8ea8-6251d286f8a4)\n\n![Screenshot from 2023-08-15 10-11-15](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/33361dc4-5a38-48c8-ae6c-465a36ae3799)\n\n![Screenshot from 2023-08-15 10-18-52](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/3f634362-04d5-4999-8387-e9ff215279e1)\n\n![Screenshot from 2023-08-15 10-24-51](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/079f4b64-195b-427e-b7ba-850f2b4fb33f)\n\n![Screenshot from 2023-08-15 10-40-05](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/d301d22e-db6d-40b6-9f4a-344e6bc14be0)\n\n![Screenshot from 2023-08-15 10-52-07](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/10a68317-5247-42ca-b930-c2cffa45ff0c)\n\n![Screenshot from 2023-08-15 10-54-11](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/4f7c948a-b7da-45be-86c0-74e1ac7727ef)\n\n![Screenshot from 2023-08-15 10-55-29](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/513a438f-043c-42b0-90c7-507516a274ad)\n\n![Screenshot from 2023-08-15 11-08-10](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/83194ea4-c5de-499c-97f7-ff1e94598751)\n\n![Screenshot from 2023-08-15 11-09-46](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/41b77b81-078a-4ab2-aa85-592bb02adce9)\n\n![Screenshot from 2023-08-15 11-26-31](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/5352a0e8-1f9b-49c5-b5d6-a76929f803ee)\n\n![Screenshot from 2023-08-15 11-56-28](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/d893b7d7-3883-48e2-bb01-a7b0a019e20b)\n\n![Screenshot from 2023-08-15 11-56-51](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/7dfc74c3-aa90-446a-a5a9-2a0788c76ece)\n\n![Screenshot from 2023-08-15 12-33-33](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/e4afe21e-cf25-4c09-8f44-e7c503ddce0c)\n\n![Screenshot from 2023-08-15 12-34-01](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/7594ea8f-e21a-4075-b8cd-6376e2b03826)\n\n![Screenshot from 2023-08-15 12-48-41](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/35eb1a61-fd91-42a0-9aad-22e7c78d8111)\n\n![Screenshot from 2023-08-15 12-49-14](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/957c5d7d-0748-4783-92c3-08dc126249d4)\n\n![Screenshot from 2023-08-15 12-50-06](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/62f90d5f-2f2f-46af-a8f0-0ffc5debdad4)\n\n![Screenshot from 2023-08-15 12-50-33](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/04822aa7-2b38-4a5f-8853-0538194f4862)\n\n![Screenshot from 2023-08-15 13-13-36](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/3b4abc4a-c7b7-48b9-9e12-30738bc27179)\n\n![Screenshot from 2023-08-15 13-13-56](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/05777409-c771-4c02-a074-0e561a5b5446)\n\n![Screenshot from 2023-08-15 13-14-28](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/da5af46e-6733-45fd-b8bb-955ee6ccb2eb)\n\n![Screenshot from 2023-08-15 15-38-34](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/7edec46e-e193-4637-88fa-e9bd56d3b0ed)\n\n![Screenshot from 2023-08-15 15-41-12](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/2603a187-b937-4bd6-83b9-4060b5508846)\n\n![Screenshot from 2023-08-15 16-05-48](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/7cf12205-8c26-4b0d-a416-878a5d5af754)\n\n![Screenshot from 2023-08-15 16-25-35](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/f102080a-a20c-4221-89f8-c7d9056069c8)\n\n![Screenshot from 2023-08-15 16-28-03](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/3a965de4-5cc0-4733-806b-da177add8e7d)\n\n![Screenshot from 2023-08-15 17-05-20](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/5b1cf1a5-cbd8-4554-a396-0643d9a3796c)\n\n![Screenshot from 2023-08-15 17-07-17](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/33479691-f8e0-4418-b4f9-442ffd2a8673)\n\n![Screenshot from 2023-08-15 17-24-16](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/90161c2a-6c58-4fc8-a895-ff08fe2ddd44)\n\n![Screenshot from 2023-08-15 17-51-41](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/4f5d4ef4-1021-4e39-a8e9-05133193f9f3)\n\n![Screenshot from 2023-08-15 18-11-27](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/381e53b0-42a5-4acf-ae85-beb29351c7de)\n\n![Screenshot from 2023-08-15 18-26-36](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/c07f19e0-2e74-4b66-bd3b-0f5e0c63b445)\n\n![Screenshot from 2023-08-15 18-32-04](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/e09886d9-7dd7-4975-b912-a7b94fc16b8e)\n\n![Screenshot from 2023-08-15 18-33-24](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/4ac52d22-f703-4ea3-a472-d5ec24d1966f)\n\n![Screenshot from 2023-08-15 20-11-57](https://github.com/BaseMax/ShortenerLaravelGraphQL/assets/107758775/030de49c-a079-40bd-a518-ecf8e7d85f6d)\n\n\n## Contributing\n\nContributions are welcome! If you'd like to contribute to ShortenerLaravelGraphQL, please follow these steps:\n\n- Fork the repository.\n- Create a new branch for your feature or bug fix.\n- Make your changes and commit them.\n- Push your changes to your fork.\n- Submit a pull request to the main branch of the original repository.\n\n## License\n\nThis project is licensed under the GPL-3.0 License.\n\nCopyright 2023, Max Base\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasemax%2Fshortenerlaravelgraphql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbasemax%2Fshortenerlaravelgraphql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasemax%2Fshortenerlaravelgraphql/lists"}