> For the complete documentation index, see [llms.txt](https://profresh.gitbook.io/profresh-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://profresh.gitbook.io/profresh-docs/readme.md).

# README

<div align="center"><img src="https://github.com/user-attachments/assets/0c38768b-748c-4630-9f76-8a804019745a" alt="DayWright logo" width="300"></div>

<h2 align="center">A Project Management Application</h2>

[![License](https://img.shields.io/github/license/hamza094/ProFresh)](https://github.com/hamza094/daywright/tree/master/LICENSE/README.md) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=hamza094_ProFresh\&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=hamza094_ProFresh)

### DayWright is an open source single page web application designed to simplify project management.

* [Introduction](#introduction)
  * [Features](#features)
  * [Demo Links](#demo-links)
  * [Who is it for?](#who-is-it-for)
* [Contribute](#contribute)
  * [Contribute as a community](#contribute-as-a-community)
  * [Contribute as a developer](#contribute-as-a-developer)
* [Principles, vision, and goals](#principles-vision-and-goals)
  * [Principles](#principles)
  * [Vision](#vision)
  * [Goals](#goals)
* [Deployment](#deployment)
* [Contact](#contact)
* [Thank you, open source](#thank-you-open-source)
* [License](#license)

### Introduction

DayWright is an open source single page web application built with a Laravel API backend and a Vue.js frontend, designed to simplify project management. It brings project planning, task tracking, and team communication together in one place so you can stay organized, work collaboratively, and keep everything in sync.

Whether you're managing personal projects or leading a team, DayWright offers a clean and intuitive interface to help you stay focused, meet deadlines, and reach your goals more efficiently.

#### Features

* Project-based task management with assignment, due dates, reminders, and progress tracking
* Project stages with built-in activity tracking and historical records
* Centralized project dashboard with analytics and insights
* Team collaboration with member invitations and role management
* Built-in meetings with Zoom video call integration
* Real-time group chat scoped to projects
* Notes and file uploads (documents and images) attached to projects
* Real-time and scheduled notifications (email and SMS)
* API-first architecture (REST endpoints)
* User profiles and subscription management
* Social authentication (Google, Facebook, etc.)
* Two-factor authentication

#### Demo Links

A public demo and walkthrough videos will be added once the core features are stable.

#### Who is it for?

DayWright is designed for anyone who needs a simple, organized way to manage work whether you're working solo or as a part of a team. It helps individuals create tasks, track progress, and stay focused on project stages.

But DayWright really shines in team environments: you can assign tasks, collaborate on projects, track stages, join meetings, share updates, and stay aligned without losing context. If you want a lightweight yet powerful project-tracking tool that keeps everyone on the same page, this project is for you.

### Contribute

Contributions of all kinds are welcome. Whether you’re reporting issues, improving documentation, sharing feedback, or contributing code, every effort helps move DayWright forward. Below are a few ways you can get involved.

#### Contribute as a community

* The simplest way to support DayWright is to share it write about it, mention it on social media, or tell other developers and teams who might benefit from it.
* Engage with the issue tracker by answering questions, offering guidance, or helping others troubleshoot problems. Every contribution helps make the DayWright community stronger and more supportive.

#### Contribute as a developer

* Read our [Contribution Guide](https://profresh.gitbook.io/profresh-docs/developers/contributing-guide).
* Install [the developer version locally ](https://profresh.gitbook.io/profresh-docs/developers/setup-local-development)so you can start contributing.
* Look for [issues labelled ‘Bugs’](https://github.com/hamza094/daywright/issues?q=state%3Aopen%20label%3Abug) if you are looking to have an immediate impact on DayWright.
* Look for [issues labelled ‘Help Wanted’](https://github.com/hamza094/daywright/issues?q=state%3Aopen%20label%3A%22help%20wanted%22). These are issues that you can solve relatively easily.
* Look for [issues labelled ’Good First Issue’](https://github.com/hamza094/daywright/issues?q=state%3Aopen%20label%3A%22good%20first%20issue%22). These issues are for people who want to contribute, but try to work on a small feature first.
* If you are an advanced developer, you can try to tackle [issues labelled ‘Feature Requests’](https://github.com/hamza094/daywright/issues?q=state%3Aopen%20label%3A%22feature%20request%22). These are harder to do and will require a lot of back-and-forth with the repository administrator to make sure we are going to the right direction with the product.

### Principles, Vision, and Goals

This section outlines the core ideas that guide how DayWright is built and how it evolves over time. These principles shape product decisions, the long-term vision defines where the project is heading, and the goals describe what we aim to deliver in practice.

#### Principles

* Simplicity over complexity: features should reduce friction, not add it.
* Transparency by default: activity, progress, and decisions should be visible.
* Open-source mindset: code should be readable, testable, and easy to contribute to.
* Pragmatic design: prefer practical solutions over unnecessary abstraction.

#### Vision

To reduce project complexity by bringing tasks, collaboration, and progress into one clear system.

#### Goals

DayWright is built with a few clear goals in mind:

* **Simple by design**: The entire experience should feel clean, intuitive, and effortless. You shouldn’t need a tutorial to get work done.
* **Open and transparent**: DayWright is open-source because we believe tools should be trustworthy. Anyone can review the code, suggest improvements, or help shape the future of the project.
* **Friendly for contributors**: We aim to keep the codebase straightforward and easy to navigate. This helps new contributors onboard quickly and ensures long-term maintainability.
* **Accessible anywhere**: Whether you're working on a laptop, tablet, or phone, DayWright should feel fast and comfortable to use. Our goal is to support a smooth experience across different environments.

### Configuration

The application uses an environment variable called `ADMIN_EMAILS` to identify administrator accounts.

* Format: a comma-separated list of email addresses. Example: `ADMIN_EMAILS=admin@example.com,security@example.com`
* Recommended place to set it: the project's `.env` file for local development, and `.env.testing` for CI/test runs.
* Prefer this over `config/admin.local.php` unless you need to execute PHP in a local override. If you do use `admin.local.php`, keep it out of version control and only use trusted contents.

This value is read by `config/admin.php` and used by the application to determine which users are considered admins.

### Deployment

#### Requirements

* **PHP 8.2+**
* **MySQL 8.0+** or PostgreSQL 14+
* **Redis** (required for cache, queue locks, scheduler locks, rate limiting, and job overlap prevention)
* **Composer** for dependency management
* **Node.js 18+** and **npm** for frontend assets

#### Environment Configuration

Production deployments should use the database queue driver (default). Do not use `QUEUE_CONNECTION=sync` in production.

```env
QUEUE_CONNECTION=database
CACHE_DRIVER=redis
SESSION_DRIVER=redis
```

See `.env.example` for all required environment variables.

#### Scheduler

The Laravel scheduler must be configured to run every minute via cron:

```bash
* * * * * cd /path/to/daywright && php artisan schedule:run >> /dev/null 2>&1
```

The scheduler handles:

* Scheduled message dispatching
* Failed job pruning
* Other periodic tasks

#### Queue Workers

DayWright uses multiple queues with different priorities. Run the following workers:

```bash
# Critical and default queues (auth emails, notifications, messages)
php artisan queue:work database --queue=critical,default --sleep=3 --tries=3 --timeout=120 --max-time=3600

# Metrics queue (analytics and reporting)
php artisan queue:work database --queue=metrics --sleep=3 --tries=2 --timeout=120 --max-time=3600

# Webhooks queue (Zoom webhook processing)
php artisan queue:work database --queue=webhooks --sleep=3 --tries=3 --timeout=120 --max-time=3600
```

**Important:** The `--timeout` value must be lower than the queue `retry_after` configuration (150 seconds by default) to prevent jobs from being retried while still running.

#### Supervisor Configuration

For production, use Supervisor to keep queue workers running. Example configuration:

```ini
[program:daywright-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/daywright/artisan queue:work database --queue=critical,default --sleep=3 --tries=3 --timeout=120 --max-time=3600
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/log/daywright-worker.log
```

#### Deployment Steps

1. Deploy code to server
2. Run `php artisan migrate --force` to run database migrations
3. Run `php artisan config:cache` to cache configuration
4. Run `php artisan route:cache` to cache routes
5. Run `php artisan queue:restart` to restart queue workers (loads new code)
6. Run `php artisan schedule:interrupt` if needed to stop running scheduler tasks

#### Failed Job Management

Monitor failed jobs regularly:

```bash
# View failed jobs
php artisan queue:failed

# Retry a specific failed job
php artisan queue:retry [id]

# Retry all failed jobs
php artisan queue:retry all

# Flush all failed jobs
php artisan queue:flush
```

Failed jobs are automatically pruned after 7 days by the scheduler.

For detailed deployment instructions, see [docs/DEPLOYMENT.md](/profresh-docs/docs/deployment.md).

### Contact

[Hamza Ikram (hamza094)](https://github.com/hamza094)

### Thank you, open source

DayWright is built on the work of many open-source projects, and we are grateful to the communities behind them. By releasing DayWright as a free and open-source tool, we hope to give back and support others in the same way these projects have supported us.

### License

Copyright © 2020–2026

Licensed under the [AGPL License](https://github.com/hamza094/ProFresh/blob/master/LICENSE).
