{"id":26593740,"url":"https://github.com/o2sdev/openselfservice","last_synced_at":"2026-04-01T18:38:47.110Z","repository":{"id":280995883,"uuid":"942784074","full_name":"o2sdev/openselfservice","owner":"o2sdev","description":"Open Self Service - The Open Source Composable Frontend for Customer Portals","archived":false,"fork":false,"pushed_at":"2026-03-25T16:48:29.000Z","size":94743,"stargazers_count":168,"open_issues_count":34,"forks_count":29,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-03-25T18:21:47.196Z","etag":null,"topics":["composable","customer-account","frontend","headless","headless-cms","nestjs","nextjs","portal","react","self-service","selfservice","shadcn-ui","strapi","typescript"],"latest_commit_sha":null,"homepage":"https://www.openselfservice.com","language":"TypeScript","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/o2sdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-04T17:06:29.000Z","updated_at":"2026-03-25T09:01:54.000Z","dependencies_parsed_at":"2026-03-25T11:03:39.190Z","dependency_job_id":null,"html_url":"https://github.com/o2sdev/openselfservice","commit_stats":null,"previous_names":["o2sdev/openselfservice"],"tags_count":751,"template":false,"template_full_name":null,"purl":"pkg:github/o2sdev/openselfservice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o2sdev%2Fopenselfservice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o2sdev%2Fopenselfservice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o2sdev%2Fopenselfservice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o2sdev%2Fopenselfservice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/o2sdev","download_url":"https://codeload.github.com/o2sdev/openselfservice/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o2sdev%2Fopenselfservice/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["composable","customer-account","frontend","headless","headless-cms","nestjs","nextjs","portal","react","self-service","selfservice","shadcn-ui","strapi","typescript"],"created_at":"2025-03-23T15:20:11.079Z","updated_at":"2026-04-01T18:38:47.093Z","avatar_url":"https://github.com/o2sdev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Open Self Service - open-source development kit for composable Customer Portals](apps/docs/static/img/o2s-gh-cover.png)](https://www.openselfservice.com)\n\n# Open Self Service (O2S)\n\n**Framework for building composable customer self-service portals.**\n\n**Open Self Service** is an open-source development kit that simplifies the creation of self-service frontend applications by integrating multiple headless APIs into a scalable frontend.\nIts flexibility allows for many customizations and lets you build various types of composable frontends.\n\n## 🚀 Key Features\n\n- **Composable** – In short: **API-agnostic**. Compose customer experience by combining multiple \"backend capabilities\" into seamless, fully decoupled frontend.\n- **Next.js Frontend Starter** – Robust Next.js-based frontend including basic customer portal pages and content management capabilities.\n- **API Harmonization Server** – **Integration layer** for data aggregation, orchestration and normalization. Provides vendor lock-in safeness and better maintainability.\n- **TypeScript SDK** – Easily interact with the Harmonization Server in the frontend app or any web, mobile, other TS-based apps.\n- **Pre-built Blocks** – 25+ ready-to-use UI blocks with backend logic and SDK clients. Self-contained, reusable components for common features.\n- **Pre-built Integrations** – Ready integrations so that you can set up your solution faster.\n- **Extensibility** – Customize UI components, add new pages, add new API integrations, adapt to your needs.\n\n## 📖 Documentation\n\nCheck out the **[full documentation](https://www.openselfservice.com/docs)** to get started.\n\n## 🛠️ Installation\n\nTo set up a new O2S project, use the `create-o2s-app` starter and follow the installation steps in the documentation.\n\n```sh\nnpx create-o2s-app my-project\ncd my-project\nnpm run watch:deps\nnpm run watch:apps\n```\n\n## 🔧 Running the Project\n\nTo start all services in **development mode**, it is recommended to run two separate commands (ideally in separate terminal windows):\n\n1. **Watch dependencies** – Automatically rebuilds internal packages when they change:\n   ```sh\n   npm run watch:deps\n   ```\n2. **Watch applications** – Starts the main applications with hot-reloading:\n   ```sh\n   npm run watch:apps\n   ```\n\n\u003e [!IMPORTANT]\n\u003e The `npm run dev` script is now **deprecated** and will be removed in future versions. Please use `watch:deps` and `watch:apps` instead to ensure a smoother development experience.\n\nTo run individual components (useful for debugging one app at a time), you can still use:\n\n```sh\ncd apps/api-harmonization \u0026\u0026 npm run dev  # Start API Harmonization Server\ncd apps/frontend \u0026\u0026 npm run dev  # Start Next.js Frontend\n```\n\n\u003e [!NOTE]\n\u003e When running components individually, remember to run `npm run watch:deps` from the root if you are making changes to shared packages.\n\n\nFor more details, check the **[Running the project](https://www.openselfservice.com/docs/getting-started/running-locally)** guide.\n\n## 🏗️ Project Structure\n\nO2S follows a **monorepo structure** using **Turborepo** for managing apps and internal packages.\n\n```sh\n/apps\n  /frontend             # Next.js frontend application\n  /api-harmonization    # API Harmonization Server (NestJS)\n  /docs                 # Documentation site (Docusaurus)\n\n/packages\n  /blocks/*             # Reusable UI blocks (25+ blocks)\n  /framework            # Core framework modules \u0026 SDK\n  /integrations/*       # Integration adapters (Strapi, Contentful, Redis, Algolia, Medusa, Zendesk, mocked)\n  /modules/*            # Feature modules (e.g., surveyjs)\n  /ui                   # Base UI component library (shadcn/ui + Tailwind)\n  /utils/*              # Utility packages\n  /configs/*            # Shared configurations\n  /cli/*                # CLI tools (create-o2s-app)\n  /telemetry            # Telemetry package\n```\n\nFor a detailed breakdown, visit **[Project structure](https://www.openselfservice.com/docs/getting-started/project-structure)**.\n\n## 🖥️ Demo app\n[![O2S Demo](apps/docs/static/img/o2s-gh-demo.png)](https://demo.openselfservice.com)\n\n## 🧩 Blocks\n\nO2S includes **25+ pre-built blocks** - self-contained, reusable UI components that represent specific features or page sections. Each block includes backend logic (NestJS), frontend component (React), and SDK client.\n\nExamples: article, article-list, ticket-list, order-details, invoice-list, user-account, and more.\n\nFor details, visit **[Blocks documentation](https://www.openselfservice.com/docs/main-components/blocks)**.\n\n## 🔌 Available Integrations\n\nO2S includes pre-built integrations and allows you to extend functionality as needed.\n\n| Integration type/area | Status                                                                                                                                   |\n|-----------------------|------------------------------------------------------------------------------------------------------------------------------------------|\n| **CMS**               | ✅ **StrapiCMS** - available\u003cbr/\u003e ✅ **Contentful** - available                                                                         |\n| **IAM**               | ✅ **Auth.js** - available\u003cbr/\u003e ✅ **Keycloak** - available (not part of O2S, contact us for details)                                      |\n| **Cache**             | ✅ **Redis** - available                                                                                                                  |\n| **Search**            | ✅ **Algolia** - available                                                                                                                |\n| **CRM**               | ✅ **Zendesk** - available (tickets)\u003cbr/\u003e ✅ **SurveyJS** - ticket submission handling\u003cbr/\u003e 🔄 **other CRM solutions** - planned                                                    |\n| **ERP**               | ✅ **Medusa** - via Medusa plugin adding ERP-like features\u003cbr/\u003e🔄 **SAP S/4HANA** - In progress (not part of O2S, contact us for details) |\n| **Commerce**          | 🔄 **Medusa** - in progress (basic product information, other areas TBD)                                                                 |\n| **Development**       | ✅ **Mocked** - available (for local development and testing)                                                                           |\n\n\n## 🔥 Why Open Self Service?\n\n- **Fully composable** – Integrate multiple backend services and build your solution by combining their capabilities.\n- **Headless \u0026 API-first** – Integrate multiple services seamlessly.\n- **Future-proof** – Build backend-agnostic customer portals. Swap backends without breaking the frontend.\n- **Modern stack** – Built with **Next.js, shadcn/ui, TypeScript, NestJS**.\n\n## 🤝 Contributing\n\nWe welcome contributions!\nIf you’d like to contribute, please check the **[Contribution Guide](CONTRIBUTING.md)**.\n\n## Contact e-mail\n[contact@openselfservice.com](mailto:contact@openselfservice.com)\n\n## 📩 Stay Updated\n\n- Website: [openselfservice.com](https://www.openselfservice.com)\n- LinkedIn: [/company/open-self-service/](https://www.linkedin.com/company/open-self-service/)\n- Twitter/X: [@openselfservice](https://twitter.com/openselfservice)\n- Discord: [Join our community](https://discord.gg/4R568nZgsT)\n- GitHub Discussions: [Join the conversation](https://github.com/o2sdev/openselfservice/discussions)\n\n## 📜 License\n\nOpen Self Service is **open-source software** licensed under the **MIT License**.\n\n## Built by Hycom\n\nO2S is maintained as an open-source project by **[hycom.digital](https://hycom.digital)** - a Polish tech company that delivers enterprise digital self-service and e-commerce solutions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fo2sdev%2Fopenselfservice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fo2sdev%2Fopenselfservice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fo2sdev%2Fopenselfservice/lists"}