# Quick Start Guide - MokoCassiopeia Development

Get up and running with MokoCassiopeia development in minutes.

## Prerequisites

Before you begin, ensure you have:

- **Git** - For version control
- **PHP 8.0+** - Required runtime
- **Composer** - PHP dependency manager
- **Make** (optional) - For convenient commands
- **Code Editor** - VS Code recommended (tasks pre-configured)

## 5-Minute Setup

### 1. Clone the Repository

```bash
git clone https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia.git
cd MokoCassiopeia
```

### 2. Install Development Dependencies

```bash
# Using Make (recommended)
make dev-setup

# Or manually
composer global require "squizlabs/php_codesniffer:^3.0"
composer global require phpstan/phpstan
composer global require "phpcompatibility/php-compatibility:^9.0"
composer global require codeception/codeception
```

### 3. Validate Everything Works

```bash
# Quick validation
make validate-required

# Or comprehensive validation
make validate
```

## Common Tasks

### Development Workflow

```bash
# 1. Make your changes
vim src/index.php

# 2. Validate locally
make validate-required

# 3. Check code quality
make quality

# 4. Commit
git add -A
git commit -m "feat: add new feature"
# (pre-commit hook runs automatically)

# 5. Push
git push origin your-branch
```

### Testing

```bash
# Run all tests
make test

# Run unit tests only
make test-unit

# Run acceptance tests only
make test-acceptance
```

### Code Quality

```bash
# Check everything
make quality

# PHP CodeSniffer only
make phpcs

# Auto-fix PHPCS issues
make phpcs-fix

# PHPStan only
make phpstan

# PHP compatibility check
make phpcompat
```

### Creating a Release Package

```bash
# Package with auto-detected version
make package

# Check package contents
ls -lh dist/
unzip -l dist/mokocassiopeia-*.zip
```

## VS Code Integration

If using VS Code, press `Ctrl+Shift+P` (or `Cmd+Shift+P` on Mac) and type "Run Task" to see available tasks:

- **Validate All** - Run all validation scripts (default test task)
- **Validate Required** - Run only required validations
- **PHP CodeSniffer** - Check code style
- **PHP CodeSniffer - Auto Fix** - Fix code style issues
- **PHPStan** - Static analysis
- **Run Tests** - Execute all tests
- **Create Package** - Build distribution ZIP
- **Install Git Hooks** - Set up pre-commit hooks

## Available Make Commands

Run `make help` to see all available commands:

```bash
make help              # Show all commands
make dev-setup         # Complete environment setup
make validate          # Run all validations
make test              # Run all tests
make quality           # Check code quality
make package           # Create distribution package
make clean             # Remove generated files
make check             # Quick check (validate + quality)
make all               # Complete build pipeline
```

## Project Structure

```
moko-cassiopeia/
├── src/                      # Joomla template source (template root)
│   ├── component.php         # Component template file
│   ├── index.php             # Main template file
│   ├── offline.php           # Offline page template
│   ├── error.php             # Error page template
│   ├── templateDetails.xml   # Template manifest
│   ├── html/                 # Module & component overrides
│   ├── media/                # Assets (CSS, JS, images, fonts)
│   ├── language/             # Frontend language files (en-GB, en-US)
│   └── administrator/        # Backend files
│       └── language/         # Backend language files
├── tests/                    # Test suites
├── docs/                     # Documentation
├── scripts/                  # Build scripts
├── .github/workflows/        # CI/CD workflows
├── Makefile                  # Make commands
└── README.md                 # Project overview
```

## Next Steps

### Learning the Workflow

1. **Read the Workflow Guide**: [docs/WORKFLOW_GUIDE.md](./WORKFLOW_GUIDE.md)
2. **Review Joomla Development**: [docs/JOOMLA_DEVELOPMENT.md](./JOOMLA_DEVELOPMENT.md)

### Creating Your First Feature

1. **Create a version branch** via GitHub Actions:
   - Go to Actions → Create version branch
   - Enter version (e.g., 03.06.00)
   - Select branch prefix: `dev/`
   - Run workflow

2. **Checkout the branch**:
   ```bash
   git fetch origin
   git checkout dev/03.06.00
   ```

3. **Make changes and test**:
   ```bash
   # Edit files
   vim src/index.php
   
   # Validate
   make validate-required
   
   # Check quality
   make quality
   ```

4. **Commit and push**:
   ```bash
   git add -A
   git commit -m "feat: your feature description"
   git push origin dev/03.06.00
   ```

5. **Watch CI**: Check GitHub Actions for automated testing

### Understanding the Release Process

```
Development → RC → Stable → Production
  (dev/)     (rc/)  (version/)  (main)
```

1. **dev/X.Y.Z** - Active development
2. **rc/X.Y.Z** - Release candidate testing
3. **version/X.Y.Z** - Stable release
4. **main** - Production (auto-merged from version/)

Use the Release Pipeline workflow to promote between stages.

## Troubleshooting

### Scripts Not Executable

```bash
make fix-permissions
### PHPStan/PHPCS Not Found

```bash
make install
# Or manually:
composer global require "squizlabs/php_codesniffer:^3.0" phpstan/phpstan
```

### CI Workflow Fails

1. Check the workflow logs in GitHub Actions
2. Run validation locally:
   ```bash
   make validate-required
   make quality
   ```

### Need Help?

- **Documentation**: Check [docs/](../docs/) directory
- **Issues**: Open an issue on GitHub
- **Contributing**: See [CONTRIBUTING.md](../CONTRIBUTING.md)

## Best Practices

### Before Committing

```bash
# Always validate first
make validate-required

# Check quality for PHP changes
make quality

# Run tests if you changed functionality
make test
```

### Code Style

- Follow PSR-12 standards
- Use `make phpcs-fix` to auto-fix issues
- Add SPDX license headers to new files
- Keep functions small and focused

### Documentation

- Update docs when changing workflows
- Add comments for complex logic
- Update CHANGELOG.md with changes
- Keep README.md current

### Version Management

- Use semantic versioning: Major.Minor.Patch (03.06.00)
- Update CHANGELOG.md with all changes
- Follow the version hierarchy: dev → rc → version → main
- Never skip stages in the release process

## Useful Resources

- [Joomla Documentation](https://docs.joomla.org/)
- [PSR-12 Coding Standard](https://www.php-fig.org/psr/psr-12/)
- [Semantic Versioning](https://semver.org/)
- [Conventional Commits](https://www.conventionalcommits.org/)

## Quick Reference Card

```bash
# Setup
make dev-setup              # Initial setup

# Development
make validate-required      # Quick validation
make quality               # Code quality
make test                  # Run tests

# Building
make package               # Create ZIP

# Maintenance
make clean                 # Clean generated files
make fix-permissions       # Fix script permissions

# Help
make help                  # Show all commands
```

---

## Metadata

* Document: docs/QUICK_START.md
* Repository: [https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia](https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia)
* Path: /docs/QUICK_START.md
* Owner: Moko Consulting
* Version: 03.06.03
* Status: Active
* Effective Date: 2026-01-30
* Classification: Public Open Source Documentation

## Revision History

| Date       | Change Summary                                        | Author          |
| ---------- | ----------------------------------------------------- | --------------- |
| 2026-01-30 | Updated metadata to MokoStandards format             | GitHub Copilot  |
| 2025-01-04 | Initial quick start guide created                    | GitHub Copilot  |
