|
@@ -0,0 +1,95 @@
|
|
|
|
|
+# CLAUDE.md
|
|
|
|
|
+
|
|
|
|
|
+This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
|
+
|
|
|
|
|
+## Language
|
|
|
|
|
+
|
|
|
|
|
+If it is detected at the start or during a session that the user's primary language is not English, always respond in that language from then on. However, technical terms may remain in English as needed.
|
|
|
|
|
+
|
|
|
|
|
+## Project Overview
|
|
|
|
|
+
|
|
|
|
|
+GROWI is a team collaboration software using markdown - a wiki platform with hierarchical page organization. It's built with Next.js, Express, MongoDB, and includes features like real-time collaborative editing, authentication integrations, and plugin support.
|
|
|
|
|
+
|
|
|
|
|
+## Development Commands
|
|
|
|
|
+
|
|
|
|
|
+### Core Development
|
|
|
|
|
+- `turbo run bootstrap` - Install dependencies for all workspace packages
|
|
|
|
|
+- `turbo run dev` - Start development server (automatically runs migrations and pre-builds styles)
|
|
|
|
|
+
|
|
|
|
|
+### Production Commands
|
|
|
|
|
+- `pnpm run app:build` - Build GROWI app client and server for production
|
|
|
|
|
+- `pnpm run app:server` - Launch GROWI app server in production mode
|
|
|
|
|
+- `pnpm start` - Build and start the application (runs both build and server commands)
|
|
|
|
|
+
|
|
|
|
|
+### Database Migrations
|
|
|
|
|
+- `pnpm run migrate` - Run MongoDB migrations (production)
|
|
|
|
|
+- `turbo run dev:migrate @apps/app` - Run migrations in development (or wait for automatic execution with dev)
|
|
|
|
|
+- `cd apps/app && pnpm run dev:migrate:status` - Check migration status
|
|
|
|
|
+- `cd apps/app && pnpm run dev:migrate:down` - Rollback last migration
|
|
|
|
|
+
|
|
|
|
|
+### Testing and Quality
|
|
|
|
|
+- `turbo run test @apps/app` - Run Jest and Vitest test suites with coverage
|
|
|
|
|
+- `turbo run lint @apps/app` - Run all linters (TypeScript, ESLint, Biome, Stylelint, OpenAPI)
|
|
|
|
|
+- `cd apps/app && pnpm run lint:typecheck` - TypeScript type checking only
|
|
|
|
|
+- `cd apps/app && pnpm run test:vitest` - Run Vitest unit tests
|
|
|
|
|
+- `cd apps/app && pnpm run test:jest` - Run Jest integration tests
|
|
|
|
|
+
|
|
|
|
|
+### Development Utilities
|
|
|
|
|
+- `cd apps/app && pnpm run repl` - Start Node.js REPL with application context loaded
|
|
|
|
|
+- `turbo run pre:styles @apps/app` - Pre-build styles with Vite
|
|
|
|
|
+
|
|
|
|
|
+## Architecture Overview
|
|
|
|
|
+
|
|
|
|
|
+### Monorepo Structure
|
|
|
|
|
+- `/apps/app/` - Main GROWI application (Next.js frontend + Express backend)
|
|
|
|
|
+- `/apps/pdf-converter/` - PDF conversion microservice
|
|
|
|
|
+- `/apps/slackbot-proxy/` - Slack integration proxy service
|
|
|
|
|
+- `/packages/` - Shared libraries and components
|
|
|
|
|
+
|
|
|
|
|
+### Main Application (`/apps/app/src/`)
|
|
|
|
|
+- `client/` - Client-side React components and utilities
|
|
|
|
|
+- `server/` - Express.js backend (API routes, models, services)
|
|
|
|
|
+- `components/` - Shared React components and layouts
|
|
|
|
|
+- `pages/` - Next.js page components using file-based routing
|
|
|
|
|
+- `stores/` - State management (SWR-based stores with React context)
|
|
|
|
|
+- `styles/` - SCSS stylesheets with modular architecture
|
|
|
|
|
+- `migrations/` - MongoDB database migration scripts
|
|
|
|
|
+- `interfaces/` - TypeScript type definitions
|
|
|
|
|
+
|
|
|
|
|
+### Key Technical Details
|
|
|
|
|
+- **Frontend**: Next.js 14 with React 18, TypeScript, SCSS modules
|
|
|
|
|
+- **Backend**: Express.js with TypeScript, MongoDB with Mongoose
|
|
|
|
|
+- **State Management**: SWR for server state, React Context for client state
|
|
|
|
|
+- **Authentication**: Passport.js with multiple strategies (local, LDAP, OAuth, SAML)
|
|
|
|
|
+- **Real-time Features**: Socket.io for collaborative editing and notifications
|
|
|
|
|
+- **Editor**: Custom markdown editor with collaborative editing using Yjs
|
|
|
|
|
+- **Database**: MongoDB 6.0+ with migration system using migrate-mongo
|
|
|
|
|
+- **Package Manager**: pnpm with workspace support
|
|
|
|
|
+- **Build System**: Turborepo for monorepo orchestration
|
|
|
|
|
+
|
|
|
|
|
+### Development Dependencies
|
|
|
|
|
+- Node.js v20.x or v22.x
|
|
|
|
|
+- pnpm 10.x
|
|
|
|
|
+- MongoDB 6.0+
|
|
|
|
|
+- Optional: Redis 3.x, Elasticsearch 7.x/8.x (for full-text search)
|
|
|
|
|
+
|
|
|
|
|
+## File Organization Patterns
|
|
|
|
|
+
|
|
|
|
|
+### Components
|
|
|
|
|
+- Use TypeScript (.tsx) for React components
|
|
|
|
|
+- Co-locate styles as `.module.scss` files
|
|
|
|
|
+- Export components through `index.ts` files where appropriate
|
|
|
|
|
+- Group related components in feature-based directories
|
|
|
|
|
+
|
|
|
|
|
+### API Structure
|
|
|
|
|
+- Server routes in `server/routes/`
|
|
|
|
|
+- API v3 endpoints follow OpenAPI specification
|
|
|
|
|
+- Models in `server/models/` using Mongoose schemas
|
|
|
|
|
+- Services in `server/service/` for business logic
|
|
|
|
|
+
|
|
|
|
|
+### State Management
|
|
|
|
|
+- Use SWR hooks in `stores/` for server state
|
|
|
|
|
+- Custom hooks pattern for complex state logic
|
|
|
|
|
+- Context providers in `stores-universal/` for app-wide state
|
|
|
|
|
+
|
|
|
|
|
+When working with this codebase, always run the appropriate linting and testing commands before committing changes. The application uses strict TypeScript checking and comprehensive test coverage requirements.
|