Платформа для поиска и управления событиями для разработчиков. Централизованный хаб для хакатонов, митапов и конференций.
- Просмотр событий — каталог событий с детальной информацией
- Создание событий — 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 аккаунт (опционально, для аналитики)
- Клонируйте репозиторий:
git clone https://github.com/yourusername/dev-event-app.git
cd dev-event-app- Установите зависимости:
npm install- Создайте файл
.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 (опционально)- Запустите сервер разработки:
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/ # Изображения
Получить список всех событий.
Ответ:
{
"message": "Successfully fetched events",
"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": {...}
}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- Дата обновления
eventId- ID события (ObjectId)email- Email пользователяcreatedAt- Дата созданияupdatedAt- Дата обновления
- Подключите репозиторий к Vercel
- Добавьте переменные окружения в настройках проекта
- Деплой произойдет автоматически
npm run build
npm startnpm run dev- Запуск сервера разработкиnpm run build- Сборка production версииnpm start- Запуск production сервераnpm run lint- Проверка кода линтером
Вклад в проект приветствуется! Пожалуйста:
- Форкните репозиторий
- Создайте ветку для новой функции (
git checkout -b feature/amazing-feature) - Закоммитьте изменения (
git commit -m 'Add some amazing feature') - Запушьте в ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
Этот проект является личным проектом (private).
Разработано как pet-project для изучения современных веб-технологий.
Примечание: Убедитесь, что все переменные окружения настроены правильно перед запуском приложения.