Skip to content

Event discovery and management platform for developers. A centralized hub for hackathons, meetups, and conferences, featuring a booking system and a modern UI.

Notifications You must be signed in to change notification settings

peeea4/dev-event-app

Repository files navigation

DevEvent App

Платформа для поиска и управления событиями для разработчиков. Централизованный хаб для хакатонов, митапов и конференций.

🚀 Возможности

  • Просмотр событий — каталог событий с детальной информацией
  • Создание событий — API для добавления новых событий с загрузкой изображений
  • Бронирование — система регистрации на события
  • Фильтрация — поиск событий по различным параметрам (дата, режим проведения, аудитория)
  • Современный UI — интерактивный интерфейс с анимациями

🛠 Технологии

  • Frontend: Next.js 16, React 19, TypeScript
  • Styling: Tailwind CSS 4
  • Database: MongoDB с Mongoose
  • Storage: Cloudinary для хранения изображений
  • Analytics: PostHog
  • Fonts: Schibsted Grotesk, Martian Mono

📋 Требования

  • Node.js 18+
  • MongoDB (локально или MongoDB Atlas)
  • Cloudinary аккаунт (для загрузки изображений)
  • PostHog аккаунт (опционально, для аналитики)

🔧 Установка

  1. Клонируйте репозиторий:
git clone https://github.com/yourusername/dev-event-app.git
cd dev-event-app
  1. Установите зависимости:
npm install
  1. Создайте файл .env.local в корне проекта:
MONGODB_URI=your_mongodb_connection_string
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
NEXT_PUBLIC_POSTHOG_KEY=your_posthog_key (опционально)
NEXT_PUBLIC_POSTHOG_HOST=your_posthog_host (опционально)
  1. Запустите сервер разработки:
npm run dev

Откройте http://localhost:3000 в браузере.

📁 Структура проекта

dev-event-app/
├── app/                    # Next.js App Router
│   ├── api/               # API routes
│   │   └── events/        # API для работы с событиями
│   ├── layout.tsx         # Корневой layout
│   └── page.tsx           # Главная страница
├── components/            # React компоненты
│   ├── EventCard.tsx      # Карточка события
│   ├── ExploreBtn.tsx     # Кнопка исследования
│   ├── LightRays.tsx      # Анимация световых лучей
│   └── Navbar.tsx         # Навигационная панель
├── database/              # Модели базы данных
│   ├── event.model.ts     # Модель события
│   ├── booking.model.ts   # Модель бронирования
│   └── index.ts           # Экспорт моделей
├── lib/                   # Утилиты и конфигурация
│   ├── mongodb.ts         # Подключение к MongoDB
│   ├── constants.ts       # Константы приложения
│   └── utils.ts           # Вспомогательные функции
└── public/                # Статические файлы
    ├── icons/             # Иконки
    └── images/            # Изображения

📡 API Endpoints

GET /api/events

Получить список всех событий.

Ответ:

{
  "message": "Successfully fetched events",
  "events": [...]
}

POST /api/events

Создать новое событие.

Тело запроса (FormData):

  • title (string, required) - Название события
  • description (string, required) - Описание
  • overview (string, required) - Краткий обзор
  • image (File, required) - Изображение события
  • venue (string, required) - Место проведения
  • location (string, required) - Локация
  • date (string, required) - Дата
  • time (string, required) - Время
  • mode (string, required) - Режим: "online" | "offline" | "hybrid"
  • audience (string, required) - Целевая аудитория
  • agenda (string[], required) - Программа события
  • organizer (string, required) - Организатор
  • tags (string[], required) - Теги

Ответ:

{
  "message": "Event created successfully",
  "event": {...}
}

🗄 Модели данных

Event

  • title - Название события
  • slug - URL-friendly идентификатор (генерируется автоматически)
  • description - Полное описание
  • overview - Краткий обзор
  • image - URL изображения
  • venue - Место проведения
  • location - Локация
  • date - Дата (ISO формат)
  • time - Время (HH:MM)
  • mode - Режим проведения (online/offline/hybrid)
  • audience - Целевая аудитория
  • agenda - Массив пунктов программы
  • organizer - Организатор
  • tags - Массив тегов
  • createdAt - Дата создания
  • updatedAt - Дата обновления

Booking

  • eventId - ID события (ObjectId)
  • email - Email пользователя
  • createdAt - Дата создания
  • updatedAt - Дата обновления

🚀 Деплой

Vercel (рекомендуется)

  1. Подключите репозиторий к Vercel
  2. Добавьте переменные окружения в настройках проекта
  3. Деплой произойдет автоматически

Другие платформы

npm run build
npm start

📝 Скрипты

  • npm run dev - Запуск сервера разработки
  • npm run build - Сборка production версии
  • npm start - Запуск production сервера
  • npm run lint - Проверка кода линтером

🤝 Вклад

Вклад в проект приветствуется! Пожалуйста:

  1. Форкните репозиторий
  2. Создайте ветку для новой функции (git checkout -b feature/amazing-feature)
  3. Закоммитьте изменения (git commit -m 'Add some amazing feature')
  4. Запушьте в ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request

📄 Лицензия

Этот проект является личным проектом (private).

👤 Автор

Разработано как pet-project для изучения современных веб-технологий.


Примечание: Убедитесь, что все переменные окружения настроены правильно перед запуском приложения.

About

Event discovery and management platform for developers. A centralized hub for hackathons, meetups, and conferences, featuring a booking system and a modern UI.

Topics

Resources

Stars

Watchers

Forks