- Node/Express/TypeScript API under /api/v1 with JWT auth (login, refresh, logout, /me) - Prisma schema: vendors, users, roles, products, categories, taxes, transactions - SQLite for local dev; Postgres via docker-compose for production - Full CRUD routes for vendors, users, categories, taxes, products with Zod validation and RBAC - Paginated list endpoints scoped per vendor; refresh token rotation - React/TypeScript admin SPA (Vite): login, protected routing, sidebar layout - Pages: Dashboard, Catalog (tabbed Products/Categories/Taxes), Users, Vendor Settings - Shared UI: Table, Modal, FormField, Btn, PageHeader components - Multi-stage Dockerfile; docker-compose with Postgres healthcheck - Seed script with demo vendor and owner account - INSTRUCTIONS.md, ROADMAP.md, .claude/launch.json for dev server config Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 lines
2.1 KiB
JavaScript
2 lines
2.1 KiB
JavaScript
module.exports={A:{A:{"2":"K D E F A B 3C"},B:{"2":"C L M G N O","260":"0 1 2 3 4 5 6 7 8 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB I","3138":"P"},C:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B XC 7B YC 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC Q H R ZC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB I aC PC bC cC 5C 6C","2":"4C WC","132":"J cB K D E F A B C L M G N O P dB BB CB DB EB FB GB HB IB JB KB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB 7C 8C","644":"vB wB xB yB zB 0B 1B"},D:{"2":"J cB K D E F A B C L M G N O P dB BB CB DB EB","260":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B XC 7B YC 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB I aC PC bC cC","292":"FB GB HB IB JB KB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B"},E:{"2":"J cB K 9C dC AD BD","260":"M G ED FD GD fC gC SC HD TC hC iC jC kC lC ID UC mC nC oC pC qC JD VC rC sC tC uC vC wC xC yC zC 0C KD","292":"D E F A B C L CD DD eC QC RC"},F:{"2":"F B C LD MD ND OD QC 1C PD RC","260":"0 1 2 3 4 5 6 7 8 9 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC Q H R ZC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB","292":"G N O P dB BB CB DB EB FB GB HB IB JB KB eB fB gB hB iB jB kB lB mB nB oB pB"},G:{"2":"dC QD 2C RD SD","260":"dD eD fD gD hD iD jD fC gC SC kD TC hC iC jC kC lC lD UC mC nC oC pC qC mD VC rC sC tC uC vC wC xC yC zC 0C","292":"E TD UD VD WD XD YD ZD aD bD cD"},H:{"2":"nD"},I:{"2":"WC J oD pD qD rD 2C","260":"I","292":"sD tD"},J:{"2":"D A"},K:{"2":"A B C QC 1C RC","260":"H"},L:{"260":"I"},M:{"1":"PC"},N:{"2":"A B"},O:{"260":"SC"},P:{"260":"BB CB DB EB FB GB HB IB JB KB vD wD xD yD eC zD 0D 1D 2D 3D TC UC VC 4D","292":"J uD"},Q:{"260":"5D"},R:{"260":"6D"},S:{"1":"8D","644":"7D"}},B:4,C:"CSS clip-path property (for HTML)",D:true};
|