# Track: Mastering content operations
https://www.sanity.io/learn/track/sanity-developer-essentials

A comprehensive collection of courses starting with the basics to get started then onto the skills to maintain long-lived production projects.

---

## Courses

### [Day one content operations](https://www.sanity.io/learn/course/day-one-with-sanity-studio) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio.md)

- [Welcome](https://www.sanity.io/learn/course/day-one-with-sanity-studio/prerequisites) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/prerequisites.md)
- [Hello, Studio](https://www.sanity.io/learn/course/day-one-with-sanity-studio/hello-studio) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/hello-studio.md)
- [Local development](https://www.sanity.io/learn/course/day-one-with-sanity-studio/getting-started) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/getting-started.md)
- [Creating a schema](https://www.sanity.io/learn/course/day-one-with-sanity-studio/creating-a-schema) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/creating-a-schema.md)
- [Deploying your Studio](https://www.sanity.io/learn/course/day-one-with-sanity-studio/deploying-your-studio) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/deploying-your-studio.md)
- [Just enough GROQ](https://www.sanity.io/learn/course/day-one-with-sanity-studio/a-taste-of-groq) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/a-taste-of-groq.md)
- [Prepare your monorepo](https://www.sanity.io/learn/course/day-one-with-sanity-studio/prepare-your-monorepo) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/prepare-your-monorepo.md)
- [Display content in Next.js](https://www.sanity.io/learn/course/day-one-with-sanity-studio/bringing-content-to-a-next-js-front-end) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/bringing-content-to-a-next-js-front-end.md)
- [Rendering assets](https://www.sanity.io/learn/course/day-one-with-sanity-studio/rendering-assets) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/rendering-assets.md)
- [Generating types](https://www.sanity.io/learn/course/day-one-with-sanity-studio/generating-types) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/generating-types.md)
- [Build a content application](https://www.sanity.io/learn/course/day-one-with-sanity-studio/create-a-content-application) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/create-a-content-application.md)
- [Automate anything with Functions](https://www.sanity.io/learn/course/day-one-with-sanity-studio/create-a-function) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/create-a-function.md)
- [Agent Actions](https://www.sanity.io/learn/course/day-one-with-sanity-studio/ai-agent-actions) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/ai-agent-actions.md)
- [Day one quiz](https://www.sanity.io/learn/course/day-one-with-sanity-studio/day-one-quiz) · [markdown](https://www.sanity.io/learn/course/day-one-with-sanity-studio/day-one-quiz.md)

### [Studio excellence](https://www.sanity.io/learn/course/studio-excellence) · [markdown](https://www.sanity.io/learn/course/studio-excellence.md)

- [Excellent editorial experiences](https://www.sanity.io/learn/course/studio-excellence/excellent-editorial-experiences) · [markdown](https://www.sanity.io/learn/course/studio-excellence/excellent-editorial-experiences.md)
- [Improving the editorial experience](https://www.sanity.io/learn/course/studio-excellence/improving-the-editorial-experience) · [markdown](https://www.sanity.io/learn/course/studio-excellence/improving-the-editorial-experience.md)
- [Sublime schemas](https://www.sanity.io/learn/course/studio-excellence/sublime-schemas) · [markdown](https://www.sanity.io/learn/course/studio-excellence/sublime-schemas.md)
- [Structure customization](https://www.sanity.io/learn/course/studio-excellence/structure-customization) · [markdown](https://www.sanity.io/learn/course/studio-excellence/structure-customization.md)
- [Custom input components](https://www.sanity.io/learn/course/studio-excellence/custom-form-components) · [markdown](https://www.sanity.io/learn/course/studio-excellence/custom-form-components.md)
- [Member-specific options](https://www.sanity.io/learn/course/studio-excellence/member-mastery) · [markdown](https://www.sanity.io/learn/course/studio-excellence/member-mastery.md)
- [Interactive previews](https://www.sanity.io/learn/course/studio-excellence/intelligent-integrations) · [markdown](https://www.sanity.io/learn/course/studio-excellence/intelligent-integrations.md)
- [Extending with plugins](https://www.sanity.io/learn/course/studio-excellence/pleasing-plugins) · [markdown](https://www.sanity.io/learn/course/studio-excellence/pleasing-plugins.md)
- [Internationalization](https://www.sanity.io/learn/course/studio-excellence/internationalization) · [markdown](https://www.sanity.io/learn/course/studio-excellence/internationalization.md)
- [Awesome authoring](https://www.sanity.io/learn/course/studio-excellence/awesome-authors) · [markdown](https://www.sanity.io/learn/course/studio-excellence/awesome-authors.md)

### [Handling schema changes confidently](https://www.sanity.io/learn/course/handling-schema-changes-confidently) · [markdown](https://www.sanity.io/learn/course/handling-schema-changes-confidently.md)

- [Introduction to Schema Change Management](https://www.sanity.io/learn/course/handling-schema-changes-confidently/introduction-to-schema-change-management) · [markdown](https://www.sanity.io/learn/course/handling-schema-changes-confidently/introduction-to-schema-change-management.md)
- [Validating documents in bulk](https://www.sanity.io/learn/course/handling-schema-changes-confidently/updating-the-schema-to-match-imported-content) · [markdown](https://www.sanity.io/learn/course/handling-schema-changes-confidently/updating-the-schema-to-match-imported-content.md)
- [Changing a field name](https://www.sanity.io/learn/course/handling-schema-changes-confidently/changing-a-field-name) · [markdown](https://www.sanity.io/learn/course/handling-schema-changes-confidently/changing-a-field-name.md)
- [Adapting a front end without downtime](https://www.sanity.io/learn/course/handling-schema-changes-confidently/adapting-a-frontend-without-downtime) · [markdown](https://www.sanity.io/learn/course/handling-schema-changes-confidently/adapting-a-frontend-without-downtime.md)
- [Writing a content migration](https://www.sanity.io/learn/course/handling-schema-changes-confidently/writing-a-content-migration) · [markdown](https://www.sanity.io/learn/course/handling-schema-changes-confidently/writing-a-content-migration.md)
- [Running a content migration](https://www.sanity.io/learn/course/handling-schema-changes-confidently/running-a-content-migration) · [markdown](https://www.sanity.io/learn/course/handling-schema-changes-confidently/running-a-content-migration.md)
- [Tidy up the schema and front end code](https://www.sanity.io/learn/course/handling-schema-changes-confidently/tidy-up-the-schema-and-front-end-code) · [markdown](https://www.sanity.io/learn/course/handling-schema-changes-confidently/tidy-up-the-schema-and-front-end-code.md)
- [Making the content migration (more) idempotent](https://www.sanity.io/learn/course/handling-schema-changes-confidently/making-the-content-migration-more-idempotent) · [markdown](https://www.sanity.io/learn/course/handling-schema-changes-confidently/making-the-content-migration-more-idempotent.md)
- [Schema Change Management Quiz](https://www.sanity.io/learn/course/handling-schema-changes-confidently/schema-change-management-quiz) · [markdown](https://www.sanity.io/learn/course/handling-schema-changes-confidently/schema-change-management-quiz.md)

### [Between GROQ and a hard place](https://www.sanity.io/learn/course/between-groq-and-a-hard-place) · [markdown](https://www.sanity.io/learn/course/between-groq-and-a-hard-place.md)

- [Your new favorite query language](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/your-new-favourite-query-language) · [markdown](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/your-new-favourite-query-language.md)
- [The Vision Tool](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/the-vision-tool) · [markdown](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/the-vision-tool.md)
- [Filters and projections](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/filters-and-projections) · [markdown](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/filters-and-projections.md)
- [Functions, in my queries?](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/functions-in-my-queries) · [markdown](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/functions-in-my-queries.md)
- [Custom functions](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/custom-functions) · [markdown](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/custom-functions.md)
- [Joins and subqueries](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/joins-and-subqueries) · [markdown](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/joins-and-subqueries.md)
- [Chained projections](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/chained-projections) · [markdown](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/chained-projections.md)
- [Query parameters](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/conditional-parameters) · [markdown](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/conditional-parameters.md)
- [Handling missing values](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/null-handling-and-prevention) · [markdown](https://www.sanity.io/learn/course/between-groq-and-a-hard-place/null-handling-and-prevention.md)

### [Build content apps with Sanity App SDK](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk.md)

- [Building content apps](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/building-content-apps) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/building-content-apps.md)
- [Create a new Project and Studio](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/create-a-new-project-and-studio) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/create-a-new-project-and-studio.md)
- [Quickstart a new App SDK app ](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/quickstart-a-new-app-sdk-app) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/quickstart-a-new-app-sdk-app.md)
- [useDocuments](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-documents) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-documents.md)
- [useDocumentProjection](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-document-projection) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-document-projection.md)
- [useDocument](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-document) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-document.md)
- [useEditDocument](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-edit-document) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-edit-document.md)
- [useApplyDocumentActions](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-apply-document-actions) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-apply-document-actions.md)
- [useDocumentEvent](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-document-event) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-document-event.md)
- [useUsers](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-users) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-users.md)
- [useUser](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-user) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-user.md)
- [useNavigateToStudioDocument](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-navigate-to-studio-document) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-navigate-to-studio-document.md)
- [useClient](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-client) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/use-client.md)
- [Deployment and finishing touches](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/deployment-and-finishing-touches) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/deployment-and-finishing-touches.md)
- [SDK Quiz](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/sdk-quiz) · [markdown](https://www.sanity.io/learn/course/build-content-apps-with-sanity-app-sdk/sdk-quiz.md)

---

## Related Resources

- [All courses and lessons](https://www.sanity.io/learn/sitemap.md)
- [Complete content for LLMs](https://www.sanity.io/learn/llms-full.txt)
