6.4 KiB
LLM Guidance for the Time Tracking Project
This document provides guidance for Large Language Models (LLMs) working on the Time Tracking and Management System.
File Locations
Here's a guide to finding information within the project:
Documentation:
- General Project Overview:
docu/general_overview.md
- Backend Architecture (Go):
docu/backend_architecture.md
- Frontend Architecture (Next.js):
docu/frontend_architecture.md
- Database Schema (PostgreSQL):
docu/database_schema.md
- Deployment and DevOps:
docu/deployment_devops.md
- Security and Privacy:
docu/security_privacy.md
- Extensibility and Integrations:
docu/extensibility_integrations.md
- This LLM Guidance Document:
docu/llm_guidance.md
- Top Level Documentation Index:
docu/README.md
Code (Conceptual - see architecture documents for details):
-
Backend (Go): (Refer to
docu/backend_architecture.md
for the conceptual structure. Actual code structure may differ.)- Conceptual File Locations:
backend-go/internal/domain/entities/
: Core domain entities (User, Company, Project, etc.)backend-go/internal/domain/repositories/
: Interfaces for data access.backend-go/internal/domain/services/
: Business logic implementation.backend-go/internal/infrastructure/persistence/
: Database interactions (GORM).backend-go/internal/interfaces/http/handlers/
: API endpoint handlers.backend-go/internal/interfaces/http/middleware/
: Authentication and tenant isolation middleware.
- Code Examples:
docu/code_examples/gorm_entities.go
: Example GORM entity definitions.docu/code_examples/fpgo_repository.go
: Example FPGO repository interface.docu/code_examples/fpgo_service.go
: Example FPGO service implementation.docu/code_examples/api_handler.go
: Example API handler.
- Conceptual File Locations:
-
Frontend (Next.js): (Refer to
docu/frontend_architecture.md
for the conceptual structure. Actual code structure may differ.)- Conceptual File Locations:
frontend-nextjs/pages/
: Application pages.frontend-nextjs/components/
: Reusable UI components.frontend-nextjs/lib/
: API interaction and helper functions.frontend-nextjs/types/
: TypeScript type definitions.
- Code Examples:
docu/code_examples/react_component.tsx
: Example React component.
- Conceptual File Locations:
Important Note about Code Examples: The files in docu/code_examples/
are for illustrative purposes only. They do not represent a runnable project structure. Treat each file as an isolated example. The package declarations within these files (e.g., package models
, package repositories
, package main
) are conceptual and should be interpreted in the context of the described architecture, not as a literal directory structure. Do not attempt to run go get
or similar commands based on these examples, as the necessary project structure and dependencies are not present.
Rules and Guidelines
- Clean Architecture: Adhere to Clean Architecture principles. Separate business logic (domain) from infrastructure concerns (database, UI).
- Domain-Driven Design (DDD): Use DDD concepts to model the domain accurately.
- Multi-Tenancy: Ensure all operations are scoped to the correct tenant (company). Use the
company_id
for data isolation. - FPGO and FPTS: Favor functional programming paradigms in both Go (FPGO) and TypeScript (FPTS).
- Modularity: Keep code modular and well-organized.
- Error Handling: Implement robust error handling and validation.
- Security: Prioritize security. Use JWT for authentication and RBAC for authorization. Sanitize inputs to prevent injection attacks.
- Testing: Write unit and integration tests for all new code.
- Documentation: Keep the documentation up to date.
- Conceptual Architecture: The architecture files are a concept, not a final implementation.
Ideas to Follow
- Small, Focused Modules: Break down tasks into small, well-defined modules.
- Descriptive Naming: Use clear and descriptive names for variables, functions, and files.
- Comments: Add comments to explain complex logic.
- Consistency: Maintain consistent coding style and patterns.
- Leverage Libraries: Use existing libraries (FPGO, FPTS, GORM, Gin, Axios, etc.) where appropriate.
- Ask for Clarification: If unsure about any aspect of the project, use the
ask_followup_question
tool. - Visually Appealing Design: (Especially for Claude models) Strive for a visually appealing and user-friendly interface. Consider using appropriate colors, layout, and components.
- Prefer Replacements: When making changes to existing files, favor the
replace_in_file
tool overwrite_to_file
to minimize context usage and cost. Only usewrite_to_file
for creating new files or making extensive, non-localized changes.
Workflow for Limited Context
If you encounter context limitations or are instructed to work in smaller chunks, follow this workflow:
- Request a Summary: If needed, ask for a brief summary of the current task and relevant file content.
- Plan in Chunks: Divide the task into smaller, manageable sub-tasks.
- Focus on One Chunk: Work on one sub-task at a time.
- Use
replace_in_file
: Make targeted changes usingreplace_in_file
. - Iterate: Repeat steps 3 and 4 for each sub-task.
- Provide Context Briefing: When moving to a new chunk or file, provide a concise summary of the previous work and the current objective. This helps maintain context across multiple interactions.
Code Organization and Style
- Functional File Division: Divide functionalities logically into separate files. This improves readability, maintainability, and helps manage context size.
- Code Reusability: Design code to be reusable and extensible. Anticipate future requirements and create components or functions that can be adapted for different purposes.
- Common Sense: Apply general good coding practices, even if they seem obvious. This includes things like:
- Using meaningful variable and function names.
- Adding comments to explain non-obvious logic.
- Handling edge cases and potential errors.
- Keeping functions and components concise and focused.
- Following consistent indentation and formatting.