Files
evidencija-rezija/CLAUDE.md
Knee Cola 57dcebd640 refactor: convert repository to monorepo with npm workspaces
Restructured the repository into a monorepo to better organize application code
and maintenance scripts.

## Workspace Structure
- web-app: Next.js application (all app code moved from root)
- housekeeping: Database backup and maintenance scripts

## Key Changes
- Moved all application code to web-app/ using git mv
- Moved database scripts to housekeeping/ workspace
- Updated Dockerfile for monorepo build process
- Updated docker-compose files (volume paths: ./web-app/etc/hosts/)
- Updated .gitignore for workspace-level node_modules
- Updated documentation (README.md, CLAUDE.md, CHANGELOG.md)

## Migration Impact
- Root package.json now manages workspaces
- Build commands delegate to web-app workspace
- All file history preserved via git mv
- Docker build process updated for workspace structure

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-25 12:13:04 +01:00

4.2 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Monorepo Structure

This is a monorepo with the following workspaces:

  • web-app: Next.js 14 utility bills tracking application
  • housekeeping: Database backup and maintenance scripts

Development Commands

From the monorepo root:

  • npm run dev - Start development server (runs web-app workspace)
  • npm run build - Build production version (builds web-app workspace)
  • npm start - Start production server (runs web-app workspace)
  • npm run prettier - Format code with Prettier (entire monorepo)
  • npm run prettier:check - Check code formatting (entire monorepo)

From the web-app workspace (cd web-app):

  • npm run dev - Start development server
  • npm run build - Build production version
  • npm start - Start production server
  • npm run seed - Seed database with initial data

From the housekeeping workspace (cd housekeeping):

  • npm run backup:standalone - Run standalone database backup
  • npm run backup:swarm - Run swarm database backup
  • npm run dump:standalone - Run standalone database dump
  • See housekeeping/README.md for more details

Deployment Commands

  • ./build.sh - Build Docker image for deployment
  • ./deploy.sh - Deploy Docker service to production
  • ./debug-deploy.sh - Deploy with debug configuration

Architecture Overview

This is a Next.js 14 utility bills tracking application ("Evidencija Režija") with the following key components:

Tech Stack

  • Framework: Next.js 14 with App Router and standalone output for Docker
  • Authentication: NextAuth v5 with Google OAuth
  • Database: MongoDB with connection pooling
  • Internationalization: next-intl (Croatian/English)
  • Styling: Tailwind CSS with DaisyUI components
  • Deployment: Docker with MongoDB 4.4.27 (AVX compatibility)

Core Architecture Patterns

Multi-user Data Isolation: All database operations use the withUser higher-order function from web-app/app/lib/auth.ts:102 to automatically inject authenticated user ID into queries, ensuring data isolation between users.

Server Actions Pattern: Form handling uses Next.js Server Actions with Zod validation. Actions are defined in web-app/app/lib/actions/ and follow the pattern:

export const actionName = withUser(async (user: AuthenticatedUser, ...args) => {
  // Server action implementation with automatic user context
});

Internationalization: Uses next-intl with locale-based routing. Messages are in web-app/messages/ directory. The middleware handles both auth and i18n routing.

Key Files & Responsibilities

  • web-app/middleware.ts - Handles authentication and i18n routing, defines public pages
  • web-app/app/lib/auth.ts - NextAuth configuration, withUser HOF for user context
  • web-app/app/lib/dbClient.ts - MongoDB connection with development/production handling
  • web-app/app/lib/actions/ - Server actions for data mutations (locations, bills, months)
  • web-app/app/i18n.ts - Internationalization configuration (Croatian default)
  • web-app/next.config.js - Standalone build config with serverActions.allowedOrigins for Docker deployment
  • housekeeping/ - Database backup and maintenance scripts

Database Schema

  • Collections: Locations, Bills, Months (year-month periods)
  • User Association: All documents include userId field for multi-tenant isolation
  • Database Name: "utility-bills"

Docker Deployment Notes

  • Uses standalone Next.js build for Docker optimization
  • MongoDB 4.4.27 required for older CPU compatibility (no AVX instructions)
  • HOSTNAME=0.0.0.0 with serverActions.allowedOrigins config to handle reverse proxy headers
  • Environment variables: MONGODB_URI, GOOGLE_ID, GOOGLE_SECRET, AUTH_SECRET

Barcode/QR Code Feature

  • Uses @zxing/library and @zxing/browser for PDF document scanning
  • Heavy barcode decoding operations should be moved to background threads if performance issues arise
  • PDF processing with pdfjs-dist for utility bill scanning

Testing & Code Quality

  • ESLint with Next.js and Prettier configurations
  • No specific test framework configured - check with user before assuming testing approach