gdc_cmod/.serena/memories/project_structure.md

108 lines
4.9 KiB
Markdown

# Project Structure
## Directory Layout
```
gdc_cmod/
├── app/ # Application code
│ ├── Controllers/ # Controllers (API & Pages)
│ │ ├── Pages/ # Page controllers by role
│ │ │ ├── AdminController.php
│ │ │ ├── CsController.php
│ │ │ ├── LabController.php
│ │ │ ├── PhlebotomistController.php
│ │ │ └── SuperuserController.php
│ │ ├── ApiDashboard.php
│ │ ├── ApiRequestsAuditController.php
│ │ ├── ApiValidateController.php
│ │ ├── AuthController.php
│ │ ├── BaseController.php
│ │ ├── ErrorPage.php
│ │ ├── Home.php
│ │ ├── LabelController.php
│ │ ├── RequestsController.php
│ │ ├── SamplesController.php
│ │ └── UsersController.php
│ ├── Config/ # Configuration
│ │ ├── App.php
│ │ ├── Database.php
│ │ ├── Filters.php # Filter definitions
│ │ ├── Routes.php # Route definitions
│ │ └── ...
│ ├── Database/ # Database configurations
│ ├── Filters/ # Custom filters
│ │ ├── GuestFilter.php
│ │ ├── RoleFilter.php
│ │ └── .gitkeep
│ ├── Helpers/ # Helper functions
│ ├── Language/ # Language files
│ ├── Libraries/ # Custom libraries
│ ├── Models/ # Models (none used in this project)
│ ├── ThirdParty/ # Third-party code
│ └── Views/ # Views
│ ├── admin/ # Admin views
│ ├── cs/ # CS views
│ ├── errors/ # Error pages
│ ├── lab/ # Lab views
│ ├── phlebo/ # Phlebo views
│ ├── shared/ # Shared components
│ ├── superuser/ # Superuser views
│ └── ...
├── public/ # Web root
│ ├── index.php # Front controller
│ ├── .htaccess
│ ├── web.config
│ ├── css/ # Local CSS
│ └── js/ # Local JavaScript
├── tests/ # PHPUnit tests
│ ├── _support/ # Test support files
│ ├── database/ # Database tests
│ ├── session/ # Session tests
│ ├── unit/ # Unit tests
│ └── README.md
├── writable/ # Writeable directories
├── vendor/ # Composer dependencies
├── .env # Environment variables (git ignored)
├── env # Example environment file
├── .gitignore # Git ignore rules
├── AGENTS.md # Agent guidelines (this file)
├── CHECKLIST.md # Feature checklist
├── CLAUDE.md # Claude Code guidelines
├── composer.json # Composer dependencies
├── composer.lock # Locked dependencies
├── phpunit.xml.dist # PHPUnit configuration
├── preload.php # PHP OpCache preload
├── README.md # Project README
├── spark # CodeIgniter CLI tool
└── LICENSE # MIT License
```
## Key Files & Their Purposes
### Configuration
- **app/Config/Database.php** - Database connections (SQL Server + Firebird ODBC)
- **app/Config/Filters.php** - Filter definitions (RoleFilter, GuestFilter)
- **app/Config/Routes.php** - Route definitions (API and page routes)
- **app/Config/App.php** - Application settings (baseURL, etc.)
### Controllers
- **Pages/[Role]Controller.php** - Page controllers for each role
- **Api[Resource]Controller.php** - API controllers for JSON endpoints
- **AuthController.php** - Authentication (login/logout)
- **UsersController.php** - User management API
- **RequestsController.php** - Request validation API
- **SamplesController.php** - Sample collection API
### Filters
- **app/Filters/RoleFilter.php** - Check user role on protected routes
- **app/Filters/GuestFilter.php** - Redirect logged-in users from public pages
### Views
- **views/shared/** - Shared components used across roles
- **views/{role}/** - Role-specific views
- **views/login.php** - Login page
### Tests
- **tests/unit/** - Unit tests (HealthTest, etc.)
- **tests/database/** - Database tests
- **tests/session/** - Session tests