Hi everyone,
I’ve just released frapkit, an open source React library for building portals and custom frontends on top of Frappe using only the existing whitelisted API. No custom app to install, no backend changes: point it at a stock v15+ site and it works.
import { FrappeProvider, DocTypeForm, DocTypeList } from ‘frapkit’;import ‘frapkit/styles’;
Those two components give you Desk-grade behavior driven entirely by DocType metadata: sections/columns/tabs layout, the full field-attribute set (depends_on, read_only_depends_on, mandatory_depends_on, permlevel, set_only_once, allow_on_submit, fetch_from, length, non_negative, defaults), child tables with grid rules, typed filters, sorting, pagination, and workflow actions computed server-side through get_transitions the same call Desk makes.
Try it without installing anything: the Storybook has a Live section where DocTypeForm and DocTypeList run interactively against a mock Frappe site in your browser — edit, save, trigger validation, apply a workflow action:
@storybook/core - Storybook
Also in the box:
- Auth — cookie/token/bearer, login form with the 2FA challenge flow, signup, password reset, OAuth2 with PKCE
- i18n + RTL :built-in Arabic pack, logical-property styling throughout
- Realtime : Desk’s socket.io protocol: doc subscriptions with an edit-conflict banner, list auto-refresh
- Print : Desk-style print view (formats, letterheads, language, PDF)
- Formatting : System Settings parity: all 11 number_format patterns, date_format tokens
- Adapters : @frapkit/rjsf (DocType → JSON Schema), @frapkit/refine@frap@frapkititand @frapkit/react-admin dataProvide@frapkits@frapk@frapkitt
since this community care: server call is verified against the frappe source (existence, whitelisting, and parameter contracts) with an audit script in the repo; 189 tests including an MSW-based mock-site integration suite; a live E2E battery run against real v15 and develop benches; security-clean dependency audit. Exercised on v15 and the develop branch, MariaDB and Postgres.
Transparency: over 90% of this library was AI-generated (built with Claude), with me directing, reviewing, and testing throughout. I’m sharing that openly judge it by the code and the test suite.
- GitHub: https://github.com/ZeinabMohammed/frapkit
- npm: npm install frapkit
It’s an early 0.1.0: feedback, issues, and PRs are very welcome. I’d especially love to hear from anyone building portals on React who’s had to hand-roll forms against the REST API.
(frapkit is an independent project, not affiliated with Frappe Technologies.)