{"id":21748283,"url":"https://github.com/surfstudio/surfplaybook","last_synced_at":"2025-04-13T07:13:18.839Z","repository":{"id":40695344,"uuid":"357541265","full_name":"surfstudio/SurfPlaybook","owner":"surfstudio","description":"iOS framework for Playbook ","archived":false,"fork":false,"pushed_at":"2025-02-11T09:48:15.000Z","size":28601,"stargazers_count":19,"open_issues_count":0,"forks_count":1,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-13T07:13:10.850Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/surfstudio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2021-04-13T12:16:04.000Z","updated_at":"2025-02-11T09:48:19.000Z","dependencies_parsed_at":"2025-02-07T08:29:40.452Z","dependency_job_id":null,"html_url":"https://github.com/surfstudio/SurfPlaybook","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surfstudio%2FSurfPlaybook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surfstudio%2FSurfPlaybook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surfstudio%2FSurfPlaybook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surfstudio%2FSurfPlaybook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/surfstudio","download_url":"https://codeload.github.com/surfstudio/SurfPlaybook/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248675422,"owners_count":21143768,"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":[],"created_at":"2024-11-26T08:12:54.985Z","updated_at":"2025-04-13T07:13:18.818Z","avatar_url":"https://github.com/surfstudio.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SurfPlaybook\n\n[![GitHubActions Build Status](https://github.com/surfstudio/SurfPlaybook/workflows/CI/badge.svg)](https://github.com/surfstudio/SurfPlaybook/actions)\n[![CocoaPods Version](https://img.shields.io/cocoapods/v/SurfPlaybook.svg?style=flat)](https://cocoapods.org/pods/SurfPlaybook)\n[![SPM Compatible](https://img.shields.io/badge/SPM-compatible-blue.svg)](https://github.com/apple/swift-package-manager)\n\niOS framework for Playbook\n\n[![SurfPlaybook](https://i.ibb.co/DY0GQ1F/1026.png)](https://github.com/surfstudio/SurfPlaybook)\n\n![Документация](https://surfstudio.github.io/SurfPlaybook/documentation/surfplaybook)\n\n## About\n\nБиблиотека для быстрого и легкого построения playbook-а проекта, который бы включал в себя его основные UI-компоненты,\nа также, при необходимости, давал бы возможность быстрого доступа к его основным экранам.\n\n## Screenshots\n\n![SurfPlaubookScreenshots](https://i.ibb.co/Dfzw28m/Group-5765.png)\n\n## Installation\n\n#### CocoaPods:\n\nДобавьте в свой Podfile следующую строку, затем запустите `pod install`\n\n```ruby\npod 'SurfPlaybook'\n```\n\n#### Swift Package Manager\n\n- В XCode пройдите в `File \u003e Swift Packages \u003e Add Package Dependency`\n- Введите URL репозитория `https://github.com/surfstudio/SurfPlaybook.git`\n\n## Features\n\nПри создании библиотеки преследовались следующие цели: создать площадку для тестирования и наглядного отображения всех переиспользуемых компонентов проекта\n\n- что могло бы помочь как при проектировании новых фич\n- так и при взаимодействии с дизайн-отделом\n- облегчило бы вход новых разработчиков в проект\n- и ускорило бы разработку\n\nДля этого были реализованы следующие фичи:\n\n- **Chapters-Page** - система глав и страниц, как в настоящей книге, где каждой главе соответствует набор UI-компонентов, объединенных по смыслу общим принаком,\nа каждой странице - непосредственно сам UI-компонент\n- общее отображение всех UI-компонентов, поиск по названию, а также детальный просмотр компонента\n- возможность задать набор различных состояний для одного UI-компонента и возможность переключения между ними при его детальном просмотре\n- **UIKit Pages** - механика для построения полноценного UIKit-а проекта, где вам будет дана возможность заполнить табличные экраны необходимыми именно вам данными,\nдля, например, отображения цветовой палитры приложения, или же для отображения всех доступных стилей кнопок\n- **Flow Coordinators** - возможность задать точку входа на любой экран приложения, или же получить возможность подключить тестовый экран-playground\nдля тестирования новых UI-компонентов в процессе их разработки\n- возможность кастомизации цветовой палитры и текстов playbook-а\n\n## Example\n\nВсе вышеперечисленное можно увидеть в Example-проекте. Для его корректного запуска и конфигурации скачайте репозиторий и выполните команду `make init` перед тем как его запустить.\n\n## Usage\n\nДоступ к playbook осуществляется через singleton\n\n```swift\nPlaybook.shared\n```\n\nДальнейшая работа с ним заключается в двух шагах\n\n```swift\nfunc application(_ application: UIApplication,\n                 didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -\u003e Bool {\n    window = UIWindow(frame: UIScreen.main.bounds)\n    window?.rootViewController = UIViewController()\n    window?.makeKeyAndVisible()\n\n    // 1\n    Playbook.shared\n        .add(chapter: ControlsChapter().build())\n        .add(uiKitPage: ColorsUIKitPage())\n        .add(flowCoordinator: AuthFlowCoordinator())\n\n    // 2\n    Playbook.shared.start(from: self.window)\n    return true\n}\n```\n \n\n1. Заполнить playbook необходимыми вам данными\n2. Запустить playbook, передав в качестве параметра `KeyAndVisible`-window, в рамках которого отображается приложение\n\nПри необходимости - перед шагом `[2]` можно изменить цветовую палитру playbook-а и вшитые в него тексты на подходящие именно вам (для этого предусмотрены `ColorsConfig` и `StringsConfig`).\n\n## Changelog\n\nСписок всех изменений можно посмотреть в этом [файле](./CHANGELOG.md).\n\n## License\n\n[MIT License](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsurfstudio%2Fsurfplaybook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsurfstudio%2Fsurfplaybook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsurfstudio%2Fsurfplaybook/lists"}