# Contributing guide

### 🤝 Contribution Guide

Thank you for your interest in contributing to **DayWright** — we're thrilled to have your support! Whether it’s fixing a typo or building a new feature, every contribution counts.

#### 🧠 General Guidelines

* **Be patient**: We aim to review community pull requests as soon as possible, but please understand that it may take a few days (or longer) depending on the complexity.
* **No contribution is too small**: Typos, documentation improvements, small bug fixes — all are welcome and valuable.
* **Keep things simple**: DayWright aims to stay lightweight and maintainable. Avoid over-complicating code or introducing unnecessary dependencies.
* **Done is better than perfect**: We prefer shipping small, useful features quickly over polishing indefinitely.

***

#### 🧱 Project Philosophy

DayWright is built using **Laravel** on the backend and **Vue.js** on the frontend. Our goal is to keep the codebase clean, modular, and easy to maintain.

* Avoid adding new technologies unless necessary.
* Stick to the conventions and tools already in use.
* If your PR adds significant complexity or introduces a third-party service (e.g., Redis), open an issue first to discuss it.

***

#### 🌿 Git Workflow

We follow **GitHub Flow**. Please:

1. Fork the repository.
2. Create a new feature branch.
3. Make your changes.
4. Submit a pull request (PR) with a clear title and description.

***

#### 🔤 Commit Message Convention

We use [conventional commit message](https://conventionalcommits.org/) for clear, consistent commit history.

**Examples:**

✅ `feat(tasks): add ability to assign task to user`\
✅ `fix(auth): handle 2FA fallback correctly`

**Supported types:**

* `feat`: New feature
* `fix`: Bug fix
* `docs`: Documentation changes
* `style`: Formatting only (no code change)
* `refactor`: Code improvement (no bug or feature)
* `test`: Adding or fixing tests
* `chore`: Other changes (e.g. build or tooling)
* `ci`: Continuous integration updates

***

#### 🧪 Backend Code Standards

* Keep services and controllers small and single-purpose.
* Prefer **service classes** over bloated controllers.
* Follow [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php) where possible (e.g., one level of indentation per method).
* Write unit tests for new backend logic.
* Keep each PHP class under 100 lines where feasible.

***

#### 🎨 Frontend Contribution

If your change affects the UI, please:

* Open an issue first with mockups or a description.
* Stick to the current **design language** (spacing, typography, modals, colors).
* Use **Vue.js** with clean, reactive patterns.
* Avoid custom CSS unless absolutely necessary.
* Don't introduce jQuery or extra frontend libraries unless discussed.

***

#### ⚙️ Tech Stack Reminders

* We use **Vite** for frontend tooling.
* Vue components communicate with Laravel via **API endpoints**.
* Stick to **Bootstrap** for styling wherever possible.

***

### 🧩 Summary

We love seeing contributions of all kinds. DayWright is a community-driven effort, and your help makes it better for everyone. Keep it clean, simple, and collaborative — and let's build something great together.

#### &#x20;<a href="#localization" id="localization"></a>
