Lychee Documentation
Welcome to the Lychee documentation! This folder contains comprehensive documentation about the Lychee photo management system and is primarily focused on the internal workings of Lychee.
This includes its architecture, request lifecycles, data structures, and validation systems. It is intended for developers and contributors who want to understand how Lychee operates under the hood.
Before getting started, we would like to highlight the folders of interest at the root level of the repository:
./
βββ app/ # Contains the core of Lychee: models, controllers, actions, and business logic
βββ database/ # Database migrations for setting up the database schema
βββ docs/ # Developer documentation (this folder) explaining Lychee's internal workings
β βββ specs/ # Structured documentation following DiΓ‘taxis framework
βββ lang/ # Translation files for internationalization
βββ resources/ # Frontend assets including Vue.js components
βββ routes/ # API and web route definitions
βββ tests/ # Automated test suites for ensuring code quality and functionalityThe missing folders (bootstrap, composer-cache, config, docker, phpstan, public, scripts and storage) are still essential for the overall functionality of Lychee but not of primary concern for understanding the system.
Documentation Structure
Documentation is organized following the DiΓ‘taxis framework in the specs/ directory:
- 0-overview - High-level project documentation
- 1-concepts - Conceptual explanations (domain model, photos, albums, permissions)
- 2-how-to - Practical how-to guides
- 3-reference - Technical reference documentation
- 4-architecture - Architecture decisions and designs
- 5-operations - Operational runbooks
- 6-decisions - Architectural Decision Records (ADRs)
Getting Started
Backend Architecture
- Backend Architecture - Laravel structure, design patterns, and key components
- API Design - RESTful API patterns, authentication, and response structure
- Database Schema - Models, relationships, smart albums vs regular albums
- Request Lifecycle: Album Creation - Complete album creation flow
- Request Lifecycle: Photo Upload - Photo upload and processing flow
Frontend Architecture
- Frontend Architecture - Vue3, TypeScript, Pinia, composables, and Lychee conventions
- Frontend Gallery Views - Gallery viewing modes and component architecture
- Frontend Layout System - Photo layout algorithms
- Customize the v8 (Nuxt UI) Frontend - How-to guide for theming, per-component style overrides, icons, and toasts/dialogs in the Nuxt UI migration
Data Structures
- Album Tree Structure - Nested set model for hierarchical album organization
- Tag System - Tag architecture and operations
- Smart Albums Documentation - Virtual albums that dynamically contain photos based on criteria
Authorization and Validation
- Policies Documentation - Authorization and access control system with regular and query policies
- Rules Documentation - Custom validation rules with patterns, security considerations, and implementation examples
Localization and Internationalization
- Localization Reference - Technical reference for the translation system
- Translating Lychee - How-to guide for adding translations
Contributing
- Contribution Guide - How to contribute to Lychee
- Coding Conventions - PHP and Vue3 coding standards
- AI/Claude Guidelines - Guidelines for AI-assisted development
- AGENTS.md - Instructions for AI agents working on this codebase
Additional Resources
For more information about Lychee:
- Main Repository
- Official Website
- Admin Documentation
- Knowledge Map - Module and dependency relationships
Last updated: January 21, 2026