Ginjou is a headless, framework-agnostic library for building admin panels, dashboards, and data-intensive applications. Inspired by refine and react-admin, Ginjou provides a composable architecture that adapts to your project's needs.
Ginjou is built on two core principles: Flexibility and Composition. You work with small, reusable building blocks that you combine to create exactly what your application needs.
Think of Ginjou like building with LEGOs. You receive individual function "bricks" that snap together. Combine them to construct the exact application architecture you need.
Choose the approach that matches your needs based on your project's complexity and timeline.
useList that handle common tasks. Controllers combine multiple low-level functions to deliver complete features automatically.useGetList or useGo.Ginjou's diagram shows how simple functions combine to create progressively more powerful tools. This structure lets you choose between convenience and control:
The power of Ginjou comes from three complementary layers. Higher layers build upon lower layers, letting you work at the abstraction level that suits your needs.
fetcher.getList) or changing the page URL (router.go). Core functions handle a single responsibility without managing state.useGetList handle data loading, caching, and state management using Tanstack Query automatically.useList provide all the logic for a full page, ready to use immediately.useListThe useList Controller demonstrates the composition pattern in action. It bundles several specialized composables to deliver a complete solution for list pages:
useGetList retrieves data from your backenduseGo and useLocation sync with the URLuseNotify shows success and error messagesuseTranslate handles i18n automaticallyUse useList for quick development. When you need something different, step down to lower-level composables like useGetList and combine them with your own logic to build a custom solution.
This flexibility means you never outgrow Ginjou. You choose between fast development with Controllers and full control with Composables, depending on your current needs.