ef5a84a5d5c64eed65b32ac10196b673bd0afa74
Enrich ExtensionContext with supabase, emit(), settings, storage, log, and services so extensions can receive everything through dependency injection instead of importing core modules directly. - Add context factory and inject context into event handlers via registry - Move supplier invoice journal entry creation to core event handler - Add services.ingestTransactions to ExtensionContext for enable-banking - Create catch-all API route for extension-declared apiRoutes - Migrate 5 extensions to accept context with dynamic import fallbacks Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
erp-base
Swedish accounting SaaS for sole traders (enskild firma) and limited companies (aktiebolag). Implements double-entry bookkeeping compliant with Swedish accounting law (Bokforingslagen), including VAT handling, tax reporting, and 7-year document retention.
Tech Stack
- Framework: Next.js 16 (App Router), React 19, TypeScript (strict)
- Database: Supabase (PostgreSQL + RLS + magic link auth)
- Styling: Tailwind CSS 4 + shadcn/ui
- Hosting: Vercel
- Integrations: Enable Banking (PSD2), Anthropic SDK, OpenAI (embeddings), Resend (email), web-push (VAPID)
Getting Started
npm install
npm run dev
Commands
npm run dev # Start development server
npm run build # Production build
npm run lint # ESLint
npm test # Run all Vitest tests
Documentation
See CLAUDE.md for comprehensive project documentation including architecture, bookkeeping engine, extension development, and database conventions.
Languages
TypeScript
93%
PLpgSQL
5.8%
JavaScript
0.4%
HTML
0.3%
MDX
0.2%
Other
0.1%