mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-15 01:21:09 +02:00
## New Features ### Network Graph Visualization (Contacts, Calendar, Todo) - D3.js force simulation for physics-based layout - Zoom & pan with mouse/touchpad - Keyboard shortcuts: +/- zoom, 0 reset, Esc deselect, / search, F focus - Filtering by tags, company/location/project, connection strength - Shared components in @manacore/shared-ui ### Central Tags API (mana-core-auth) - CRUD endpoints for tags - Schema: tags table with userId, name, color, app - Shared tag components in @manacore/shared-ui ### Custom Themes System - Theme editor with live preview and color picker - Community theme gallery - Theme sharing (public, unlisted, private) - Backend API in mana-core-auth ### Todo App Extensions - Glass-pill design for task input and items - Settings page with 20+ preferences - Task edit modal with inline editing - Statistics page with visualizations - PWA support with offline capabilities - Multiple kanban boards ### Contacts App Features - Duplicate detection - Photo upload - Batch operations - Enhanced favorites page with multiple view modes - Alphabet view improvements - Search modal ### Help System - @manacore/shared-help-content - @manacore/shared-help-ui - @manacore/shared-help-types ### Other Features - Themes page for all apps - Referral system frontend - CommandBar (global search) - Skeleton loaders - Settings page improvements ## Bug Fixes - Network graph simulation initialization - Database schema TEXT for user_id columns (Better Auth compatibility) - Various styling fixes ## Documentation - Daily report for 2025-12-10 - CI/CD deployment guide 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
209 lines
15 KiB
JSON
209 lines
15 KiB
JSON
{
|
|
"name": "manacore-monorepo",
|
|
"version": "1.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"description": "Manacore Monorepo containing manacore, manadeck, picture, chat, zitare, and presi",
|
|
"scripts": {
|
|
"dev": "turbo run dev",
|
|
"build": "turbo run build",
|
|
"test": "turbo run test",
|
|
"lint": "turbo run lint",
|
|
"lint:root": "eslint . --cache",
|
|
"lint:fix": "eslint . --fix --cache",
|
|
"type-check": "turbo run type-check --filter='./apps/**' --filter='./packages/**' --filter='./services/**'",
|
|
"type-check:all": "turbo run type-check",
|
|
"clean": "turbo run clean",
|
|
"format": "prettier --config .prettierrc.json --write \"**/*.{ts,tsx,js,jsx,json,md,svelte,astro}\"",
|
|
"format:check": "prettier --config .prettierrc.json --check \"**/*.{ts,tsx,js,jsx,json,md,svelte,astro}\"",
|
|
"setup:env": "node scripts/generate-env.mjs",
|
|
"setup:db": "./scripts/setup-databases.sh",
|
|
"setup:db:chat": "./scripts/setup-databases.sh chat",
|
|
"setup:db:auth": "./scripts/setup-databases.sh auth",
|
|
"build:packages": "pnpm --filter '@manacore/*' build",
|
|
"postinstall": "node scripts/generate-env.mjs || true && pnpm run build:packages || true",
|
|
"manacore:dev": "turbo run dev --filter=manacore...",
|
|
"manadeck:dev": "turbo run dev --filter=manadeck...",
|
|
"picture:dev": "turbo run dev --filter=picture...",
|
|
"chat:dev": "turbo run dev --filter=chat...",
|
|
"dev:manacore:web": "pnpm --filter @manacore/web dev",
|
|
"dev:manacore:landing": "pnpm --filter @manacore/landing dev",
|
|
"dev:manacore:mobile": "pnpm --filter @manacore/mobile dev",
|
|
"dev:manacore:app": "pnpm --filter @manacore/web dev",
|
|
"dev:manacore:backends": "concurrently -n auth,chat,calendar,contacts,todo,zitare,picture,manadeck,clock -c blue,green,yellow,magenta,cyan,red,white,gray,orange \"pnpm dev:auth\" \"pnpm dev:chat:backend\" \"pnpm dev:calendar:backend\" \"pnpm dev:contacts:backend\" \"pnpm dev:todo:backend\" \"pnpm dev:zitare:backend\" \"pnpm dev:picture:backend\" \"pnpm dev:manadeck:backend\" \"pnpm dev:clock:backend\"",
|
|
"dev:manacore:full": "concurrently -n web,backends -c cyan,yellow \"pnpm dev:manacore:web\" \"pnpm dev:manacore:backends\"",
|
|
"dev:manadeck:web": "pnpm --filter @manadeck/web dev",
|
|
"dev:manadeck:landing": "pnpm --filter @manadeck/landing dev",
|
|
"dev:manadeck:backend": "pnpm --filter @manadeck/backend dev",
|
|
"dev:manadeck:mobile": "pnpm --filter @manadeck/mobile dev",
|
|
"dev:manadeck:app": "turbo run dev --filter=@manadeck/web --filter=@manadeck/backend",
|
|
"dev:picture:web": "pnpm --filter @picture/web dev",
|
|
"dev:picture:landing": "pnpm --filter @picture/landing dev",
|
|
"dev:picture:mobile": "pnpm --filter @picture/mobile dev",
|
|
"dev:picture:backend": "pnpm --filter @picture/backend dev",
|
|
"dev:picture:app": "turbo run dev --filter=@picture/web --filter=@picture/backend",
|
|
"dev:picture:full": "./scripts/setup-databases.sh picture && ./scripts/setup-databases.sh auth && concurrently -n auth,backend,web -c blue,green,cyan \"pnpm dev:auth\" \"pnpm dev:picture:backend\" \"pnpm dev:picture:web\"",
|
|
"dev:chat:mobile": "pnpm --filter @chat/mobile dev",
|
|
"dev:chat:web": "pnpm --filter @chat/web dev",
|
|
"dev:chat:landing": "pnpm --filter @chat/landing dev",
|
|
"dev:chat:backend": "pnpm --filter @chat/backend start:dev",
|
|
"dev:chat:app": "turbo run dev --filter=@chat/web --filter=@chat/backend",
|
|
"dev:auth": "pnpm --filter mana-core-auth start:dev",
|
|
"dev:chat:full": "./scripts/setup-databases.sh chat && ./scripts/setup-databases.sh auth && concurrently -n auth,backend,web -c blue,green,cyan \"pnpm dev:auth\" \"pnpm dev:chat:backend\" \"pnpm dev:chat:web\"",
|
|
"zitare:dev": "turbo run dev --filter=zitare...",
|
|
"dev:zitare:mobile": "pnpm --filter @zitare/mobile dev",
|
|
"dev:zitare:web": "pnpm --filter @zitare/web dev",
|
|
"dev:zitare:landing": "pnpm --filter @zitare/landing dev",
|
|
"dev:zitare:backend": "pnpm --filter @zitare/backend dev",
|
|
"dev:zitare:app": "turbo run dev --filter=@zitare/web --filter=@zitare/backend",
|
|
"dev:zitare:full": "./scripts/setup-databases.sh zitare && ./scripts/setup-databases.sh auth && concurrently -n auth,backend,web -c blue,green,cyan \"pnpm dev:auth\" \"pnpm dev:zitare:backend\" \"pnpm dev:zitare:web\"",
|
|
"contacts:dev": "turbo run dev --filter=contacts...",
|
|
"dev:contacts:mobile": "pnpm --filter @contacts/mobile dev",
|
|
"dev:contacts:web": "pnpm --filter @contacts/web dev",
|
|
"dev:contacts:landing": "pnpm --filter @contacts/landing dev",
|
|
"dev:contacts:backend": "pnpm --filter @contacts/backend dev",
|
|
"dev:contacts:app": "turbo run dev --filter=@contacts/web --filter=@contacts/backend",
|
|
"dev:contacts:full": "./scripts/setup-databases.sh contacts && ./scripts/setup-databases.sh auth && pnpm contacts:db:seed && concurrently -n auth,backend,web -c blue,green,cyan \"pnpm dev:auth\" \"pnpm dev:contacts:backend\" \"pnpm dev:contacts:web\"",
|
|
"contacts:db:push": "pnpm --filter @contacts/backend db:push",
|
|
"contacts:db:studio": "pnpm --filter @contacts/backend db:studio",
|
|
"contacts:db:seed": "pnpm --filter @contacts/backend db:seed",
|
|
"calendar:dev": "turbo run dev --filter=calendar...",
|
|
"dev:calendar:mobile": "pnpm --filter @calendar/mobile dev",
|
|
"dev:calendar:web": "pnpm --filter @calendar/web dev",
|
|
"dev:calendar:landing": "pnpm --filter @calendar/landing dev",
|
|
"dev:calendar:backend": "pnpm --filter @calendar/backend dev",
|
|
"dev:calendar:app": "turbo run dev --filter=@calendar/web --filter=@calendar/backend",
|
|
"dev:calendar:full": "./scripts/setup-databases.sh calendar && ./scripts/setup-databases.sh auth && concurrently -n auth,backend,web -c blue,green,cyan \"pnpm dev:auth\" \"pnpm dev:calendar:backend\" \"pnpm dev:calendar:web\"",
|
|
"calendar:db:push": "pnpm --filter @calendar/backend db:push",
|
|
"calendar:db:studio": "pnpm --filter @calendar/backend db:studio",
|
|
"calendar:db:seed": "pnpm --filter @calendar/backend db:seed",
|
|
"clock:dev": "turbo run dev --filter=clock...",
|
|
"dev:clock:web": "pnpm --filter @clock/web dev",
|
|
"dev:clock:landing": "pnpm --filter @clock/landing dev",
|
|
"dev:clock:backend": "pnpm --filter @clock/backend dev",
|
|
"dev:clock:app": "turbo run dev --filter=@clock/web --filter=@clock/backend",
|
|
"dev:clock:full": "./scripts/setup-databases.sh clock && ./scripts/setup-databases.sh auth && concurrently -n auth,backend,web -c blue,green,cyan \"pnpm dev:auth\" \"pnpm dev:clock:backend\" \"pnpm dev:clock:web\"",
|
|
"clock:db:push": "pnpm --filter @clock/backend db:push",
|
|
"clock:db:studio": "pnpm --filter @clock/backend db:studio",
|
|
"clock:db:seed": "pnpm --filter @clock/backend db:seed",
|
|
"mail:dev": "turbo run dev --filter=mail...",
|
|
"dev:mail:mobile": "pnpm --filter @mail/mobile dev",
|
|
"dev:mail:web": "pnpm --filter @mail/web dev",
|
|
"dev:mail:landing": "pnpm --filter @mail/landing dev",
|
|
"dev:mail:backend": "pnpm --filter @mail/backend dev",
|
|
"dev:mail:app": "turbo run dev --filter=@mail/web --filter=@mail/backend",
|
|
"mail:db:push": "pnpm --filter @mail/backend db:push",
|
|
"mail:db:studio": "pnpm --filter @mail/backend db:studio",
|
|
"mail:db:seed": "pnpm --filter @mail/backend db:seed",
|
|
"todo:dev": "turbo run dev --filter=todo...",
|
|
"dev:todo:web": "pnpm --filter @todo/web dev",
|
|
"dev:todo:landing": "pnpm --filter @todo/landing dev",
|
|
"dev:todo:backend": "pnpm --filter @todo/backend dev",
|
|
"dev:todo:app": "turbo run dev --filter=@todo/web --filter=@todo/backend",
|
|
"dev:todo:full": "./scripts/setup-databases.sh todo && ./scripts/setup-databases.sh auth && concurrently -n auth,backend,web -c blue,green,cyan \"pnpm dev:auth\" \"pnpm dev:todo:backend\" \"pnpm dev:todo:web\"",
|
|
"todo:db:push": "pnpm --filter @todo/backend db:push",
|
|
"todo:db:studio": "pnpm --filter @todo/backend db:studio",
|
|
"todo:db:seed": "pnpm --filter @todo/backend db:seed",
|
|
"dev:tags-test": "./scripts/setup-databases.sh todo && ./scripts/setup-databases.sh calendar && ./scripts/setup-databases.sh contacts && ./scripts/setup-databases.sh auth && concurrently -n auth,todo-be,todo-web,cal-be,cal-web,con-be,con-web -c blue,green,cyan,yellow,magenta,red,white \"pnpm dev:auth\" \"pnpm dev:todo:backend\" \"pnpm dev:todo:web\" \"pnpm dev:calendar:backend\" \"pnpm dev:calendar:web\" \"pnpm dev:contacts:backend\" \"pnpm dev:contacts:web\"",
|
|
"moodlit:dev": "turbo run dev --filter=moodlit...",
|
|
"dev:moodlit:mobile": "pnpm --filter @moodlit/mobile dev",
|
|
"dev:moodlit:web": "pnpm --filter @moodlit/web dev",
|
|
"dev:moodlit:landing": "pnpm --filter @moodlit/landing dev",
|
|
"dev:moodlit:backend": "pnpm --filter @moodlit/backend dev",
|
|
"dev:moodlit:app": "turbo run dev --filter=@moodlit/web --filter=@moodlit/backend",
|
|
"moodlit:db:push": "pnpm --filter @moodlit/backend db:push",
|
|
"moodlit:db:studio": "pnpm --filter @moodlit/backend db:studio",
|
|
"moodlit:db:seed": "pnpm --filter @moodlit/backend db:seed",
|
|
"finance:dev": "turbo run dev --filter=finance...",
|
|
"dev:finance:web": "pnpm --filter @finance/web dev",
|
|
"dev:finance:mobile": "pnpm --filter @finance/mobile dev",
|
|
"dev:finance:landing": "pnpm --filter @finance/landing dev",
|
|
"dev:finance:backend": "pnpm --filter @finance/backend dev",
|
|
"dev:finance:app": "turbo run dev --filter=@finance/web --filter=@finance/backend",
|
|
"finance:db:push": "pnpm --filter @finance/backend db:push",
|
|
"finance:db:studio": "pnpm --filter @finance/backend db:studio",
|
|
"finance:db:seed": "pnpm --filter @finance/backend db:seed",
|
|
"voxel-lava:dev": "turbo run dev --filter=@voxel-lava/web --filter=@voxel-lava/backend",
|
|
"dev:voxel-lava:web": "pnpm --filter @voxel-lava/web dev",
|
|
"dev:voxel-lava:backend": "pnpm --filter @voxel-lava/backend start:dev",
|
|
"dev:voxel-lava:app": "turbo run dev --filter=@voxel-lava/web --filter=@voxel-lava/backend",
|
|
"voxel-lava:db:push": "pnpm --filter @voxel-lava/backend db:push",
|
|
"voxel-lava:db:studio": "pnpm --filter @voxel-lava/backend db:studio",
|
|
"mana-games:dev": "turbo run dev --filter=mana-games...",
|
|
"dev:mana-games:web": "pnpm --filter @mana-games/web dev",
|
|
"dev:mana-games:backend": "pnpm --filter @mana-games/backend dev",
|
|
"dev:mana-games:app": "turbo run dev --filter=@mana-games/web --filter=@mana-games/backend",
|
|
"figgos:dev": "turbo run dev --filter=figgos...",
|
|
"dev:figgos:mobile": "pnpm --filter @figgos/mobile dev",
|
|
"dev:figgos:web": "pnpm --filter @figgos/web dev",
|
|
"dev:figgos:backend": "pnpm --filter @figgos/backend dev",
|
|
"dev:figgos:app": "turbo run dev --filter=@figgos/web --filter=@figgos/backend",
|
|
"dev:figgos:ios": "pnpm --filter @figgos/mobile ios",
|
|
"dev:figgos:android": "pnpm --filter @figgos/mobile android",
|
|
"figgos:db:push": "pnpm --filter @figgos/backend db:push",
|
|
"figgos:db:studio": "pnpm --filter @figgos/backend db:studio",
|
|
"worldream:dev": "turbo run dev --filter=worldream...",
|
|
"dev:worldream:web": "pnpm --filter @worldream/web dev",
|
|
"context:dev": "turbo run dev --filter=context...",
|
|
"dev:context:mobile": "pnpm --filter @context/mobile dev",
|
|
"docker:up": "docker compose -f docker-compose.dev.yml --env-file .env.development up -d postgres redis minio minio-init",
|
|
"docker:up:infra": "docker compose -f docker-compose.dev.yml --env-file .env.development up -d postgres redis minio minio-init",
|
|
"docker:up:db": "docker compose -f docker-compose.dev.yml --env-file .env.development up -d postgres redis",
|
|
"docker:up:auth": "docker compose -f docker-compose.dev.yml --env-file .env.development --profile auth up -d",
|
|
"docker:up:chat": "docker compose -f docker-compose.dev.yml --env-file .env.development --profile chat up -d",
|
|
"docker:up:all": "docker compose -f docker-compose.dev.yml --env-file .env.development --profile all up -d",
|
|
"docker:down": "docker compose -f docker-compose.dev.yml --env-file .env.development --profile all down",
|
|
"docker:logs": "docker compose -f docker-compose.dev.yml --env-file .env.development logs -f",
|
|
"docker:logs:auth": "docker compose -f docker-compose.dev.yml --env-file .env.development logs -f mana-core-auth",
|
|
"docker:logs:chat": "docker compose -f docker-compose.dev.yml --env-file .env.development logs -f chat-backend",
|
|
"docker:ps": "docker compose -f docker-compose.dev.yml --env-file .env.development ps -a",
|
|
"docker:clean": "docker compose -f docker-compose.dev.yml --env-file .env.development --profile all down -v",
|
|
"deploy:landing:chat": "pnpm --filter @chat/landing build && npx wrangler pages deploy apps/chat/apps/landing/dist --project-name=chat-landing",
|
|
"deploy:landing:picture": "pnpm --filter @picture/landing build && npx wrangler pages deploy apps/picture/apps/landing/dist --project-name=picture-landing",
|
|
"deploy:landing:manacore": "pnpm --filter @manacore/landing build && npx wrangler pages deploy apps/manacore/apps/landing/dist --project-name=manacore-landing",
|
|
"deploy:landing:manadeck": "pnpm --filter @manadeck/landing build && npx wrangler pages deploy apps/manadeck/apps/landing/dist --project-name=manadeck-landing",
|
|
"deploy:landing:zitare": "pnpm --filter @zitare/landing build && npx wrangler pages deploy apps/zitare/apps/landing/dist --project-name=zitare-landing",
|
|
"deploy:landing:presi": "pnpm --filter @presi/landing build && npx wrangler pages deploy apps/presi/apps/landing/dist --project-name=presi-landing",
|
|
"deploy:landing:clock": "pnpm --filter @clock/landing build && npx wrangler pages deploy apps/clock/apps/landing/dist --project-name=clock-landing",
|
|
"deploy:landing:mail": "pnpm --filter @mail/landing build && npx wrangler pages deploy apps/mail/apps/landing/dist --project-name=mail-landing",
|
|
"deploy:landing:moodlit": "pnpm --filter @moodlit/landing build && npx wrangler pages deploy apps/moodlit/apps/landing/dist --project-name=moodlit-landing",
|
|
"deploy:landing:all": "pnpm deploy:landing:chat && pnpm deploy:landing:picture && pnpm deploy:landing:manacore && pnpm deploy:landing:manadeck && pnpm deploy:landing:zitare && pnpm deploy:landing:presi && pnpm deploy:landing:clock && pnpm deploy:landing:mail",
|
|
"cf:login": "npx wrangler login",
|
|
"cf:projects:list": "npx wrangler pages project list",
|
|
"cf:projects:create": "echo 'Creating Cloudflare Pages projects...' && npx wrangler pages project create chat-landing --production-branch=main && npx wrangler pages project create picture-landing --production-branch=main && npx wrangler pages project create manacore-landing --production-branch=main && npx wrangler pages project create manadeck-landing --production-branch=main && npx wrangler pages project create zitare-landing --production-branch=main",
|
|
"prepare": "husky"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.1",
|
|
"concurrently": "^9.2.0",
|
|
"eslint": "^9.39.1",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"eslint-plugin-prettier": "^5.5.4",
|
|
"globals": "^16.5.0",
|
|
"husky": "^9.1.7",
|
|
"lint-staged": "^16.2.7",
|
|
"prettier": "^3.3.3",
|
|
"prettier-plugin-astro": "^0.14.1",
|
|
"prettier-plugin-svelte": "^3.4.0",
|
|
"turbo": "^2.3.0",
|
|
"typescript": "^5.9.3",
|
|
"typescript-eslint": "^8.48.1",
|
|
"wrangler": "^4.51.0"
|
|
},
|
|
"engines": {
|
|
"node": ">=18.0.0"
|
|
},
|
|
"packageManager": "pnpm@9.15.0",
|
|
"pnpm": {
|
|
"peerDependencyRules": {
|
|
"allowedVersions": {
|
|
"@mana-core/nestjs-integration>@nestjs/common": "^11.0.0",
|
|
"@mana-core/nestjs-integration>@nestjs/core": "^11.0.0",
|
|
"react-native>react": ">=18.0.0",
|
|
"react-native>@types/react": ">=18.0.0",
|
|
"@sveltejs/vite-plugin-svelte>vite": ">=6.0.0",
|
|
"@sveltejs/vite-plugin-svelte-inspector>vite": ">=6.0.0"
|
|
}
|
|
}
|
|
}
|
|
}
|