{"id":30232303,"url":"https://github.com/magasov/lookory","last_synced_at":"2026-04-12T07:35:33.747Z","repository":{"id":302403166,"uuid":"1012337682","full_name":"magasov/lookory","owner":"magasov","description":"Интернет-магазин для дропшиппинга","archived":false,"fork":false,"pushed_at":"2025-07-02T07:23:10.000Z","size":19292,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"dev","last_synced_at":"2026-04-12T07:35:11.353Z","etag":null,"topics":["admin-dashboard","cdek-api","ecommerce","fullstack","mern-stack","mobile-friendly","online-store","post-russia","reactjs","sass","shopping-cart","yookassa"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/magasov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-02T07:21:05.000Z","updated_at":"2026-03-03T06:56:31.000Z","dependencies_parsed_at":"2025-07-02T08:20:38.565Z","dependency_job_id":"65b96408-de8b-4510-946a-9c6dc24bcbac","html_url":"https://github.com/magasov/lookory","commit_stats":null,"previous_names":["magasov/lookory"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/magasov/lookory","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magasov%2Flookory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magasov%2Flookory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magasov%2Flookory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magasov%2Flookory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/magasov","download_url":"https://codeload.github.com/magasov/lookory/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magasov%2Flookory/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31707953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T06:22:27.080Z","status":"ssl_error","status_checked_at":"2026-04-12T06:21:52.710Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin-dashboard","cdek-api","ecommerce","fullstack","mern-stack","mobile-friendly","online-store","post-russia","reactjs","sass","shopping-cart","yookassa"],"created_at":"2025-08-14T23:56:55.126Z","updated_at":"2026-04-12T07:35:33.731Z","avatar_url":"https://github.com/magasov.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cbr /\u003e\n    \u003ca href=\"https://github.com/magasov\" target=\"_blank\"\u003e\n      \u003cimg src=\"./client/src/assets/readme/banner.png\" alt=\"Project Banner\"\u003e\n    \u003c/a\u003e\n  \u003cbr /\u003e\n \n  \u003cp\u003e\n    \u003ccode\u003e\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/React-icon.svg/1150px-React-icon.svg.png\" alt=\"react.js\" height=\"30\" /\u003e\u003c/code\u003e\n    \u003ccode\u003e\u003cimg src=\"https://camo.githubusercontent.com/94614fd3e40c34f3025cafff06bccef1032ae5276917e636e6a68634fc59a388/68747470733a2f2f63646e2e66726565626965737570706c792e636f6d2f6c6f676f732f6c617267652f32782f6e6f64656a732d69636f6e2d6c6f676f2d706e672d7472616e73706172656e742e706e67\" alt=\"null\" height=\"30\" /\u003e\u003c/code\u003e\n    \u003ccode\u003e\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Unofficial_JavaScript_logo_2.svg/2048px-Unofficial_JavaScript_logo_2.svg.png\" alt=\"null\" height=\"30\" /\u003e\u003c/code\u003e\n    \u003ccode\u003e\u003cimg src=\"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQc5niSKZpZhcw5Cxk4e5k_-_TNIeaRfu2fgw\u0026s\" alt=\"react.js\" height=\"30\" /\u003e\u003c/code\u003e\n    \u003ccode\u003e\u003cimg src=\"https://camo.githubusercontent.com/e84d110dc8fc6125b9138856352724ba0f8f6b86ec6ac91961669d407fd71e24/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f353936382f353936383335382e706e67\" alt=\"null\" height=\"30\" /\u003e\u003c/code\u003e\n  \u003c/p\u003e\n  \u003ch1 align=\"center\"\u003elookory\u003c/h1\u003e\n\n   \u003cdiv align=\"center\"\u003e\n     Интернет-магазин для дропшиппинга: авторский дизайн, продуманная логика и полная техническая реализация.\n    \u003c/div\u003e\n\u003c/div\u003e\n\n## 🖼️ Галерея проекта\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003eГлавная страница\u003c/h3\u003e\n  \u003cimg src=\"./client/src/assets/readme/gifs/1.gif\" alt=\"Главная страница\" width=\"800\" /\u003e\n  \n  \u003ch3\u003eСтраница товара\u003c/h3\u003e\n  \u003cimg src=\"./client/src/assets/readme/gifs/2.gif\" alt=\"Страница товара\" width=\"800\" /\u003e\n  \n  \u003ch3\u003eКорзина\u003c/h3\u003e\n  \u003cimg src=\"./client/src/assets/readme/gifs/3.gif\" alt=\"Корзина\" width=\"800\" /\u003e\n  \n  \u003ch3\u003eАдмин-панель\u003c/h3\u003e\n  \u003cimg src=\"./client/src/assets/readme/gifs/4.gif\" alt=\"Админ-панель\" width=\"800\" /\u003e\n  \n  \u003ch3\u003eМобильная версия\u003c/h3\u003e\n  \u003cimg src=\"./client/src/assets/readme/gifs/5.gif\" alt=\"Мобильная версия\" width=\"300\" /\u003e\n\n  \u003ch3\u003eПосле оплаты на странице Юкассы приходит уведомление с состоянием (pending и т.д) в тг\u003c/h3\u003e\n  \u003cimg src=\"./client/src/assets/readme/gifs/6.png\" alt=\"Тг\" width=\"300\" /\u003e\n\u003c/div\u003e\n\n## 🚀 Что реализовано\n\n- ⭐ Избранное с сохранением и быстрым доступом\n- ➕🗑️ Добавление и удаление товаров\n- 📊 Сортировка товаров по категориям и подкатегориям\n- 🔍 Поиск по товарам на сайте\n- 🛒 Добавление/удаление товаров в корзину и избранное\n- 👨‍💻 Админ-панель:\n  - Расширенное добавление товаров\n  - Создание категорий и подкатегорий\n- 📱 Полностью адаптивный дизайн под любые устройства\n- 💳 Оформление заказов через ЮKassa\n- 🏙️ Поиск городов и складов СДЭК\n- 📦 Интеграция с Почтой России\n- 📦 Мои заказы с статусами:\n  - Ожидание оплаты\n  - Оплачено\n  - Получено\n- 📢 Уведомления продавцу в Telegram о новых заказах\n- 🔒 Авторизация по почте с подтверждением через ссылку\n- 🎞 Адаптивные слайдеры изображений\n- 🏷️ SEO-оптимизация с мета-тегами\n- 🎭 Роли (Admin, User)\n\n## 📋 Tech Stack\n\n### 🧩 Frontend (React 19)\n\n- ⚛️ React 19 + React DOM\n- 🔄 Redux Toolkit + React-Redux\n- 🛣️ React Router DOM v7\n- 📡 Axios для HTTP-запросов\n- 💅 Sass для стилизации\n- 🎨 React Icons v5\n- 🏗️ React Content Loader (скелетоны)\n- 🚀 React Helmet Async (SEO)\n- 🎠 Slick Carousel + React Slick\n- 🔊 Sonner (уведомления)\n- 🏗️ Motion (анимации)\n- 🧪 Тестирование:\n  - Testing Library (DOM/Jest/User Event)\n\n### ⚙️ Backend (Node.js + Express)\n\n- 🚂 Express.js\n- 🛡️ Helmet (безопасность)\n- 📊 Sequelize (ORM) + MySQL2\n- 🔐 JWT + bcrypt (аутентификация)\n- 📨 Nodemailer (почта)\n- 📦 Multer (загрузка файлов)\n- ⏱️ Express Rate Limit\n- 🌐 CORS + dotenv\n- 💰 Платежи:\n  - Yandex Checkout\n  - YooMoney SDK\n- 🆔 UUID\n- 📡 Node Fetch (HTTP-клиент)\n- 📊 Morgan (логирование)\n- 🔄 Nodemon (разработка)\n\n\n## 🚀 Как начать\n\n1. Установите [Node.js](https://nodejs.org/) (рекомендуется версия 18+).\n\n2. Склонируйте репозиторий:\n   ```bash\n   git clone https://github.com/magasov/lookory.git\n   cd lookory\n   ```\n3. В корне backend-проекта создайте файл .env и добавьте в него следующие переменные окружения (без кавычек и с вашими значениями):\n   ```env\n    JWT_SECRET=your_jwt_secret_key\n    EMAIL_USER=your_email@gmail.com\n    EMAIL_PASS=your_app_password\n    DB_HOST=localhost\n    DB_USER=your_db_username\n    DB_PASSWORD=your_db_password\n    DB_NAME=your_database_name\n    PORT=8080\n    CLIENT_URL=http://localhost:3000\n    API_URL=http://localhost:8080\n    YOOKASSA_SHOP_ID=your_shop_id\n    YOOKASSA_SECRET_KEY=test_your_test_key\n    YOOKASSA_TEST_MODE=1\n    TELEGRAM_BOT_TOKEN=your_telegram_bot_token\n    TELEGRAM_GROUP_ID=your_telegram_chat_id\n   ```\n\n\u003e ⚠️ **Генерация пароля для отправки писем**  \n\u003e https://myaccount.google.com/apppasswords \n\n\u003e ⚠️ **Сервис для данных адресов**  \n\u003e https://dadata.ru/\n\n4. В корне frontend-проекта создайте файл .env и добавьте в него следующие переменные окружения (без кавычек и с вашими значениями):\n   ```env\n    REACT_APP_APIURL=http://localhost:8080\n\n    REACT_APP_DADATA_TOKEN=ВАШ-ТОКЕН-ДАДАТА\n    REACT_APP_DADATA_SECRET=ВАШ-КЛЮЧ-ДАДАТА\n\n    SDEK_API_URL=https://api.edu.cdek.ru/v2\n    SDEK_CLIENT_ID=ВАШ-ИД-СДЭК\n    SDEK_CLIENT_SECRET=ВАШ-КЛЮЧ-СДЭК\n    SDEK_SENDER_ADDRESS=\"г. Москва, ул. Ленина, д. 1 | поменяйте на адресс вашего магазина\"\n\n    YOOKASSA_SHOP_ID=ВАШ-ИД-ЮКАССА\n    YOOKASSA_SECRET_KEY=ВАШ-СЕРКРЕТНЫЙКЛЮЧ-ЮКАССА\n    YOOKASSA_TEST_MODE=1\n\n   ```\n\n5. Установите зависимости и запустите backend:\n\n   ```bash\n   cd api\n   npm install\n   npm run dev\n   ```\n\n6. Запустите frontend (в другом терминале):\n\n   ```bash\n   cd ../client\n   npm install\n   npm start\n   ```\n\n7. Откройте в браузере: http://localhost:3000\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagasov%2Flookory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmagasov%2Flookory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagasov%2Flookory/lists"}