Данный сайт сделан полностью с помощью ИИ
Platform · 2025

Global Olive Corp. — Инвестиционная платформа для оливковых деревьев

Полнофункциональная e-commerce платформа для инвестирования в оливковые деревья. Пользователи могут покупать деревья, получать сертификаты владения, дарить деревья другим и отслеживать активы. Включает админ-панель для управления инвентарем, заказами и пользователями.

Стадия продуктаMVP
corporateecommerceframerstripeplatforminvestment
Global Olive Corp. — Инвестиционная платформа для оливковых деревьев

Обзор проекта

Полнофункциональная платформа электронной коммерции для инвестиций в оливковые деревья. Пользователи могут покупать деревья, получать свидетельства о собственности, дарить деревья другим и отслеживать активы. Включает в себя панель администратора для управления инвентарем, заказами и пользователями.

  • Маркетинговая целевая страница: https://goc2025.framer.website/
  • Основное приложение: https://olive.yappix.studio/
  • Статус: ✅ Готовность к производству
  • Продолжительность: единый цикл разработки.

Структура проекта: Маркетинговая целевая страница (Framer) + NextJS

  • Маркетинговая целевая страница (фреймер)

  • Основное приложение (Next.js

1. Маркетинговая целевая страница (фреймер)

  • Платформа: Фреймер
  • URL: https://goc2025.framer.website/.
  • Цель: Маркетинговый сайт Global Olive Corporation.
  • Дизайн: индивидуальный адаптивный дизайн.
  • Интеграция: плавное перенаправление в основное приложение.

Особенности:

  • Геройский раздел с ценностным предложением.
  • Инвестиционная информация (деревья, токены, реальные активы)
  • Витрина продукции (оливковое масло премиум-класса)
  • раздел «Как это работает»
  • Раздел часто задаваемых вопросов
  • Призыв к действию, ведущий к основному приложению.
  • Адаптивный дизайн

Интеграция:

  • Целевая страница включает призывы к действию, которые перенаправляют пользователей в основное приложение по адресу https://olive.yappix.studio/ для реальных покупок деревьев и управления учетными записями.

2. Основное приложение (Next.js)

  • Платформа: Next.js 16+
  • URL: https://olive.yappix.studio/
  • Цель: Полнофункциональная платформа электронной коммерции.

Особенности: (см. ниже)

  • Ключевые особенности
  • Функции пользователя
  • Двухэтапная регистрация с подтверждением электронной почты (6-значный код)
  • Древовидный каталог с поиском, фильтрами и интерактивной картой (листовка)
  • Корзина покупок и порядок оформления заказа
  • Интеграция платежей Stripe с Apple Pay и Google Pay
  • Автоматическая аутентификация после покупки
  • Панель пользователя с активами, заказами и профилем.
  • Система подарков — отправляйте деревья другим пользователям с помощью сообщений.
  • Сертификаты в формате PDF — автоматически создаваемые свидетельства о собственности.
  • Уведомления по электронной почте — 5 типов автоматических писем.
  • Двуязычная поддержка — русский и английский (i18n)

Функции администратора

  • Управление пользователями — просмотр, редактирование ролей, удаление пользователей.
  • Управление деревом — создание, редактирование, массовое обновление цен.
  • Импорт CSV — массовый импорт деревьев из Excel/CSV.
  • Мониторинг заказов — просмотр всех заказов и платежей
  • Отслеживание подарков — отслеживайте все транзакции с подарками.
  • Панель статистики — аналитика и метрики
  • Дизайнер сертификатов — визуальный редактор PDF-сертификатов.
  • Настройки полосы — управляйте конфигурациями платежей.

Бэкэнд:

  • API: маршруты API Next.js (RESTful).
  • ОРМ: Призма 6.19.0
  • База данных: PostgreSQL.
  • Платежи: Stripe 19.3.1 (сеансы оформления заказа + веб-перехватчики)
  • Электронная почта: Nodemailer 7.0.10 (SMTP)
  • Генерация PDF: pdf-lib 1.17.1
  • Рендеринг холста: node-canvas 3.2.0
  • Обработка файлов: ExcelJS 4.4.0.

Инфраструктура:

  • Сервер: Сервер Ubuntu
  • Менеджер процессов: PM2 с автоматическим перезапуском
  • Веб-сервер: Nginx (обратный прокси)
  • SSL: давайте зашифруем (HTTPS)
  • Развертывание: на основе Git с автоматическими сценариями.

Путь пользователя

  • Обнаружение – пользователь посещает целевую маркетинговую страницу (https://goc2025.framer.website/).
  • Информация — Пользователь узнает об инвестициях в оливковые деревья, токенизации и продуктах.
  • Конверсия – пользователь нажимает кнопку призыва к действию, чтобы начать инвестировать.
  • Перенаправление — пользователь перенаправляется в основное приложение (https://olive.yappix.studio/).
  • Регистрация — пользователь создает учетную запись, подтвердив адрес электронной почты.
  • Покупка — пользователь просматривает каталог, добавляет деревья в корзину и завершает оформление заказа.
  • Владение — пользователь получает сертификат и может управлять активами на панели управления.
  • Вовлеченность — Пользователь может дарить деревья, просматривать заказы и отслеживать инвестиции.

Технические характеристики

Последовательность перехода от маркетинга к приложению

  • Бесшовная интеграция между целевой страницей Framer и приложением Next.js.
  • Согласованный брендинг на обеих платформах.
  • Четкий призыв к действию, направляющий пользователей к основному приложению.
  • Удобный переход от маркетинга к транзакционному опыту

Система генерации сертификатов

  • Визуальный дизайнер — редактор перетаскивания в админ-панели.
  • Идеальный рендеринг до пикселя — рендеринг Canvas на стороне сервера соответствует предварительному просмотру в Интернете.
  • Динамическое создание PDF — персонализированные сертификаты с данными пользователя.
  • Пакетная регенерация — обновите все сертификаты новым дизайном.

Техническая реализация:

  • Клиентский Canvas API для редактора дизайна.
  • Серверный узел-холст для рендеринга
  • Преобразование PNG в PDF с использованием pdf-lib.
  • Сопоставление системы координат между Canvas и PDF.

Интеграция платежей

  • Stripe Checkout — размещенная страница оплаты
  • Apple Pay и Google Pay — настраивается через домен способа оплаты.
  • Обработка Webhook — идемпотентная обработка событий.
  • Автоматическое создание пользователей — новые учетные записи создаются при первой покупке.
  • Управление сессиями — автоматический вход после оплаты

Функции безопасности:

  • Проверка подписи вебхука
  • Проверки идемпотентности для предотвращения дублирующей обработки.
  • Проверка статуса транзакции

Система подарков

  • Отправляйте подарки — пользователи могут дарить принадлежащие им деревья другим.
  • Уведомления по электронной почте — уведомляются как отправитель, так и получатель
  • Порядок принятия/отклонения — получатель может принять или отклонить подарки.
  • Управление статусами — деревья перехода между ДОСТУПЕН, В собственности, ПОДАРЕН.
  • Безопасность транзакций — транзакции базы данных обеспечивают согласованность данных.

Бизнес-логика:

  • Предотвращает дарение уже одаренных деревьев.
  • Проверяет формат электронной почты получателя.
  • Предотвращает самоодарение
  • Обрабатывает крайние случаи (отказ, отмена)
  • Реализация безопасности

Исправления уязвимостей:

  • Исправлена критическая уязвимость Next.js RCE (обновлено до 16.0.7).
  • Заменен уязвимый пакет xlsx на ExcelJS.
  • Исправлена DoS-уязвимость Nodemailer.
  • Исправлена инъекция команды glob.

Заголовки безопасности:

  • HSTS (строгая транспортная безопасность)
  • XSS-защита
  • Параметры фрейма (защита от кликджекинга)
  • Параметры типа контента
  • Политика рефералов
  • Политика разрешений

Аутентификация:

  • JWT-подобные токены с подписями HMAC.
  • Файлы cookie только для HTTP (защита XSS)
  • Безопасные файлы cookie в производстве (только HTTPS)
  • Срок действия сессии 7 дней.

Ограничение скорости:

  • Пользовательский ограничитель скорости в памяти.
  • Вход: 10 запросов/мин.
  • Регистрация: 10 запросов/мин.
  • Конечные точки API: 100 запросов в минуту.

Защита данных:

  • Хеширование пароля с помощью bcryptjs (10 раундов)
  • Подготовленные заявления через Prisma (защита от SQL-инъекций)
  • Проверка электронной почты с помощью кодов, ограниченных по времени
  • Защита CSRF с помощью файлов cookie SameSite.

Интернационализация

  • Многоязычная поддержка — русский и английский.
  • Динамическое переключение языка — по выбору пользователя
  • Комплексные переводы — переведены все элементы пользовательского интерфейса.
  • Расширяемая система — легко добавлять новые языки

Система электронной почты

  • 5 типов электронной почты:
  • Verification Code — 6-значный код для регистрации.
  • Приветственное письмо — после завершения регистрации
  • Электронная почта сертификата — сертификат в формате PDF после покупки.
  • Подарок получен — уведомление получателю.
  • Подарок отправлен — подтверждение отправителю
  • HTML-шаблоны — стилизованные электронные письма с брендингом.
  • Интеграция SMTP — SMTP Mail.ru с SSL

Архитектура и шаблоны дизайна

Мультиплатформенная архитектура

  • Маркетинговый уровень (Framer) — привлечение пользователей и информация.
  • Уровень приложений (Next.js) — основные функции и транзакции.
  • Бесшовная передача управления — четкий поток пользователей между платформами.
  • Структура API
  • Конечные точки RESTful — организованы по ресурсам.
  • Защита промежуточного программного обеспечения — аутентификация на уровне маршрута.
  • Управление доступом на основе ролей — роли ПОЛЬЗОВАТЕЛЬ и АДМИН.
  • Обработка ошибок — последовательные ответы на ошибки.
  • Проверка ввода — проверка схемы Zod.
  • Проектирование базы данных
  • Нормализованная схема — эффективные отношения
  • Первичные ключи UUID — безопасность и масштабируемость
  • Поля JSON — гибкое хранение метаданных
  • Индексы — оптимизированные запросы
  • Транзакции — атомарные операции для критических потоков.
  • Государственное управление
  • Рендеринг на стороне сервера — Маршрутизатор приложений Next.js.
  • Состояние на стороне клиента — перехватчики и контекст React.
  • Управление сеансами — аутентификация на основе файлов cookie.
  • Обновления в реальном времени — оптимистичные обновления пользовательского интерфейса.

Процесс разработки

Качество кода

  • TypeScript — полная безопасность типов.
  • ESLint — линтинг кода
  • Prisma — типобезопасные запросы к базе данных.
  • Компонентная архитектура — повторно используемые компоненты React.

Тестирование и отладка

  • Ручное тестирование — комплексное тестирование функций.
  • Журнал ошибок — подробное журналирование консоли.
  • Мониторинг PM2 — мониторинг процессов и журналы
  • Тестирование вебхуков Stripe — симуляция событий.

Развертывание

  • Рабочий процесс на основе Git — контроль версий
  • Сценарии автоматического развертывания — развертывание одной командой.
  • Управление средой — отдельные конфигурации разработки/продукта.
  • Обновления с нулевым временем простоя — плавный перезапуск PM2.

Оптимизация производительности

  • Оптимизация Next.js:
  • Генерация статических страниц, где это возможно.
  • Оптимизация изображения
  • Разделение кода
  • Сжатие включено
  • Оптимизация базы данных:
  • Индексированные запросы
  • Эффективные соединения
  • Пагинация для больших наборов данных
  • Оптимизация API:
  • Заголовки кэширования ответов
  • Эффективная выборка данных
  • Пакетные операции, где это применимо.

Проблемы и решения

Задача 1: Интеграция маркетинга с приложениями

Проблема: создание единого пользовательского интерфейса между маркетинговой целевой страницей и основным приложением.

Решение:

  • Разработан единый брендинг на обеих платформах.
  • Реализованы четкие призывы к действию на целевой странице.
  • Создан плавный поток перенаправления в основное приложение.
  • Гарантированный пользовательский контекст сохраняется во время перехода

Проблема 2. Точность отображения сертификата

Проблема: PDF-сертификаты не соответствовали предварительному просмотру визуального дизайнера (смещение 40–60 пикселей).

Решение:

  • Реализован рендеринг Canvas на стороне сервера с использованием node-canvas.
  • Сопоставление систем координат между холстом браузера и PDF.
  • Добавлены настройки смещения Y для каждого элемента.
  • Достигнуто точное попиксельное соответствие между предварительным просмотром и PDF.

Задача 3: Стабильность сервера

Проблема: ежедневные сбои сервера (502 Bad Gateway) из-за конфликтов портов и процессов-зомби.

Решение:

  • Настроен PM2 с правильными задержками перезапуска и ограничениями памяти.
  • Настройте systemd для автозапуска PM2.
  • Реализованы скрипты очистки процессов.
  • Добавлен мониторинг и оповещения

Проблема 4: Сложность платежного потока

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

Решение:

  • Реализована идемпотентная обработка веб-перехватчиков.
  • Создана логика поиска/создания пользователя в обработчике веб-перехватчика.
  • Добавлена генерация токена входа для простой аутентификации.
  • Обработка крайних случаев (существующие пользователи, неудачные платежи)

Показатели проекта

База данных:

  • ~15000 пользователей
  • ~310 000 деревьев (доступно 150 500)
  • ~20000 заказов
  • Общий доход ~100 000 000 евро

Производительность:

  • Время сборки: ~22 секунды
  • Холодный старт: <1 секунды
  • Горячая перезагрузка: <200 мс
  • Нулевые уязвимости безопасности (аудит npm)

Кодовая база:

  • Покрытие TypeScript: 100%
  • Конечные точки API: 40+
  • Компоненты React: 30+
  • Модели базы данных: 8

Платформы:

  • 1 маркетинговая целевая страница (Framer)
  • 1 основное приложение (Next.js)
  • Бесшовная интеграция между платформами

Будущие улучшения

  • Ограничение скорости с помощью Redis для распределенных систем.
  • Интеграция аналитики (Google Analytics)
  • Уведомления в приложении
  • Поддержка PWA
  • Мобильное приложение (React Native)
  • Расширенная отчетность и экспорт
  • Дополнительные способы оплаты
  • Мультивалютная поддержка
  • Расширенные функции маркетинговой целевой страницы.
  • A/B-тестирование для оптимизации конверсии.
  • Тип проекта: полнофункциональная платформа электронной коммерции с интеграцией маркетинга.
  • Роль: Full-Stack разработчик
  • Технологии: Framer, Next.js, React, TypeScript, PostgreSQL, Stripe, Prisma.
  • Статус: ✅ Производство готово и развернуто
  • Примечание. Домены предназначены только для демонстрации портфолио.
Global Olive Corp. — Инвестиционная платформа для оливков... | Renat Usmanov