ownCloud Web is the next-generation frontend for ownCloud Infinite Scale (oCIS), built as a single-page application with Vue.js and TypeScript. It provides file management, sharing, real-time collaboration and administration through a plugin-based architecture.
- Classification: oCIS
- Activity Status: Active
- License: AGPL-3.0
- Language: TypeScript, Vue.js
packages/— Monorepo packages (core modules and built-in apps)packages/web-client/— TypeScript client for oCIS Graph APIpackages/web-container/— Static assets and base filespackages/extension-sdk/— SDK for custom extension developmentpackages/web-pkg/— Shared library codepackages/web-runtime/— Authentication, routing, theming, app handlingpackages/web-app-files/— Core file management apppackages/web-app-admin-settings/— Admin UI for users, groups, spacespackages/web-app-activities/— Activity stream apppackages/web-app-pdf-viewer/— PDF viewer apppackages/web-app-preview/— Audio/video/image previewerpackages/web-app-text-editor/— Plain text editor apppackages/web-app-external/— WOPI document editing integrationpackages/design-system/— Shared UI component library
tests/— Test suites (unit with Vitest, e2e with Playwright)docs/— Documentation source filesconfig/— Configuration examplesdocker/— Docker-related filesdeployments/— Deployment configurationsMakefile— Build orchestrationpackage.json— Root package with scriptspnpm-workspace.yaml— pnpm monorepo workspace configvite.config.ts— Vite build configurationvitest.config.ts— Vitest test configurationeslint.config.js— ESLint configuration
- pnpm monorepo with workspace packages
- Vite for building, Vitest for unit tests, Playwright for e2e
- EditorConfig and Prettier for formatting
- Semantic versioning with releases every few weeks
- Changelog entries tracked in
changelog/directory .github/CONTRIBUTING.mdfor contribution guidelines- Issue/PR templates available
pnpm install # Install all dependencies
pnpm build # Production build
pnpm build:w # Build with watch mode
pnpm test:unit # Run unit tests (Vitest)
pnpm test:e2e # Run e2e tests (Playwright)
make clean # Clean build artifacts
make dist # Build distribution
make release # Create release
make docs-generate # Generate documentation
make docs-serve # Serve documentation locally- AGPL-3.0 copyleft license: This is a high-profile repository. The OSPO Apache 2.0 migration requires auditing all copyleft dependencies and contributor agreements before relicensing.
- oCIS-only since v7.1.0: Versions 7.1.0+ only support oCIS as a backend. OC10 support requires v7.0.2.
- Extension architecture: Third-party extensions use the extension-sdk package.
- Docker image: Published as
owncloud/webon Docker Hub. - Accessibility goal: The project explicitly aims for WCAG compliance.
- Only use actions owned by
owncloud, created by GitHub (actions/*), verified on the GitHub Marketplace, or verified by the ownCloud Maintainers. - Pin all actions to their full commit SHA (not tags):
uses: actions/checkout@<SHA> # vX.Y.Z - Never introduce actions from unverified third parties.
- Dependabot is configured for automated dependency updates.
- Review and merge Dependabot PRs as part of regular maintenance.
- Do not introduce new dependencies without discussion in an issue first.
- Rebase policy: Always rebase; never create merge commits. Use
git pull --rebaseandgit rebasebefore pushing. - Signed commits: All commits must be PGP/GPG signed (
git commit -S -s). - DCO sign-off: Every commit needs a
Signed-off-byline (git commit -s). - Conventional Commits & Squash Merge: Use the Conventional Commits format where the repository enforces it. Many repos use squash merge, where the PR title becomes the commit message on the default branch — apply Conventional Commits format to PR titles as well. A reusable GitHub Actions workflow enforces this.
- This is a large TypeScript/Vue.js monorepo managed with pnpm workspaces.
- The
packages/directory contains all core modules and built-in apps. - Shared code lives in
packages/web-pkg/; the runtime inpackages/web-runtime/. - Configuration is via
config.jsonfiles that specify app loading and server settings. - The extension system allows external apps to register file handlers, UI components and routes.
- Docker images are built from
docker/Dockerfile. - Test infrastructure: Vitest for unit tests, Playwright/Cucumber for e2e.