@caseparts-org/casecore
v0.0.20
Published
This project is a reusable logic and component library for React and Next.js applications, designed to house all core business logic for our front-end apps, decoupled from any specific UI. While it currently focuses on authentication, claims, and session
Readme
CaseCore React Component & Logic Library
This project is a reusable logic and component library for React and Next.js applications, designed to house all core business logic for our front-end apps, decoupled from any specific UI. While it currently focuses on authentication, claims, and session management, it is intended to grow into a central place for all shared business logic, utilities, and core functionality needed across our projects.
Project Structure
- /lib/
- Contains all code intended for export as part of the library.
- Includes authentication context/provider, hooks, utility functions, and type definitions.
- The main entry point for consumers is
lib/index.ts.
- /src/App.tsx
- Local demo/test app for development, not included in the library build.
- Useful for running and testing components locally with
npm run dev.
- /public/
- Static assets for local development/demo.
- /index.html
- Entry point for local development with Vite.
Key Features
- Authentication Context (
AuthProvider)- Provides authentication state, login/logout/impersonate methods, and claims to your app via React context.
- Handles JWT parsing, localStorage/sessionStorage, and API integration.
- Claims & Session Utilities
buildClaimsFromPayload: Normalizes JWT payloads into a consistent claims object.getSessionId: Manages session IDs in sessionStorage.useLocalStorage: React hook for persistent state with automatic key prefixing.
- TypeScript-first
- All types and interfaces are defined in
lib/authentication/AuthTypes.tsfor strong typing and IDE support.
- All types and interfaces are defined in
- Testing
- Tests are colocated with their modules (e.g.,
AuthContext.test.tsx). - Mocks for fetch and JWT decoding are used to simulate authentication flows.
- Tests are colocated with their modules (e.g.,
Usage
- As a library:
- Import from
lib/index.tsin your consuming app:import { AuthProvider, useAuthContext } from 'casecore/lib';
- Import from
- For local development:
- Run
npm run devto start the Vite dev server and use the demo app insrc/App.tsx.
- Run
- To run tests locally:
- Run
npm testornpx vitest runto execute all tests. - For watch mode (auto-re-run on file changes), use:
npx vitest - Test files are colocated with their modules (e.g.,
AuthContext.test.tsx).
- Run
Contributing
- Add new core logic, hooks, or components to
/lib. - Add or update exports in
lib/index.ts. - Use
/srcand/publicfor local-only demo/testing code. - Write and run tests for all exported logic.
License
MIT
