A comprehensive monorepo framework supporting multiple frontend technologies with a unified design system and tRPC backend integration.
Jxion Framework is a modern, scalable solution for building web applications across multiple frontend frameworks. It provides:
- Multi-Framework Support: React, Vue, Svelte, and SolidJS
- Unified Design System: Centralized SCSS components and design tokens
- Type-Safe Backend: tRPC integration for end-to-end type safety
- Monorepo Architecture: Efficient development workflow with shared packages
- CLI Tooling: Custom CLI for managing development servers
packages/
βββ jxion-core/ # Business logic and tRPC integration
βββ jxion-shared/ # Framework-agnostic types and interfaces
βββ jxion-design/ # Centralized styling and design tokens
βββ jxion-backend/ # tRPC server implementation
βββ jxion-cli/ # Development CLI tool
βββ jxion-react/ # React application
βββ jxion-vue/ # Vue application
βββ jxion-svelte/ # Svelte application
βββ jxion-solidjs/ # SolidJS application
All styling is centralized in @jxion/design with individual component modules:
hero.module.scss- Hero section componentcard.module.scss- Card componentbutton.module.scss- Button componentinput.module.scss- Input, textarea, select componentslayout.module.scss- Layout utilities and grid systemcta.module.scss- Call-to-action componentsheader.module.scss- Header componentmodal.module.scss- Modal componentsection.module.scss- Section componentfooter.module.scss- Footer componentmakeup.module.scss- Makeup/dashboard componentnavbar.module.scss- Navigation barsidebar.module.scss- Sidebar navigation
Located in @jxion/design/src/tokens/:
design-tokens.scss- Core design tokens (colors, spacing, etc.)typography.scss- Typography system and mixins
Business logic and tRPC integration:
- Services:
messageService,greetingService - tRPC Client: Configured for backend communication
- Types: Business logic types and interfaces
Framework-agnostic types and interfaces:
- Component Props:
HeroProps,ButtonProps,CardProps, etc. - Theme Types: Complete theme interface
- Base Types: Common component interfaces
tRPC server implementation:
- Router: tRPC router with procedures
- Context: Server context creation
- Procedures:
greetings,getMessages,addMessage, etc.
- Node.js LTS
- npm with
--legacy-peer-depsflag
npm install --legacy-peer-deps# Build all packages
npm run build
# Build specific package
npm run build -w @jxion/core --legacy-peer-deps
npm run build -w @jxion/shared --legacy-peer-deps
npm run build -w @jxion/backend --legacy-peer-depsUse the CLI to manage development servers:
# Start all frameworks
node packages/jxion-cli/dist/cli.js dev --framework all
# Start specific framework
node packages/jxion-cli/dist/cli.js dev --framework react
node packages/jxion-cli/dist/cli.js dev --framework vue
node packages/jxion-cli/dist/cli.js dev --framework svelte
node packages/jxion-cli/dist/cli.js dev --framework solidjs- Vue: http://localhost:3000
- React: http://localhost:3001
- Svelte: http://localhost:3002
- SolidJS: http://localhost:3004
- Backend: http://localhost:3005
- Uses React hooks for state management
- Imports styles from
@jxion/design - Uses
@jxion/coreservices for backend communication
- Uses Vue's Composition API with
refandonMounted - Imports styles from
@jxion/design - Uses
@jxion/coreservices directly (no React hooks)
- Uses Svelte's reactive primitives (
letdeclarations) - Imports styles from
@jxion/design - Uses
@jxion/coreservices withonMountlifecycle
- Uses SolidJS signals (
createSignal) and effects (onMount) - Imports styles from
@jxion/design - Uses
@jxion/coreservices directly
greetings.query()- Get greeting messagegetMessages.query(limit)- Get messages with limitaddMessage.mutate({user, message})- Add new messagegetMessage.query(id)- Get specific messagedeleteMessage.mutate(id)- Delete messagegetMessageCount.query()- Get message count
- Backend port:
process.env.PORT(default: 3005) - Frontend ports: 3000-3004 (auto-assigned)
Each framework implements components following this pattern:
// Import styles from design system
import styles from "@jxion/design/src/components/[component].module.scss";
// Import types from shared package
import type { ComponentProps } from "@jxion/shared";
// Framework-specific implementation
export const Component: FrameworkComponent<ComponentProps> = (props) => {
// Component logic using framework-specific patterns
return (
<div className={styles.component}>
{/* Component JSX */}
</div>
);
};# Start all frameworks
jxion dev --framework all
# Start specific framework
jxion dev --framework react
jxion dev --framework vue
jxion dev --framework svelte
jxion dev --framework solidjs# Build CLI
cd packages/jxion-cli && npm run build
# Build all packages
npm run buildEach package follows this structure:
{
"name": "@jxion/[package-name]",
"version": "0.1.0",
"type": "module",
"main": "dist/index.js",
"module": "dist/index.esm.js",
"types": "dist/index.d.ts",
"exports": {
".": {
"import": "./dist/index.esm.js",
"require": "./dist/index.js",
"types": "./dist/index.d.ts"
}
}
}- Core: Dual build (CJS/ESM) with
tsconfig.jsonandtsconfig.esm.json - Shared: Rollup build with TypeScript plugin
- Frameworks: Vite with framework-specific plugins
All components use CSS Modules with design tokens:
@use "../tokens/design-tokens" as tokens;
@use "../tokens/typography" as typography;
.component {
padding: tokens.$spacing-lg;
color: tokens.$color-text-primary;
&__element {
@include typography.heading-1;
}
}- Colors:
tokens.$color-primary-green,tokens.$color-text-primary - Spacing:
tokens.$spacing-sm,tokens.$spacing-lg,tokens.$spacing-xl - Typography:
@include typography.heading-1,@include typography.paragraph - Breakpoints:
tokens.$breakpoint-sm,tokens.$breakpoint-md,tokens.$breakpoint-lg
- Start all frameworks:
jxion dev --framework all - Visit each URL to verify:
- Hero component renders correctly
- Backend integration works
- Styling is consistent across frameworks
- No console errors
Each framework can be tested individually:
# Test React
curl http://localhost:3001
# Test Vue
curl http://localhost:3000
# Test Svelte
curl http://localhost:3002
# Test SolidJS
curl http://localhost:3004
# Test Backend
curl http://localhost:3005/trpc/greetings# Build all packages
npm run build
# Build specific applications
npm run build -w @jxion/react --legacy-peer-deps
npm run build -w @jxion-vue --legacy-peer-deps
npm run build -w @jxion-svelte --legacy-peer-deps
npm run build -w @jxion-solidjs --legacy-peer-depsPORT: Backend server port (default: 3005)NODE_ENV: Environment mode (development|production)
- Use Design System: Always import styles from
@jxion/design - Type Safety: Use interfaces from
@jxion/shared - Backend Integration: Use services from
@jxion/core - Framework Patterns: Follow framework-specific conventions
- Design Tokens: Use design tokens for all values
- CSS Modules: Use CSS Modules for component styling
- Responsive Design: Use breakpoint mixins
- Consistency: Maintain consistent naming conventions
- Separation of Concerns: Keep business logic in
@jxion/core - Type Definitions: Keep types in
@jxion/shared - Styling: Keep styles in
@jxion/design - Framework Code: Keep framework-specific code in respective packages
- Import Resolution: Ensure packages are built (
npm run build) - Port Conflicts: Check if ports are available
- SCSS Imports: Verify design token paths are correct
- Type Errors: Check TypeScript configuration
# Check running processes
netstat -tlnp | grep -E "(3000|3001|3002|3004|3005)"
# Check package builds
ls -la packages/*/dist/
# Check dependencies
npm ls --depth=0- Follow the established patterns
- Use design tokens for styling
- Maintain type safety across packages
- Test across all frameworks
- Update documentation as needed
Jxion Framework - Building scalable applications across multiple frontend technologies with a unified design system and type-safe backend integration.