Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

main <- develop #461

Merged
merged 7 commits into from
Mar 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 68 additions & 108 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,39 @@
<div align="center">
🌟 A star would be much appreciated! 🌟
</div>
<div align="center">

<p align="center">
<img src="https://hievents-public.s3.us-west-1.amazonaws.com/website/hi-events-rainbow.png?v=1" alt="Hi.Events Logo" width="200px">
</p>
💖 **Found Hi.Events helpful?**
⭐ Please consider giving us a star to support the project! ⭐

<h3 align="center">Hi.Events</h3>
</div>

<p align="center">
<a href="https://app.hi.events/event/2/hievents-conference-2030?utm_source=gh-readme&utm_content=demo-link">Demo Event 🌟</a> • <a href="https://hi.events?utm_source=gh-readme&utm_content=website-link">Website 🌎</a> • <a href="https://hi.events/docs?utm_source=gh-readme&utm_content=documentation-link">Documentation 📄</a> • <a href="https://hi.events/docs/getting-started?utm_source=gh-readme&utm_content=installation=link">Installation ⚙️</a>
<p>
<img src="https://hievents-public.s3.us-west-1.amazonaws.com/website/hi-events-rainbow.png?v=1" alt="Hi.Events Logo" width="200px">
</p>

<h3 align="center">
Open-source event management and ticketing platform.
</h3>

<div align="center">
<h1>Hi.Events</h1>
<h3>Open-source event management and ticketing platform to sell tickets online for events of all sizes</h3>

