Files
evidencija-rezija/CLAUDE.md
Nikola Derežić 02a3023f7a add CLAUDE.md with development guidance for Claude Code
Provides architectural overview, development commands, and key patterns for future Claude instances working with this codebase.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-11 10:00:07 +02:00

3.3 KiB

CLAUDE.md

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

Development Commands

  • npm run dev - Start development server (Next.js)
  • npm run build - Build production version
  • npm start - Start production server
  • npm run prettier - Format code with Prettier
  • npm run prettier:check - Check code formatting
  • npm run seed - Seed database with initial data

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 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 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 messages/ directory. The middleware handles both auth and i18n routing.

Key Files & Responsibilities

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

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