Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
cd8b3c5
feat(operations): add Operations Dashboard page and navigation
kenjf65AI Nov 22, 2025
12d4992
feat(assessments): add Assessment Management page, route, and nav
kenjf65AI Nov 22, 2025
66dc402
feat(board): add Board Reporting page, route, and nav item; build val…
kenjf65AI Nov 22, 2025
b43c205
style(nav): change sidebar background to #1f367d (Droid-assisted)
kenjf65AI Nov 22, 2025
8043b78
feat(workspace): Phase 0 - wire project cards to Report Editor Worksp…
kenjf65AI Dec 11, 2025
31379ea
feat(workspace): Phase 1 shell – header + 3-column layout (25/50/25),…
kenjf65AI Dec 11, 2025
34154b7
feat(workspace:phase2): Add AudioBriefingCard, VideoSummaryCard, and …
kenjf65AI Dec 11, 2025
9cb1593
feat(workspace:phase3): Implement BlockEditor with block model (H1/H2…
kenjf65AI Dec 11, 2025
9967683
feat(workspace:phase4): Block-level ops – drag-and-drop reorder via d…
kenjf65AI Dec 11, 2025
eb5918b
feat(workspace:phase5): AI-assisted draft/regenerate hooks with inlin…
kenjf65AI Dec 11, 2025
08fa53e
feat(workspace:phase6): Print/export route with clean layout and refe…
kenjf65AI Dec 11, 2025
7e06ff0
fix(workspace): mount ReportEditorWorkspace in App so 'View Full Repo…
kenjf65AI Dec 11, 2025
2aa23a7
style: add shared .card and .btn-sm utilities (Droid-assisted)
kenjf65AI Dec 11, 2025
8fda2f3
style(workspace): apply brand styles across workspace (header #1f367d…
kenjf65AI Dec 11, 2025
e2aeb40
style(theme): apply new warm gradient background globally across page…
kenjf65AI Dec 12, 2025
f80c036
style(theme): update global background to new green→yellow→orange gra…
kenjf65AI Dec 12, 2025
986e96f
style(workspace): apply global gradient background to Report Editor W…
kenjf65AI Dec 12, 2025
97ae756
Add plexify-shared-ui shared component library v1.0.0
claude Dec 14, 2025
9329c9a
feat(shared-ui): align workspace store API usage and theme
kenjf65AI Dec 15, 2025
d77f988
chore(typecheck): scope TS check to migration surfaces and silence di…
kenjf65AI Dec 15, 2025
1b380e6
fix(workspace): import shared UI styles and align ReportEditorWorkspa…
kenjf65AI Dec 16, 2025
e69965b
fix(workspace): process shared UI Tailwind classes and correct worksp…
kenjf65AI Dec 16, 2025
7beaa5e
build(vite): exclude plexify-shared-ui from optimizeDeps to avoid Nod…
kenjf65AI Dec 16, 2025
88be4d9
chore: remove local workspace/store duplicates to ensure single sourc…
kenjf65AI Dec 16, 2025
4b5f677
chore: add temporary debug open button to trigger workspace (will rem…
kenjf65AI Dec 16, 2025
6e4551e
fix: wrap ReportEditorWorkspace in high z-index container and add on-…
kenjf65AI Dec 16, 2025
18bf0b5
fix(deps): satisfy plexify-shared-ui peers (install react-h5-audio-pl…
kenjf65AI Dec 16, 2025
792e9b0
fix: externalize React and @dnd-kit to resolve multiple instances crash
factory-droid[bot] Dec 16, 2025
95a696a
fix: externalize React and @dnd-kit to resolve multiple instances crash
factory-droid[bot] Dec 16, 2025
0701a92
fix: improve workspace editor visibility and error surfacing
factory-droid[bot] Dec 17, 2025
a79ac70
fix: force single react/dnd-kit instances for linked shared-ui
factory-droid[bot] Dec 17, 2025
7a37cf4
chore: remove workspace debug UI
factory-droid[bot] Dec 17, 2025
0fdcfe1
Merge pull request #4 from Plexify-AI/fix/workspace-overlay-debug
kenjf65AI Dec 17, 2025
bca18f3
docs: add troubleshooting note for shared-ui invalid hook call
factory-droid[bot] Dec 17, 2025
d7c54f2
chore: add turbo.json for future turborepo
factory-droid[bot] Dec 17, 2025
e9b6cb6
Merge pull request #5 from Plexify-AI/docs/troubleshooting-invalid-ho…
kenjf65AI Dec 17, 2025
055b2d3
Merge pull request #6 from Plexify-AI/claude/create-shared-ui-library…
kenjf65AI Dec 17, 2025
7ad4795
chore: reference plexify-shared-ui from repo-local path
factory-droid[bot] Dec 17, 2025
c28a44f
Merge pull request #7 from Plexify-AI/chore/monorepo-shared-ui-path
kenjf65AI Dec 17, 2025
9ce21c8
feat(notebookbd): Phase 1A implementation - RAG pipeline, citations, …
Dec 27, 2025
d6e8739
docs: add WORKFLOW.md for Code Droid integration
Dec 27, 2025
daa6b10
fix(vite): resolve plexify-shared-ui from source for local dev
Dec 27, 2025
5049787
fix(notebookbd): always provide citations when sources are selected
Dec 27, 2025
6962ec2
style(notebookbd): Phase 1A UI polish - AI Media Summary, drag handle…
Dec 27, 2025
1403aa9
fix(notebookbd): render AIMediaSummary widget in left panel
Dec 27, 2025
8d23b83
fix(notebookbd): render AIMediaSummary widget in left panel
Dec 27, 2025
1649b47
fix(notebookbd): render AIMediaSummary widget in left panel
Dec 27, 2025
b52908f
feat(notebookbd): replace generic prompts with BID-specific agent chips
Dec 27, 2025
85b00d4
docs: add Phase 1B structured outputs spec
kenjf65AI Dec 28, 2025
f36aeda
feat(notebookbd): add Phase 1B structured output types
Dec 28, 2025
cda3c12
feat(notebookbd): add /api/agents endpoint for structured outputs
Dec 28, 2025
8ce3f36
feat(notebookbd): add agent service for structured outputs
Dec 28, 2025
64a9b69
feat(notebookbd): add BoardBrief renderer component
Dec 28, 2025
df1c2fc
docs: fix Phase 1B spec file (was truncated)
kenjf65AI Dec 28, 2025
d527308
feat(notebookbd): wire BID agent chips to structured output API
Dec 28, 2025
d6a533c
fix(notebookbd): hide raw JSON fallback for structured outputs
Dec 28, 2025
6a598cd
feat(notebookbd): add AssessmentTrends structured output support
Dec 28, 2025
c689df9
feat(notebookbd): add OZRF structured output support
Dec 28, 2025
758c656
feat(notebookbd): add export actions for structured output blocks
Dec 28, 2025
2a08779
fix(notebookbd): reposition action bar inside block to prevent clipping
Dec 28, 2025
9c58459
assets: add Plexify logo and construction site thumbnail
kenjf65AI Dec 28, 2025
c40e3eb
style(notebookbd): add Plexify logo to header and construction thumbnail
Dec 28, 2025
5b49bf5
fix(assets): add actual Plexify logo and construction thumbnail
Dec 28, 2025
4ab202d
fix(notebookbd): bust cache for header logo and thumbnail
Dec 28, 2025
60d5ec1
style(notebookbd): use gray Plexify logo in AI assistant header and m…
Dec 28, 2025
465e899
style(notebookbd): widen side panels and scale panel UI
Dec 28, 2025
fc30cae
assets: add Plexify chatburger SVG
kenjf65AI Dec 29, 2025
3de0514
style(notebookbd): use chatburger mark in assistant empty state
Dec 29, 2025
5c15a67
Merge branch 'feature/notebookbd-phase1b' of https://github.com/Plexi…
kenjf65AI Dec 29, 2025
f5a27e0
chore(assets): centralize BrandMark and add assets check
Dec 29, 2025
ebd6228
style(notebookbd): enlarge header brand mark
Dec 29, 2025
eed3f0f
style(notebookbd): enlarge empty-state chatburger mark
Dec 29, 2025
2a2a6ce
style(polish): implement Phase 7 hover states, shadows, and consisten…
Dec 31, 2025
a9d7c52
docs: add NotebookBD handoff document for Dec 29, 2025
kenjf65AI Dec 31, 2025
ac3d6d4
feat(notebookbd): Phase 2A - Real docs display with drag reorder
Jan 1, 2026
315ea96
fix(dev): alias plexify-shared-ui to source for vite
Jan 1, 2026
e485309
merge(notebookbd): bring Phase 1B structured outputs + polish into Ph…
Jan 1, 2026
f951095
fix(notebookbd): restore Phase 1B components after merge
Jan 2, 2026
20c5376
fix(ui): use gray P mark for assistant icons
Jan 2, 2026
d83c36c
fix(ui): restore chatburger icon in assistant empty state
Jan 2, 2026
aeb6bf8
feat(ui): update video summary thumbnail to downtown district
Jan 2, 2026
fa36425
feat(notebookbd): Phase 2B-1 - Real docs RAG integration
Jan 2, 2026
37b2337
fix(dev): make Phase 2B-1 run on Node 20.12
Jan 2, 2026
1b1fc39
fix(notebookbd): surface agent errors and clarify missing PDFs
Jan 2, 2026
3aabe88
fix(notebookbd): tolerate missing PDFs and fuzzy-match filenames
Jan 2, 2026
265baeb
fix(notebookbd): show available PDFs when selection cannot be loaded
Jan 2, 2026
3ce97e1
fix(realdocs): align Golden Triangle index.json with provided PDFs
Jan 2, 2026
59a1f09
fix(dev): load .env.local for agents API
Jan 2, 2026
8399ea7
fix(notebookbd): make Anthropic model configurable with fallback
Jan 3, 2026
ed1a0e7
fix(notebookbd): try multiple Anthropic model fallbacks
Jan 3, 2026
8750aef
fix(dev): ensure .env.local overrides key; improve 401 error
Jan 3, 2026
d776079
fix(notebookbd): add safe diagnostics for invalid Anthropic key
Jan 3, 2026
2315c0f
fix(notebookbd): handle quoted Anthropic keys in env
Jan 3, 2026
8c04047
feat(notebookbd): Phase 2B-2 - OpenAI TTS audio briefings
Jan 3, 2026
e822b56
fix(notebookbd): show Generate Audio in widget and wire to Board Brief
Jan 3, 2026
65f5fed
feat(notebookbd): add ElevenLabs deep dive podcast generation
factory-droid Jan 3, 2026
a99ac45
fix(notebookbd): support VITE_ELEVENLABS_API_KEY for podcast
factory-droid Jan 3, 2026
e4897cc
Merge pull request #8 from Plexify-AI/feature/notebookbd-phase2b-3-po…
kenjf65AI Jan 4, 2026
86d96e9
fix(notebookbd): make real-docs PDFs usable in dev
factorydroid Jan 4, 2026
76ad6bb
fix(notebookbd): keep podcast script under ElevenLabs char limit
factorydroid Jan 4, 2026
1977963
fix(notebookbd): chunk ElevenLabs podcast requests
factorydroid Jan 4, 2026
a03ac3a
feat(notebookbd): Phase 2B-4 - DOCX export for Board Report
factorydroid Jan 6, 2026
d98fcd7
Merge NotebookBD Phase 1A-2B4: Complete feature set including RAG, Au…
factorydroid Jan 7, 2026
b2082e8
chore(demo-assets): track public/demo-assets folder
factorydroid Jan 7, 2026
70e9fea
public demo images
kenjf65AI Jan 7, 2026
df7ae33
P-NotebookBD image
kenjf65AI Jan 7, 2026
c5cc3ef
feat(notebookbd): UI polish + demo asset cards for January presentation
factorydroid Jan 7, 2026
da26907
Commit podcast Golden Triangle mp3
kenjf65AI Jan 8, 2026
bb166be
Create presentation-deck-golden-triangle.pdf
kenjf65AI Jan 8, 2026
046bdca
feat(notebookbd): UI polish - reposition Generated Project Artifacts
factorydroid Jan 8, 2026
87a64dc
Create data-table-DC.PNG
kenjf65AI Jan 8, 2026
179e40e
Merge branch 'feature/notebookbd-ui-polish-demo' of https://github.co…
kenjf65AI Jan 8, 2026
e284bb6
feat(notebookbd): Enhanced media players with Plyr + larger modals
factorydroid Jan 9, 2026
c49cfd4
fix(notebookbd): restore podcast audio controls in modal
factorydroid Jan 9, 2026
4dbafd3
feat(home): Add new project button, update Golden Triangle card, add …
factorydroid Jan 10, 2026
ce6da69
fix(home): scope new project modal button styles
factorydroid Jan 10, 2026
91f2e7b
Demo home cards
kenjf65AI Jan 10, 2026
49c34fa
Merge branch 'feature/notebookbd-ui-polish-demo' of https://github.co…
kenjf65AI Jan 10, 2026
317aa88
fix(security): add .env.procore to gitignore
kenjf65AI Jan 24, 2026
a9c18ae
docs: add CLAUDE.md repository rules
kenjf65AI Jan 24, 2026
e9cd7f5
feat: add /api/health endpoint
kenjf65AI Jan 25, 2026
cbb55a3
docs: add development workflow guide
kenjf65AI Jan 25, 2026
ee37028
Merge pull request #12 from Plexify-AI/feature/api-health-endpoint
kenjf65AI Jan 25, 2026
3ded9d2
Added-deleted file Infographic
kenjf65AI Jan 25, 2026
8b6b7f1
fix(ui): refine add project button styling
kenjf65AI Jan 28, 2026
7ef969e
Merge pull request #13 from Plexify-AI/feature/add-project-button-sty…
kenjf65AI Jan 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,16 @@ dist/
build/
.vite/

# Generated media
public/audio/
public/podcasts/

# Environment variables
.env
.env.local
.env.production
.env.development
.env.procore

# IDE
.vscode/
Expand Down
61 changes: 61 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# CLAUDE.md - PlexifyBID Repository Rules

## Who I Am
Ken, solo founder of Plexify AI. I coordinate development across:
- Claude Sonnet: Strategy, specs, prompts
- Code Droid (Factory.ai): Frontend implementation
- Claude Code: Backend development, architecture
- GitHub Desktop + VSCode: Local development

## Repository Architecture
This is NOT a traditional frontend/backend split. The app runs as React + Vite with backend middleware embedded in Vite's dev server.

### Backend Routes (Vite middleware):
- /api/agents/<id> — Claude-powered analysis
- /api/tts/generate — OpenAI text-to-speech
- /api/podcast/generate — ElevenLabs synthesis
- /api/export/docx — Word document export

## Current State
- Stable tag: v0.1.0-demo-ready
- Active branch: develop
- Backend readiness: ~40% (works for demos, not production)
- Known gaps: No database, no auth, no rate limiting, no tests

## Safety Rules (NON-NEGOTIABLE)

### Before ANY code changes:
1. State what you intend to change and why
2. Wait for my explicit approval
3. Never force push, never delete branches

### Branch discipline:
- Feature work: feature/[description]
- Backups before risky ops: backup/[description]-[date]
- PRs required for merging to develop

### NEVER do:
- Delete functionality without approval
- Modify .env files or commit secrets
- Push directly to develop or main
- Run destructive operations
- Install packages without stating why

## Known Technical Debt (Don't Fix Without Asking)
- @ts-nocheck in App.tsx — needs careful migration
- 85+ console.log statements — cleanup later
- as any casts — address incrementally
- Backup files in repo — cleanup later

## Current Priorities
1. Backend stability for pilot demos
2. NotebookBD RAG pipeline reliability
3. API error handling improvements
4. Security hardening (auth, rate limiting)

## Communication Style
- Be direct, not verbose
- Tables for comparisons
- Never use: delve, leverage, seamless, transformative
- Hit a blocker? Tell me immediately
- Uncertain? Propose 2-3 options, let me choose
57 changes: 57 additions & 0 deletions TROUBLESHOOTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Troubleshooting

## `Invalid hook call` when consuming `plexify-shared-ui`

**Symptom**

- Workspace (or other shared-ui components) white-screens and the console shows:
- `Invalid hook call. Hooks can only be called inside of the body of a function component...`
- Often followed by `Cannot read properties of null (reading 'useMemo')` coming from `@dnd-kit/*` hooks.

**Cause**

This almost always means the app has **multiple copies of React** (and/or hook-based dependencies like `@dnd-kit/*`) loaded at runtime.

This is easy to trigger during local development when `plexify-shared-ui` is linked via `file:../plexify-shared-ui` and that linked folder contains its own `node_modules`.

**Fix (Vite)**

In the consuming app's `vite.config.ts`, ensure Vite dedupes these packages so a single instance is used:

```ts
// vite.config.ts
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import { resolve } from 'path';

export default defineConfig({
plugins: [react()],
resolve: {
dedupe: [
'react',
'react-dom',
'react/jsx-runtime',
'react/jsx-dev-runtime',
'@dnd-kit/core',
'@dnd-kit/sortable',
'@dnd-kit/utilities',
'zustand',
'@tiptap/react',
'@tiptap/starter-kit',
],

// If you are using a linked `../plexify-shared-ui` that has its own node_modules,
// aliases are the most reliable way to force a single instance.
alias: {
react: resolve(__dirname, 'node_modules/react'),
'react-dom': resolve(__dirname, 'node_modules/react-dom'),
'react/jsx-runtime': resolve(__dirname, 'node_modules/react/jsx-runtime.js'),
'react/jsx-dev-runtime': resolve(__dirname, 'node_modules/react/jsx-dev-runtime.js'),
},
},
});
```

**Also recommended**

- If you're linking locally, consider removing `../plexify-shared-ui/node_modules` (or avoid installing React there) so React is only resolved from the consuming app.
85 changes: 85 additions & 0 deletions docs/DEV_WORKFLOW.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# PlexifyBID Development Workflow

## AI-Assisted Development Stack

| Tool | Role | When to Use |
|------|------|-------------|
| Claude Sonnet | Strategy, specs, prompts | Planning sessions, PRD work |
| Code Droid (Factory.ai) | Frontend implementation | UI components, React work |
| Claude Code | Backend development | API endpoints, middleware, architecture |
| GitHub Desktop + VSCode | Local development | Manual edits, debugging, git operations |

## Claude Code Workflow

### Before Starting
1. Pull latest from develop
2. Confirm CLAUDE.md is present at repo root
3. Claude Code will read CLAUDE.md and follow its rules

### The Edit Cycle
branch → spec → review proposal → approve edits → test → PR

**Step 1: Create Feature Branch**
Create a new branch called feature/[description] from develop

**Step 2: Give a Clear Spec**
Include:
- What the feature should do
- Expected inputs/outputs
- Any patterns to follow
- End with: "Show me the approach before making changes"

**Step 3: Review Proposal**
Claude Code should:
- Explore existing code first
- Propose where changes will go
- Show code before writing
- Wait for explicit approval

If it skips this, say:
Stop. Show me the change before making it. That's in CLAUDE.md.

**Step 4: Approve Edits**
- Review each file change
- Choose "Yes" for single edit approval
- Only use "Yes to all" for trusted, low-risk sessions

**Step 5: Test Locally**
npm run dev
Verify the feature works before pushing.

**Step 6: Push and PR**
Push this branch and create a PR to merge into develop

## Commit Message Convention

Format: `[type]: brief description`

| Type | Use For |
|------|---------|
| feat | New feature |
| fix | Bug fix |
| refactor | Code restructure, no behavior change |
| docs | Documentation only |
| chore | Maintenance, dependencies |

Examples:
- `feat: add /api/health endpoint`
- `fix(security): add .env.procore to gitignore`
- `docs: add DEV_WORKFLOW.md`

## Safety Rules (from CLAUDE.md)

- Always work on feature branches
- Never push directly to develop or main
- Create backup branches before risky operations
- PRs required for merging
- No destructive operations without explicit approval

## Testing Checklist

Before creating a PR:
- [ ] Feature works locally
- [ ] No console errors
- [ ] Existing features still work
- [ ] Commit messages follow convention
127 changes: 77 additions & 50 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,52 +1,79 @@
{
"name": "plexifybid",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"test": "echo \"No tests yet\""
},
"keywords": ["BID", "business-improvement-district", "operations", "management"],
"author": "Ken D'Amato <ken@plexify.io>",
"license": "MIT",
"description": "PlexifyBID - Operations Management Platform for Business Improvement Districts",
"repository": {
"type": "git",
"url": "https://github.com/Plexify-AI/plexifybid.git"
},
"dependencies": {
"@types/react": "^19.1.13",
"@types/react-dom": "^19.1.9",
"@types/uuid": "^10.0.0",
"@vitejs/plugin-react": "^5.0.3",
"autoprefixer": "^10.4.21",
"axios": "^1.12.2",
"cors": "^2.8.5",
"crypto-js": "^4.2.0",
"dotenv": "^17.2.3",
"express": "^5.1.0",
"express-rate-limit": "^8.1.0",
"helmet": "^8.1.0",
"js-cookie": "^3.0.5",
"lucide-react": "^0.544.0",
"node-fetch": "^3.3.2",
"pdf-parse": "^2.2.2",
"postcss": "^8.5.6",
"react": "^19.1.1",
"react-dom": "^19.1.1",
"react-router-dom": "^7.9.1",
"tailwindcss": "^3.4.17",
"typescript": "^5.9.2",
"uuid": "^13.0.0",
"vite": "^7.1.6",
"zustand": "^5.0.8"
},
"devDependencies": {
"@types/cors": "^2.8.19",
"@types/express": "^5.0.3",
"@types/js-cookie": "^3.0.6",
"@types/node": "^24.7.0"
}
"name": "plexifybid",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"assets:check": "node scripts/assets-check.mjs",
"assets:fix": "node scripts/assets-check.mjs --fix",
"test": "echo \"No tests yet\"",
"type-check": "tsc -p tsconfig.typecheck.json --noEmit"
},
"keywords": [
"BID",
"business-improvement-district",
"operations",
"management"
],
"author": "Ken D'Amato <ken@plexify.io>",
"license": "MIT",
"description": "PlexifyBID - Operations Management Platform for Business Improvement Districts",
"repository": {
"type": "git",
"url": "https://github.com/Plexify-AI/plexifybid.git"
},
"dependencies": {
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^8.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@elevenlabs/elevenlabs-js": "^2.28.0",
"@tiptap/extension-highlight": "^2.1.0",
"@tiptap/extension-placeholder": "^2.1.0",
"@tiptap/extension-text-align": "^2.1.0",
"@tiptap/extension-underline": "^2.1.0",
"@tiptap/react": "^2.1.0",
"@tiptap/starter-kit": "^2.1.0",
"@types/react": "^19.1.13",
"@types/react-dom": "^19.1.9",
"@types/uuid": "^10.0.0",
"@vitejs/plugin-react": "^4.2.1",
"autoprefixer": "^10.4.21",
"axios": "^1.12.2",
"cors": "^2.8.5",
"crypto-js": "^4.2.0",
"docx": "^9.5.1",
"dotenv": "^17.2.3",
"express": "^5.1.0",
"express-rate-limit": "^8.1.0",
"file-saver": "^2.0.5",
"helmet": "^8.1.0",
"js-cookie": "^3.0.5",
"lucide-react": "^0.544.0",
"node-fetch": "^3.3.2",
"openai": "^6.15.0",
"pdf-parse": "1.1.1",
"plexify-shared-ui": "file:./plexify-shared-ui",
"plyr": "^3.8.4",
"postcss": "^8.5.6",
"react": "^19.1.1",
"react-dom": "^19.1.1",
"react-h5-audio-player": "^3.10.1",
"react-router-dom": "^7.9.1",
"tailwindcss": "^3.4.17",
"typescript": "^5.9.2",
"uuid": "^13.0.0",
"vite": "^5.4.11",
"zustand": "^4.5.7"
},
"devDependencies": {
"@types/cors": "^2.8.19",
"@types/express": "^5.0.3",
"@types/file-saver": "^2.0.7",
"@types/js-cookie": "^3.0.6",
"@types/node": "^24.7.0",
"@types/pdf-parse": "^1.1.5",
"svgo": "^3.3.2"
}
}
11 changes: 11 additions & 0 deletions plexify-shared-ui/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
node_modules
dist
*.log
.DS_Store
.env
.env.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
Loading