mirror of https://github.com/ghostfolio/ghostfolio
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.8 KiB
3.8 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
Ghostfolio is an open source wealth management software built with TypeScript in an Nx monorepo workspace. It's a full-stack application with Angular frontend and NestJS backend, using PostgreSQL with Prisma ORM and Redis for caching.
Development Commands
Environment Setup
npm install
docker compose -f docker/docker-compose.dev.yml up -d # Start PostgreSQL and Redis
npm run database:setup # Initialize database schema
Development Servers
npm run start:server # Start NestJS API server
npm run start:client # Start Angular client (English)
npm run watch:server # Start server in watch mode for debugging
Build and Production
npm run build:production # Build both API and client for production
npm run start:production # Run production build with database migration
Database Operations
npm run database:push # Sync schema with database (development)
npm run database:migrate # Apply migrations (production)
npm run database:seed # Seed database with initial data
npm run database:gui # Open Prisma Studio
npm run database:format-schema # Format Prisma schema
npm run database:generate-typings # Generate Prisma client
Testing and Quality
npm test # Run all tests (API + common)
npm run test:api # Run API tests only
npm run test:common # Run common library tests
npm run test:single # Run single test file (example provided)
npm run lint # Run ESLint on all projects
npm run format # Format code with Prettier
npm run format:check # Check code formatting
Nx Workspace Commands
nx affected:build # Build affected projects
nx affected:test # Test affected projects
nx affected:lint # Lint affected projects
nx dep-graph # View dependency graph
Storybook (Component Library)
npm run start:storybook # Start Storybook development server
npm run build:storybook # Build Storybook for production
Architecture
Monorepo Structure
- apps/api: NestJS backend application
- apps/client: Angular frontend application
- apps/client-e2e: E2E tests for client
- apps/ui-e2e: E2E tests for UI components
- libs/common: Shared TypeScript libraries and utilities
- libs/ui: Angular UI component library
Technology Stack
- Frontend: Angular 20 with Angular Material, Bootstrap utility classes
- Backend: NestJS with TypeScript
- Database: PostgreSQL with Prisma ORM
- Caching: Redis with Bull for job queues
- Build Tool: Nx workspace
- Testing: Jest for unit tests, Cypress for E2E tests
Key Dependencies
- Authentication: Passport (JWT, Google OAuth, WebAuthn)
- Data Sources: Yahoo Finance, CoinGecko APIs for market data
- Charts: Chart.js with various plugins
- Payment: Stripe integration
- Internationalization: Angular i18n with multiple language support
Database Schema
The Prisma schema defines models for:
- User management and access control
- Account and portfolio tracking
- Trading activities and orders
- Market data and asset information
- Platform integrations
Development Notes
- Node.js version >=22.18.0 required
- Uses Nx generators for consistent code scaffolding
- Husky for git hooks and code quality enforcement
- Environment files:
.env.devfor development,.env.exampleas template - SSL certificates can be generated for localhost development
- Experimental features can be toggled via user settings
- always run the .husky pre commit hooks after code changes