diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 02b4ac7d..b7416858 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,2 +1,3 @@
github: HiEventsDev
buy_me_a_coffee: hi.events
+open_collective: hievents
diff --git a/INSTALL_WITHOUT_DOCKER.md b/INSTALL_WITHOUT_DOCKER.md
new file mode 100644
index 00000000..42bb98d8
--- /dev/null
+++ b/INSTALL_WITHOUT_DOCKER.md
@@ -0,0 +1,223 @@
+# Running Hi.Events Locally Without Docker
+
+This guide provides instructions for setting up Hi.Events locally without using Docker, including the necessary prerequisites,
+setup steps, and configuration details.
+
+**For a faster and more reliable setup, we strongly recommend using the official [Docker setup](https://hi.events/docs/getting-started/quick-start).**
+
+## Prerequisites
+
+1. [Install PHP 8.2 or higher](https://www.php.net/downloads.php)
+2. [Install Composer](https://getcomposer.org/download/)
+3. [Install PostgreSQL](https://www.postgresql.org/download/)
+4. [Install Node.js](https://nodejs.org/en)
+5. [Install Yarn](https://yarnpkg.com/getting-started/install)
+
+### PHP Extensions
+
+Ensure the following PHP extensions are installed: `gd`, `pdo_pgsql`, `sodium`, `curl`, `intl`, `mbstring`, `xml`, `zip`, `bcmath`.
+
+## Setup
+
+First, fork the repository and clone it locally:
+
+```bash
+git clone https://github.com/youraccount/Hi.Events.git
+```
+
+Hi.Events has two main directories: `backend` (Laravel) and `frontend` (React).
+
+### Backend Setup
+
+1. **Create the `.env` file:**
+
+ Navigate to the `backend` directory and copy the example `.env` file:
+
+ ```bash
+ cd backend
+ cp .env.example .env
+ ```
+
+2. **Database Configuration:**
+
+ Update the `.env` file with your database credentials:
+
+ ```bash
+ DB_CONNECTION=pgsql
+ DB_HOST=localhost
+ DB_PORT=5432
+ DB_DATABASE=postgres
+ DB_USERNAME=postgres
+ DB_PASSWORD=postgres
+ ```
+
+ This assume the default PostgreSQL configuration. Update the values as needed.
+
+3. **Mail Server Configuration:**
+
+ Configure Mailtrap for email handling, or use the `log` driver to log emails locally:
+
+ ```bash
+ MAIL_MAILER=smtp
+ MAIL_HOST=smtp.mailtrap.io
+ MAIL_PORT=2525
+ MAIL_USERNAME=your_mailtrap_username
+ MAIL_PASSWORD=your_mailtrap_password
+ MAIL_ENCRYPTION=tls
+ MAIL_FROM_ADDRESS=your_email
+ MAIL_FROM_NAME="${APP_NAME}"
+
+ # Alternatively use just this value to log emails locally:
+ MAIL_MAILER=log
+ ```
+
+4. **URL Configuration:**
+
+ Set the application and frontend URLs in the `.env` file:
+
+ ```bash
+ APP_URL=http://localhost
+ APP_PORT=8000
+ APP_FRONTEND_URL=http://localhost:5678
+ ```
+
+5. **Install Dependencies:**
+
+ Install the backend dependencies:
+
+ ```bash
+ composer install
+ ```
+
+6. **Generate Application Key:**
+
+ Generate the Laravel application key:
+
+ ```bash
+ php artisan key:generate
+ ```
+
+7. **Run Migrations:**
+
+ Run the database migrations:
+
+ ```bash
+ php artisan migrate
+ ```
+
+8. **Configure File Storage:**
+
+ Set the following values in your `.env` file:
+
+ ```bash
+ FILESYSTEM_PUBLIC_DISK=public
+ FILESYSTEM_PRIVATE_DISK=local
+ APP_CDN_URL=http://localhost:8000/storage
+ ```
+
+ Then create a symbolic link for storage:
+
+ ```bash
+ php artisan storage:link
+ ```
+
+9. **Start the Backend Server:**
+
+ Start the Laravel development server:
+
+ ```bash
+ php artisan serve
+ ```
+
+ Visit `http://localhost:8000` to verify the backend is running.
+
+10. **Optional: Configure Stripe (for Payment Integration):**
+
+If you want to test the payment functionality, configure Stripe:
+
+```bash
+STRIPE_PUBLIC_KEY=your_public_key
+STRIPE_SECRET_KEY=your_secret_key
+STRIPE_WEBHOOK_SECRET=your_webhook_secret
+```
+
+### Frontend Setup
+
+#### 1. **Create the `.env` File:**
+
+Navigate to the `frontend` directory and copy the example `.env` file:
+
+ ```bash
+ cd frontend
+ cp .env.example .env
+ ```
+
+#### 2. **Configure Frontend `.env`:**
+
+Update the `.env` file with the following settings:
+
+ ```bash
+ VITE_API_URL_CLIENT=http://localhost:8000
+ VITE_API_URL_SERVER=http://localhost:8000
+ VITE_FRONTEND_URL=http://localhost:5678
+ VITE_STRIPE_PUBLISHABLE_KEY=pk_test_XXXXXXXX
+ ```
+
+#### 3. **Install Dependencies:**
+
+Install the frontend dependencies:
+
+ ```bash
+ yarn install
+ ```
+
+#### 4. **Set Environment Variables:**
+
+Set the environment variables before starting the frontend app.
+
+- **Windows:**
+
+ ```bash
+ $env:VITE_API_URL_CLIENT="http://localhost:8000"
+ $env:VITE_API_URL_SERVER="http://localhost:8000"
+ $env:VITE_FRONTEND_URL="http://localhost:5678"
+ $env:VITE_STRIPE_PUBLISHABLE_KEY="pk_test_XXXXXXXX"
+ ```
+
+- **Linux/Mac:**
+
+ ```bash
+ export VITE_API_URL_CLIENT="http://localhost:8000"
+ export VITE_API_URL_SERVER="http://localhost:8000"
+ export VITE_FRONTEND_URL="http://localhost:5678"
+ export VITE_STRIPE_PUBLISHABLE_KEY="pk_test_XXXXXXXX"
+ ```
+
+#### 5. **Build and Start the Frontend:**
+
+Run the following commands to build and start the frontend application:
+
+ ```bash
+ yarn build
+ yarn start
+ ```
+
+Visit `http://localhost:5678` to view the frontend.
+
+## Troubleshooting
+
+1. **Composer Install Errors:**
+ Ensure the required PHP extensions are installed. Check by running:
+
+ ```bash
+ php -m
+ ```
+
+2. **Database Connection Issues:**
+ Verify the database credentials in the `.env` file and ensure the PostgreSQL service is running.
+
+3. **Mail Server Errors:**
+ Ensure that your mail server credentials (e.g., Mailtrap) are correct or use the `log` driver for local email logging.
+
+4. **Frontend not connecting to the backend:**
+ Ensure the API URLs are set correctly in both the frontend `.env` file and the backend `.env` file. Also, verify that environment variables are properly exported in the terminal.
diff --git a/README.ja.md b/README.ja.md
new file mode 100644
index 00000000..6c701a6d
--- /dev/null
+++ b/README.ja.md
@@ -0,0 +1,126 @@
+
+
+
+Hi.Events
+
+デモイベント 🌟 ウェブサイト 🌎 ドキュメント 📄 インストール ⚙️
+
+
+
+ 簡単にイベントを管理し、オンラインでチケットを販売します。
+
+
+
+
+[![Hi.Events ドキュメント](https://img.shields.io/badge/docs-hi.events-blue)](https://hi.events/docs)
+[![ライセンス: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://github.com/HiEventsDev/hi.events/LICENCE)
+[![GitHub リリース](https://img.shields.io/github/v/release/HiEventsDev/hi.events?include_prereleases)](https://github.com/HiEventsDev/hi.events/releases)
+[![ユニットテストの実行](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 ダウンロード数](https://img.shields.io/docker/pulls/daveearley/hi.events-all-in-one)](https://hub.docker.com/r/daveearley/hi.events-all-in-one)
+
+
+
+
+ 🌟 スターを付けていただけると嬉しいです! 🌟
+
+
+
+
+## 目次
+
+- [紹介](#-紹介)
+- [機能](#-機能)
+- [クイックスタート](#-クイックスタート)
+- [変更履歴](#-変更履歴)
+- [貢献](#-貢献)
+- [FAQ](#-faq)
+
+## 📚 紹介
+
+Hi.Events は、機能豊富な自ホスト型イベント管理およびチケット販売プラットフォームです。会議からクラブナイトまで、Hi.Events はあらゆる規模のイベントの作成、管理、チケット販売を支援するように設計されています。
+
+
+
+## 🌟 機能
+
+Hi.Events は、イベント管理とチケット販売を効率化するための機能が満載です:
+
+- 📊 **イベント分析:** イベントのパフォーマンスとチケット販売に関する深い洞察を得る。
+- 🎟 **埋め込み可能なチケットウィジェット:** チケット販売を簡単に任意のウェブサイトに統合。
+- 🖥 **カスタマイズ可能なイベントホームページ:** 柔軟なデザインオプションで目を引くイベントページを作成。
+- 🔑 **直感的なチェックインツール:** Hi.Events の QR コードチェックインツールで簡単に参加者をチェックイン。
+- 💬 **イベントメッセージングツール:** 重要な更新やリマインダーを参加者に送信。
+- 📝 **カスタム注文フォーム:** チェックアウト時にカスタマイズされた質問で参加者情報を収集。
+- 🎫 **複数のチケットタイプ:** 無料、有料、寄付、または階層型のチケットタイプ。
+- 💸 **多用途なプロモコード:** 高度に多用途な割引コード。先行販売アクセス、複数の割引オプション。
+- 💰 **即時支払い:** シームレスな Stripe 統合で即時支払いを楽しむ。
+- 🧾 **税金と手数料の設定:** チケットごとに税金と手数料を追加。
+- 📦 **データエクスポート:** 参加者と注文データを XLSX または CSV にエクスポート。
+- 💻 **REST API:** カスタム統合のためのフル機能の REST API。
+- 🔍 **SEO ツール:** 各イベントの SEO 設定をカスタマイズ。
+- 🛒 **美しいチェックアウトプロセス:** スムーズで美しいチェックアウト体験を確保。
+- 🔐 **役割ベースのアクセス:** 複数のユーザーロールをサポート。
+- 💻 **オンラインイベントサポート:** オンラインイベントの指示とリンクを提供。
+- ⏪ **全額および部分的な払い戻しサポート:** 全額および部分的な払い戻しを簡単に管理。
+- 📧 **メール通知:** 自動メール通知で参加者を最新情報に保つ。
+- 📱 **モバイル対応:** どのデバイスでもシームレスな体験を楽しむ。
+- 🌐 **多言語サポート:** 複数の言語をサポート。
+- 🎉 **その他多数!**
+
+## 🚀 クイックスタート
+
+詳細なインストール手順については、[ドキュメント](https://hi.events/docs/getting-started) を参照してください。クイックスタートのために、以下の手順に従ってください:
+
+### ワンクリックデプロイ
+
+[![DigitalOcean でデプロイ](https://www.deploytodo.com/do-btn-blue.svg)](https://github.com/HiEventsDev/hi.events-digitalocean)
+
+[![Render でデプロイ](https://render.com/images/deploy-to-render-button.svg)](https://github.com/HiEventsDev/hi.events-render.com)
+
+[![Railway でデプロイ](https://railway.app/button.svg)](https://railway.app/template/8CGKmu?referralCode=KvSr11)
+
+[![Zeabur でデプロイ](https://zeabur.com/button.svg)](https://zeabur.com/templates/8DIRY6)
+
+### 🐳 Docker を使用したクイックスタート
+
+> [!重要]
+> システムに Docker および Docker Compose がインストールされていることを確認してください。インストールされていない場合は、公式 Docker ウェブサイトからダウンロードできます:[Docker](https://www.docker.com/get-started)。
+
+1. **リポジトリをクローン:**
+ ```bash
+ git clone git@github.com:HiEventsDev/hi.events.git
+ ```
+
+2. **Docker ディレクトリに移動:**
+ ```bash
+ cd hi.events/docker/all-in-one
+ ```
+
+3. **Docker コンテナを起動:**
+ ```bash
+ docker compose up -d
+ ```
+4. **アカウントを作成:**
+ ```bash
+ ブラウザを開き、http://localhost:8123/auth/register に移動します。
+ ```
+
+ℹ️ 他のインストール方法や、プロダクションまたはローカル開発環境の設定については、[クイックスタートガイド](https://hi.events/docs/getting-started) を参照してください。
+
+## 📝 変更履歴
+
+継続的な改善と機能追加については、[GitHub リリースページ](https://github.com/HiEventsDev/hi.events/releases) をご覧ください。
+
+## 🤝 貢献
+
+貢献、提案、バグ報告を歓迎します!新しい機能や拡張を提案する前に、ディスカッションのために issue を開いてください。
+
+## ❓ FAQ
+
+質問がありますか?[ドキュメント](https://hi.events/docs) に答えがあります。探しているものが見つからない場合は、[hello@hi.events](mailto:hello@hi.events) までお気軽にお問い合わせください。
+
+## 📜 ライセンス
+
+Hi.Events は [AGPL-3.0](https://github.com/HiEventsDev/hi.events/blob/main/LICENCE) ライセンスの条件に基づいてライセンスされています。
+
+商用ライセンスオプションを含むライセンス情報の詳細については、[こちら](https://hi.events/licensing) のライセンスページをご覧ください。
diff --git a/README.md b/README.md
index ddc1d273..abf80e34 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,7 @@
Hi.Events
+
Demo Event 🌟 • Website 🌎 • Documentation 📄 • Installation ⚙️
@@ -18,6 +19,9 @@
+[![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)
+
[![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/LICENCE)
[![GitHub Release](https://img.shields.io/github/v/release/HiEventsDev/hi.events?include_prereleases)](https://github.com/HiEventsDev/hi.events/releases)
@@ -26,13 +30,18 @@
+
+
+
+
Deutsch |
Português |
Français |
Español |
-中文 (Zhōngwén)
+中文 (Zhōngwén) |
+日本語
@@ -110,11 +119,26 @@ a quick start, follow these steps:
cd hi.events/docker/all-in-one
```
-3. **Start the Docker Containers:**
+3. **Generate the `APP_KEY` and `JWT_SECRET`**
+
+ Generate the keys using the following commands:
+
+ **Unix/Linux/MacOS:**
+ ```bash
+ 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.
+
+ Add the generated values to the `.env` file located in `./docker/all-in-one/.env`:
+
+4. **Start the Docker Containers:**
```bash
docker compose up -d
```
-4. **Create an account:**
+5. **Create an account:**
```bash
Open your browser and navigate to http://localhost:8123/auth/register.
```
diff --git a/backend/app/DomainObjects/EventDomainObject.php b/backend/app/DomainObjects/EventDomainObject.php
index e55caf5b..1a28d3de 100644
--- a/backend/app/DomainObjects/EventDomainObject.php
+++ b/backend/app/DomainObjects/EventDomainObject.php
@@ -30,6 +30,8 @@ class EventDomainObject extends Generated\EventDomainObjectAbstract implements I
private ?OrganizerDomainObject $organizer = null;
+ private ?EventStatisticDomainObject $eventStatistics = null;
+
public static function getAllowedFilterFields(): array
{
return [
@@ -246,4 +248,15 @@ public function setCapacityAssignments(?Collection $capacityAssignments): self
return $this;
}
+
+ public function getEventStatistics(): ?EventStatisticDomainObject
+ {
+ return $this->eventStatistics;
+ }
+
+ public function setEventStatistics(?EventStatisticDomainObject $eventStatistics): self
+ {
+ $this->eventStatistics = $eventStatistics;
+ return $this;
+ }
}
diff --git a/backend/app/Models/Event.php b/backend/app/Models/Event.php
index 75fc847e..d7be8789 100644
--- a/backend/app/Models/Event.php
+++ b/backend/app/Models/Event.php
@@ -54,6 +54,11 @@ public function capacity_assignments(): HasMany
return $this->hasMany(CapacityAssignment::class);
}
+ public function event_statistics(): HasOne
+ {
+ return $this->hasOne(EventStatistic::class);
+ }
+
public static function boot()
{
parent::boot();
diff --git a/backend/app/Resources/Event/EventResource.php b/backend/app/Resources/Event/EventResource.php
index 2d01e9a4..7fcb425f 100644
--- a/backend/app/Resources/Event/EventResource.php
+++ b/backend/app/Resources/Event/EventResource.php
@@ -39,6 +39,10 @@ public function toArray(Request $request): array
!is_null($this->getOrganizer()),
fn() => new OrganizerResource($this->getOrganizer())
),
+ 'statistics' => $this->when(
+ !is_null($this->getEventStatistics()),
+ fn() => new EventStatisticsResource($this->getEventStatistics())
+ ),
];
}
}
diff --git a/backend/app/Resources/Event/EventStatisticsResource.php b/backend/app/Resources/Event/EventStatisticsResource.php
new file mode 100644
index 00000000..91bd7d37
--- /dev/null
+++ b/backend/app/Resources/Event/EventStatisticsResource.php
@@ -0,0 +1,27 @@
+ $this->getUniqueViews(),
+ 'total_views' => $this->getTotalViews(),
+ 'sales_total_gross' => $this->getSalesTotalGross(),
+ 'total_tax' => $this->getTotalTax(),
+ 'sales_total_before_additions' => $this->getSalesTotalBeforeAdditions(),
+ 'total_fee' => $this->getTotalFee(),
+ 'tickets_sold' => $this->getTicketsSold(),
+ 'total_refunded' => $this->getTotalRefunded(),
+ ];
+ }
+}
diff --git a/backend/app/Services/Handlers/Event/GetEventsHandler.php b/backend/app/Services/Handlers/Event/GetEventsHandler.php
index 3fd0956f..8ba27d82 100644
--- a/backend/app/Services/Handlers/Event/GetEventsHandler.php
+++ b/backend/app/Services/Handlers/Event/GetEventsHandler.php
@@ -3,6 +3,7 @@
namespace HiEvents\Services\Handlers\Event;
use HiEvents\DomainObjects\EventSettingDomainObject;
+use HiEvents\DomainObjects\EventStatisticDomainObject;
use HiEvents\DomainObjects\ImageDomainObject;
use HiEvents\DomainObjects\OrganizerDomainObject;
use HiEvents\Repository\Eloquent\Value\Relationship;
@@ -21,6 +22,7 @@ public function handle(GetEventsDTO $dto): LengthAwarePaginator
return $this->eventRepository
->loadRelation(new Relationship(ImageDomainObject::class))
->loadRelation(new Relationship(EventSettingDomainObject::class))
+ ->loadRelation(new Relationship(EventStatisticDomainObject::class))
->loadRelation(new Relationship(
domainObject: OrganizerDomainObject::class,
name: 'organizer',
diff --git a/backend/composer.json b/backend/composer.json
index c2f373bf..64a37c8c 100644
--- a/backend/composer.json
+++ b/backend/composer.json
@@ -3,7 +3,7 @@
"type": "project",
"description": "hi.events - Ticket selling and event management.",
"keywords": ["ticketing", "events"],
- "license": "Elastic License",
+ "license": "AGPL-3.0",
"version": "0.0.1",
"require": {
"php": "^8.2",
diff --git a/docker/all-in-one/.env b/docker/all-in-one/.env
new file mode 100644
index 00000000..1a6c74a3
--- /dev/null
+++ b/docker/all-in-one/.env
@@ -0,0 +1,2 @@
+APP_KEY=
+JWT_SECRET=
diff --git a/docker/all-in-one/README.md b/docker/all-in-one/README.md
index 9c029365..08cff3e1 100644
--- a/docker/all-in-one/README.md
+++ b/docker/all-in-one/README.md
@@ -1,6 +1,58 @@
-# Hi.Events all-in-one Docker image
+# Hi.Events All-in-One Docker Image
-The all-on-one Docker image is a single container that runs both the frontend and backend services of Hi.Events.
+The all-in-one Docker image runs both the frontend and backend services in a single container. While it can be used in production, the recommended approach for production is to run the frontend and backend separately for better scalability and security.
-While it can be used in production, the recommended way to run Hi.Events in production is to run the frontend and backend
-services separately.
\ No newline at end of file
+## Quick Start with Docker
+
+### Step 1: Clone the Repository
+
+```bash
+git clone git@github.com:HiEventsDev/hi.events.git
+cd hi.events/docker/all-in-one
+```
+
+### Step 2: Generate the `APP_KEY` and `JWT_SECRET`
+
+Generate the keys using the following commands:
+
+#### Unix/Linux/MacOS/WSL
+```bash
+echo base64:$(openssl rand -base64 32) # For APP_KEY
+openssl rand -base64 32 # For JWT_SECRET
+```
+
+#### Windows (Command Prompt):
+```cmd
+for /f "tokens=*" %i in ('openssl rand -base64 32') do @echo APP_KEY=base64:%i
+for /f "tokens=*" %i in ('openssl rand -base64 32') do @echo JWT_SECRET=%i
+```
+
+#### Windows (PowerShell):
+```powershell
+"base64:$([Convert]::ToBase64String([System.Security.Cryptography.RandomNumberGenerator]::GetBytes(32)))" # For APP_KEY
+[Convert]::ToBase64String([System.Security.Cryptography.RandomNumberGenerator]::GetBytes(32)) # For JWT_SECRET
+```
+
+### Step 3: Update the `.env` File
+
+Update the `.env` file located in `./docker/all-in-one/.env` with the generated `APP_KEY` and `JWT_SECRET`:
+
+```plaintext
+APP_KEY=your_generated_app_key
+JWT_SECRET=your_generated_jwt_secret
+```
+
+### Step 4: Start the Docker Containers
+
+```bash
+docker-compose up -d
+```
+
+### Step 5: Create an Account
+
+Visit [http://localhost:8123/auth/register](http://localhost:8123/auth/register) to create an account.
+
+---
+
+**Production Note:**
+For production, ensure you generate unique `APP_KEY` and `JWT_SECRET` for each environment and never hardcode sensitive values.
diff --git a/docker/all-in-one/docker-compose.yml b/docker/all-in-one/docker-compose.yml
index a2ffdae9..a33660b2 100644
--- a/docker/all-in-one/docker-compose.yml
+++ b/docker/all-in-one/docker-compose.yml
@@ -14,8 +14,8 @@ services:
- LOG_CHANNEL=stderr
- QUEUE_CONNECTION=sync
- MAIL_MAILER=array
- - APP_KEY=base64:ZIkx+O/ILP80gxHRLH+Yv7qKv94oHUgFdPn4OdD/hO8=
- - JWT_SECRET=TJMzToO9cKLFpF5v4ADvNbTnvuWfgYNj
+ - APP_KEY=${APP_KEY}
+ - JWT_SECRET=${JWT_SECRET}
- FILESYSTEM_PUBLIC_DISK=public
- FILESYSTEM_PRIVATE_DISK=local
- APP_CDN_URL=http://localhost:8123/storage
diff --git a/frontend/public/images/event-thumbnails/event-thumb-1.jpg b/frontend/public/images/event-thumbnails/event-thumb-1.jpg
new file mode 100644
index 00000000..d2c29a2c
Binary files /dev/null and b/frontend/public/images/event-thumbnails/event-thumb-1.jpg differ
diff --git a/frontend/public/images/event-thumbnails/event-thumb-10.jpg b/frontend/public/images/event-thumbnails/event-thumb-10.jpg
new file mode 100644
index 00000000..704956f4
Binary files /dev/null and b/frontend/public/images/event-thumbnails/event-thumb-10.jpg differ
diff --git a/frontend/public/images/event-thumbnails/event-thumb-2.jpg b/frontend/public/images/event-thumbnails/event-thumb-2.jpg
new file mode 100644
index 00000000..061b0d6a
Binary files /dev/null and b/frontend/public/images/event-thumbnails/event-thumb-2.jpg differ
diff --git a/frontend/public/images/event-thumbnails/event-thumb-3.jpg b/frontend/public/images/event-thumbnails/event-thumb-3.jpg
new file mode 100644
index 00000000..95670923
Binary files /dev/null and b/frontend/public/images/event-thumbnails/event-thumb-3.jpg differ
diff --git a/frontend/public/images/event-thumbnails/event-thumb-4.jpg b/frontend/public/images/event-thumbnails/event-thumb-4.jpg
new file mode 100644
index 00000000..4bb3bcf0
Binary files /dev/null and b/frontend/public/images/event-thumbnails/event-thumb-4.jpg differ
diff --git a/frontend/public/images/event-thumbnails/event-thumb-5.jpg b/frontend/public/images/event-thumbnails/event-thumb-5.jpg
new file mode 100644
index 00000000..d37eaff5
Binary files /dev/null and b/frontend/public/images/event-thumbnails/event-thumb-5.jpg differ
diff --git a/frontend/public/images/event-thumbnails/event-thumb-6.jpg b/frontend/public/images/event-thumbnails/event-thumb-6.jpg
new file mode 100644
index 00000000..91111405
Binary files /dev/null and b/frontend/public/images/event-thumbnails/event-thumb-6.jpg differ
diff --git a/frontend/public/images/event-thumbnails/event-thumb-7.jpg b/frontend/public/images/event-thumbnails/event-thumb-7.jpg
new file mode 100644
index 00000000..6ebbd629
Binary files /dev/null and b/frontend/public/images/event-thumbnails/event-thumb-7.jpg differ
diff --git a/frontend/public/images/event-thumbnails/event-thumb-8.jpg b/frontend/public/images/event-thumbnails/event-thumb-8.jpg
new file mode 100644
index 00000000..52005b08
Binary files /dev/null and b/frontend/public/images/event-thumbnails/event-thumb-8.jpg differ
diff --git a/frontend/public/images/event-thumbnails/event-thumb-9.jpg b/frontend/public/images/event-thumbnails/event-thumb-9.jpg
new file mode 100644
index 00000000..4945aeb7
Binary files /dev/null and b/frontend/public/images/event-thumbnails/event-thumb-9.jpg differ
diff --git a/frontend/src/components/common/ActionMenu/index.tsx b/frontend/src/components/common/ActionMenu/index.tsx
index 80522702..3cbfd9a2 100644
--- a/frontend/src/components/common/ActionMenu/index.tsx
+++ b/frontend/src/components/common/ActionMenu/index.tsx
@@ -21,17 +21,23 @@ interface ActionMenuProps {
target?: React.ReactNode;
}
+const DefaultTarget = () => (
+
+);
+
export const ActionMenu: React.FC = ({
itemsGroups,
- target =
+ target =
}) => {
return (