[![Share on AddToAny](https://img.shields.io/badge/Share%20Hi.Events-blue)](https://www.addtoany.com/share?linkurl=https://github.com/HiEventsDev/hi.events)
[![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/HiEventsTickets)](https://x.com/HiEventsTickets)
<br/>
[![Hi.Events docs](https://img.shields.io/badge/docs-hi.events-blue)](https://hi.events/docs)
[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://github.com/HiEventsDev/Hi.Events/blob/develop/LICENCE)
[![GitHub Release](https://img.shields.io/github/v/release/HiEventsDev/hi.events?include_prereleases)](https://github.com/HiEventsDev/hi.events/releases)
[![Run Unit Tests](https://github.com/HiEventsDev/hi.events/actions/workflows/unit-tests.yml/badge.svg?event=push)](https://github.com/HiEventsDev/hi.events/actions/workflows/unit-tests.yml)
[![Docker Pulls](https://img.shields.io/docker/pulls/daveearley/hi.events-all-in-one)](https://hub.docker.com/r/daveearley/hi.events-all-in-one)

</div>
<p>
<a href="https://app.hi.events/auth/register?utm_source=gh-readme&utm_content=try-cloud-link">Try Cloud ☁️</a> •
<a href="https://app.hi.events/event/2/hievents-conference-2030?utm_source=gh-readme&utm_content=demo-link">Demo Event 🌟</a> •
<a href="https://hi.events?utm_source=gh-readme&utm_content=website-link">Website 🌎</a> •
<a href="https://hi.events/docs?utm_source=gh-readme&utm_content=documentation-link">Documentation 📄</a> •
<a href="https://hi.events/docs/getting-started?utm_source=gh-readme&utm_content=installation=link">Installation ⚙️</a>
</p>

<div align="center">
<a href="https://trendshift.io/repositories/10563" target="_blank"><img src="https://trendshift.io/api/badge/repositories/10563" alt="HiEventsDev%2Fhi.events | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
<a href="https://trendshift.io/repositories/10563" target="_blank"><img src="https://trendshift.io/api/badge/repositories/10563" alt="HiEventsDev%2Fhi.events | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
</div>

<hr/>
<p align="center" style="text-align: center;">
<p align="center">
<a href="README.de.md">Deutsch</a> |
<a href="README.pt.md">Português</a> |
<a href="README.fr.md">Français</a> |
Expand All @@ -44,85 +43,58 @@
</p>
<hr/>

## Table of Contents

- [Introduction](#-introduction)
- [Features](#-features)
- [Getting Started](#-getting-started)
- [Change Log](#-change-log)
- [Contributing](#-contributing)
- [FAQ](#-faq)

## 📚 Introduction

<a href="https://hi.events">Hi.Events</a> is a feature-rich, self-hosted event management and ticketing platform. From conferences to club nights,
Hi.Events is designed to help you create, manage, and sell tickets for events of all sizes.
<a href="https://hi.events">Hi.Events</a> is a feature-rich, self-hosted event management and ticketing platform that helps you sell tickets online for all types of events. From conferences and workshops to club nights and concerts, Hi.Events provides everything you need to create, manage, and monetize your events with ease.

<img alt="Hi.Events self-hosted ticket selling dashboard" src="https://hievents-public.s3.us-west-1.amazonaws.com/website/github-readme-screenshot.png"/>
<div align="center">
<caption>Generated using <a href="https://screenshot.rocks?utm_source=hi.events-readme">Screenshot Rocks</a></caption>
</div>

## 🌟 Features

<a href="https://hi.events">Hi.Events</a> is packed with features to streamline your event management and ticketing:

### 🎟 Ticketing & Product Sales
- **Multiple Ticket Types:** Free, Paid, Donation, and Tiered tickets.
- **Capacity Management:** Set event-wide or ticket-specific limits.
- **Capacity Assignments:** Manage shared capacity across multiple ticket types.
- **Promo Codes:** Discount codes for pre-sale access and special offers.
- **Product Sales:** Sell event-related products (e.g., t-shirts, add-ons).
- **Taxes & Fees:** Apply custom taxes and fees per product or order.

### 🏆 Event Management & Customization
- **Event Dashboard:** Real-time revenue, ticket sales, and attendee analytics.
- **Homepage Designer:** Customize event pages with a live preview editor.
- **Embeddable Ticket Widget:** Add a seamless ticketing experience to your website.
- **SEO Tools:** Customize event metadata for better search visibility.
- **Product Categories:** Organize products and tickets with category management.
- **Offline Event Support:** Provide instructions for physical events.

### 📧 Attendee & Order Management
- **Custom Checkout Forms:** Collect attendee details with tailored questions.
- **Attendee Management:** Search, edit, cancel, and message attendees.
- **Order Management:** Refund, cancel, and resend order details easily.
- **Bulk Messaging:** Email or message specific ticket holders.
- **Data Exports:** Export attendees and orders to CSV/XLSX.

### 📱 Mobile-Friendly & Check-In Tools
- **QR Code Check-In:** Web-based and mobile-friendly check-in tool.
- **Check-In Lists:** Generate and share access-controlled check-in lists.
- **Multi-User Access:** Role-based access control for event staff.

### 🔧 Integrations & Automation
- **Webhooks Support:** Automate tasks with Zapier, IFTTT, Make, or CRM integrations.
- **Stripe Connect Integration:** Organizers get instant payouts.

### 📊 Advanced Features
- **Multi-Language Support:** English, Deutsch, Español, Português, Français, 中文 (Zhōngwén), and more.
- **Partial & Full Refunds:** Manage refunds with detailed order tracking.
- **Role-Based Access Control:** Multiple user roles with permission management.
- **REST API:** Full API access for custom integrations.
- **Invoicing System:** Generate and send invoices with tax details, payment terms, and due dates.
- **Offline Payment Support:** Enable bank transfers, cash payments, or custom payment methods.
- **Event Archive:** Archive past events to keep the dashboard organized.
- **Advanced Ticket Locking:** Lock tickets behind promo codes or access restrictions.
- **Advanced Reporting:** Daily sales, tax breakdowns, product sales, and promo code usage reports.

## 🚀 Getting Started

For detailed installation instructions, please refer to our [documentation](https://hi.events/docs/getting-started). For
a quick start, follow these steps:
## ⚡ Quick Deploy

### One-Click Deployments
Get started in minutes with our one-click deployment options:

[![Deploy on DigitalOcean](https://www.deploytodo.com/do-btn-blue.svg)](https://github.com/HiEventsDev/hi.events-digitalocean)

[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://github.com/HiEventsDev/hi.events-render.com)

[![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/8CGKmu?referralCode=KvSr11)

[![Deploy on Zeabur](https://zeabur.com/button.svg)](https://zeabur.com/templates/8DIRY6)

## 🌟 Key Features

<a href="https://hi.events">Hi.Events</a> offers comprehensive tools to streamline your event management:

### 🎟 Ticketing & Sales
- **Multiple Ticket Types:** Create free, paid, donation-based, and tiered tickets
- **Capacity Management:** Set limits per event or ticket type
- **Promo Codes & Discounts:** Drive early sales with special offers
- **Product Upsells:** Sell merchandise and add-ons alongside tickets
- **Custom Pricing:** Apply taxes and fees per product or entire order

### 🏆 Event Management
- **Real-time Dashboard:** Track sales, revenue, and attendee metrics
- **Visual Page Editor:** Design beautiful event pages with live preview
- **Website Integration:** Embed ticketing widgets on your existing site
- **SEO Optimization:** Customize metadata for better search visibility
- **Offline Event Support:** Provide location details and instructions

### 📱 Attendee Experience
- **Custom Registration Forms:** Collect exactly the information you need
- **QR Code Check-In:** Fast, mobile-friendly entry verification
- **Multi-language Support:** Reach global audiences with localized interfaces
- **Bulk Communication:** Send targeted messages to specific ticket holders
- **Refund Management:** Process full or partial refunds when needed

### 🔧 For Organizers
- **Team Collaboration:** Role-based access for staff members
- **Webhook Integration:** Connect with Zapier, IFTTT, Make, or your CRM
- **Stripe Connect:** Receive instant payouts for ticket sales
- **Comprehensive API:** Build custom integrations with full API access
- **Advanced Reporting:** Generate sales, tax, and usage reports

## 🚀 Getting Started

### 🐳 Quick Start with Docker

> [!IMPORTANT]
Expand All @@ -148,7 +120,7 @@ a quick start, follow these steps:
echo base64:$(openssl rand -base64 32) # For APP_KEY
openssl rand -base64 32 # For JWT_SECRET
```

**Windows:**
Check the instructions in *./docker/all-in-one/README.md* for generating the keys on Windows.

Expand All @@ -159,48 +131,36 @@ a quick start, follow these steps:
docker compose up -d
```
5. **Create an account:**
```bash
Open your browser and navigate to http://localhost:8123/auth/register.
```
Open your browser and navigate to http://localhost:8123/auth/register
```

ℹ️ Please refer to the [getting started guide](https://hi.events/docs/getting-started) for other installation methods, and
for setting up a production or local development environment.
ℹ️ For detailed setup instructions including production deployment, please refer to our [getting started guide](https://hi.events/docs/getting-started).

## 💜 Sponsors
<a href="https://stinkingbadges.app/?utm_source=hi.events-readme">
Stinking Badges
</a>

### Making a Donation
### Support the Project

If you find Hi.Events useful, it would be massively appreciated if you made a small donation to help support the project.
If you find Hi.Events valuable for your organization, please consider supporting ongoing development:

We'll use your donation to fund ongoing development and maintenance of Hi.Events.
<a href="https://www.buymeacoffee.com/hi.events" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;"></a>

<a href="https://www.buymeacoffee.com/hi.events" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>
<br/>
or
<a href="https://github.com/sponsors/HiEventsDev" target="_blank"> Sponsor on GitHub</a>
or
<a href="https://opencollective.com/hievents" target="_blank"> Sponsor on Open Collective</a>
Or support us on: <a href="https://github.com/sponsors/HiEventsDev" target="_blank">GitHub Sponsors</a> | <a href="https://opencollective.com/hievents" target="_blank">Open Collective</a>

## 📝 Change Log

Stay updated with our ongoing improvements and feature additions at
our [GitHub releases page](https://github.com/HiEventsDev/hi.events/releases).
Stay updated with our latest features and improvements on our [GitHub releases page](https://github.com/HiEventsDev/hi.events/releases).

## 🤝 Contributing

We welcome contributions, suggestions, and bug reports! Please see our [contributing guidelines](CONTRIBUTING.md) for more
information.
We welcome contributions from the community! Please see our [contributing guidelines](CONTRIBUTING.md) for details on how to get involved.

## ❓ FAQ

Have questions? Our [Docs](https://hi.events/docs) have answers. If you can't find what you're looking for, feel free to
reach out to us at [[email protected]](mailto:[email protected]).
Have questions? Our [documentation](https://hi.events/docs?utm_source=gh-readme&utm_content=faq-docs-link) has answers. For additional support, contact us at [[email protected]](mailto:[email protected]).

## 📜 License

Hi.Events is licensed under the terms of the [AGPL-3.0](https://github.com/HiEventsDev/hi.events/blob/main/LICENCE) license.
Hi.Events is licensed under the [AGPL-3.0](https://github.com/HiEventsDev/hi.events/blob/main/LICENCE) license.

For more licensing information, including commercial licencing options, please visit our licensing page [here](https://hi.events/licensing).
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
<?php

namespace HiEvents\DomainObjects\Generated;

/**
* THIS FILE IS AUTOGENERATED - DO NOT EDIT IT DIRECTLY.
* @package HiEvents\DomainObjects\Generated
*/
abstract class OutgoingMessageDomainObjectAbstract extends \HiEvents\DomainObjects\AbstractDomainObject
{
final public const SINGULAR_NAME = 'outgoing_message';
final public const PLURAL_NAME = 'outgoing_messages';
final public const ID = 'id';
final public const EVENT_ID = 'event_id';
final public const MESSAGE_ID = 'message_id';
final public const SUBJECT = 'subject';
final public const RECIPIENT = 'recipient';
final public const STATUS = 'status';
final public const CREATED_AT = 'created_at';
final public const UPDATED_AT = 'updated_at';
final public const DELETED_AT = 'deleted_at';

protected int $id;
protected int $event_id;
protected int $message_id;
protected string $subject;
protected string $recipient;
protected string $status;
protected ?string $created_at = null;
protected ?string $updated_at = null;
protected ?string $deleted_at = null;

public function toArray(): array
{
return [
'id' => $this->id ?? null,
'event_id' => $this->event_id ?? null,
'message_id' => $this->message_id ?? null,
'subject' => $this->subject ?? null,
'recipient' => $this->recipient ?? null,
'status' => $this->status ?? null,
'created_at' => $this->created_at ?? null,
'updated_at' => $this->updated_at ?? null,
'deleted_at' => $this->deleted_at ?? null,
];
}

public function setId(int $id): self
{
$this->id = $id;
return $this;
}

public function getId(): int
{
return $this->id;
}

public function setEventId(int $event_id): self
{
$this->event_id = $event_id;
return $this;
}

public function getEventId(): int
{
return $this->event_id;
}

public function setMessageId(int $message_id): self
{
$this->message_id = $message_id;
return $this;
}

public function getMessageId(): int
{
return $this->message_id;
}

public function setSubject(string $subject): self
{
$this->subject = $subject;
return $this;
}

public function getSubject(): string
{
return $this->subject;
}

public function setRecipient(string $recipient): self
{
$this->recipient = $recipient;
return $this;
}

public function getRecipient(): string
{
return $this->recipient;
}

public function setStatus(string $status): self
{
$this->status = $status;
return $this;
}

public function getStatus(): string
{
return $this->status;
}

public function setCreatedAt(?string $created_at): self
{
$this->created_at = $created_at;
return $this;
}

public function getCreatedAt(): ?string
{
return $this->created_at;
}

public function setUpdatedAt(?string $updated_at): self
{
$this->updated_at = $updated_at;
return $this;
}

public function getUpdatedAt(): ?string
{
return $this->updated_at;
}

public function setDeletedAt(?string $deleted_at): self
{
$this->deleted_at = $deleted_at;
return $this;
}

public function getDeletedAt(): ?string
{
return $this->deleted_at;
}
}
Loading
Loading