ExApp Track
Beginner
Ship your first working Nextcloud ExApp
8 modules · ~10–12h estimated
1
Environment Setup
Install Nextcloud, AppAPI, and the ExApp daemon. Understand the Docker-based deployment model and how an ExApp registers with Nextcloud. First occ app_api:app:register cycle.
⏱ 60 min
2
ExApp Anatomy and Request Lifecycle
The ExApp manifest, registration with AppAPI, nc_py_api basics. How Nextcloud calls your service — the signing protocol, what headers arrive, and what you must verify before trusting a request. The ExApp lifecycle vs a PHP app lifecycle.
⏱ 60 min
3
Backend Fundamentals
Request handlers with FastAPI, nc_py_api for calling Nextcloud APIs, and returning JSON responses from your first Pinboard endpoints. How requests reach your Python service and how to return typed responses — the ExApp equivalent of PHP controllers.
⏱ 60 min
4
Database Layer
Nextcloud's KV store via nc_py_api for lightweight config, your own SQLite/Postgres sidecar for structured pin data, and when to use each. Define the pins table, write basic CRUD, scope all queries to the current user.
⏱ 60 min
5
Frontend Toolchain
Set up Vite and Vue for an ExApp — serving static assets from the Python service, wiring the registered top-level entry to a Vue entry point. The ExApp frontend model differs from PHP apps: assets are served by your service, not by Nextcloud.
⏱ 45 min
6
Your First Vue Component
Build the Pinboard UI in three stages — fetch and display pins, add loading and empty states, then wire up a form to create new ones. @nextcloud/axios for CSRF-safe calls back to your own Python API. Same @nextcloud/vue components as the PHP track.
⏱ 90 min
7
Users and Identity
Verifying the current user via AppAPI — what identity claims arrive in the request, what you can trust, and what you must verify. Scoping all pin queries to the current user. The difference between nc_py_api user context and a PHP IUserSession.
⏱ 40 min
8
Packaging and Deployment
Building the Docker image, the ExApp store manifest, signing, and registering your app on the Nextcloud app store. The differences from PHP app packaging — Docker image vs signed zip, AppAPI registration vs plain app enable.
⏱ 50 min