CodeVetter · Repo Unpack · Feature catalog
keystonejs/keystone
Keystone exposes generated CRUD APIs and an editor-facing interface from the same configured lists. Built-in fields cover scalar, relationship, password, and asset data, with a separate rich-document package. Authentication, custom actions, storage integrations, and project scaffolding provide additional application capabilities.
- Each generated list context exposes findOne, findMany, count, createOne/createMany, updateOne/updateMany, and deleteOne/deleteMany; omitted GraphQL operations become unsupported context calls.
- writeAdminFiles() generates home, no-access, list, item, and create pages; CreateItemPage submits the configured fields and navigates to the new item's route.
- ListPage supports field filters, search, sorting, selectable columns, pagination, and custom actions; list preferences are restored from localStorage with URL query values taking precedence.
- Core exports checkbox, numeric types, text, select/multiselect, JSON, bytes, timestamp/calendarDay, password, virtual, relationship, file, and image field factories.
- The document field supports configurable formatting, links, dividers, layouts, relationships, and component blocks; document output can optionally hydrate relationship data.
- createAuth() adds password authentication, authenticatedItem, endSession, generated sign-in files, session-data hydration, and denied-access redirects to sign-in.
- Custom list actions can collect field-rendered arguments and configure prompts, success/failure messages, visibility, and navigation; the actions example implements vote, report, and hideWithReason.
- Asset examples provide local filesystem storage and S3 public/signed URLs; Cloudinary exposes transformed image URLs, and create-keystone-app copies a starter project into a selected directory.