Expert guidance for developing Zammad, an open-source helpdesk platform with Rails backend and Vue/legacy CoffeeScript frontends.
Guide AI agents to effectively contribute to Zammad, an open-source helpdesk/customer support platform built with Ruby on Rails and modern Vue frontends.
Zammad is a web-based open-source helpdesk/customer support system with:
1. **desktop-app** (legacy, `app/assets/`): CoffeeScript with Spine.js MVC framework, REST API
2. **desktop-view** (`app/frontend/apps/desktop`): Vue 3 + TypeScript + GraphQL
3. **mobile** (`app/frontend/apps/mobile`): Vue 3 + TypeScript + GraphQL
**Legacy (desktop-app):**
**Modern (desktop-view/mobile):**
**Backend:**
```
app/
├── assets/ # Legacy desktop-app (CoffeeScript/Sprockets)
├── frontend/ # Vue + TypeScript frontends
│ ├── apps/
│ │ ├── desktop/ # New desktop Vue app
│ │ └── mobile/ # Mobile Vue app
│ ├── shared/ # Cross-app components, utils, stores, GraphQL, i18n
│ └── tests/ # Vitest setup and helpers
├── controllers/ # Rails controllers
├── models/ # Rails models
├── views/ # Rails views
├── graphql/ # GraphQL API definitions and resolvers
├── services/ # Business logic modules
├── jobs/ # Background jobs
├── mailers/ # Email logic
├── channels/ # ActionCable channels
└── policies/ # Authorization policies
lib/ # Core extensions, integrations, helpers
├── core_ext/ # Ruby/Rails extensions
├── github/ # GitHub integration
├── gitlab/ # GitLab integration
├── knowledge_base/ # Knowledge base features
├── secure_mailing/ # Secure email features
└── [many more] # Helpers, integrations, business logic
doc/developer_manual/ # Official setup and development docs
spec/ # RSpec tests
test/ # QUnit tests (legacy)
config/ # Rails configuration
db/ # Database migrations and seeds
```
Before making changes, check authoritative sources:
**Legacy desktop-app (`app/assets/`):**
**Modern Vue apps (`app/frontend/apps/desktop` or `mobile`):**
**Controllers:** `app/controllers/` for REST or GraphQL endpoints
**Models:** `app/models/` for database logic
**Services:** `app/services/` for business logic
**Jobs:** `app/jobs/` for background tasks
**GraphQL:** `app/graphql/` for schema and resolvers
**Lib:** `lib/` for helpers, integrations, core extensions
**Shared code:** `app/frontend/shared/`
**App-specific code:** `app/frontend/apps/desktop` or `mobile`
**Styling:** Use Tailwind CSS utilities; lint with Stylelint and Prettier
**i18n:** Wrap all user-facing strings for translation (see `eslint.config.ts` rules)
**Testing:**
**Linting:**
**Copyright/i18n:** Follow rules in `eslint.config.ts`
**Testing:** Include tests for all new code
The `lib/` directory contains essential non-Rails-standard modules:
1. **Cross-app imports:** Do NOT import between desktop and mobile apps (use `shared/`)
2. **Legacy over-modification:** Minimize changes to `app/assets/`; prefer Vue apps for new work
3. **Missing i18n:** Always wrap user-facing strings for translation
4. **Ignoring linters:** Run ESLint, Stylelint, Prettier, and RuboCop before committing
5. **Skipping tests:** Always include tests for new features and bug fixes
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/zammad-helpdesk-development-td0cns/raw