+ Приведены все функции приложения в рабочий вид

+ Наведен порядок в файлах проекта
+ Наведен порядок в документации
+ Настроены скрипты установки, развертки и так далее, расширен MakeFile
This commit is contained in:
2025-11-02 06:09:55 +09:00
parent 367e1c932e
commit 2e535513b5
6103 changed files with 7040 additions and 1027861 deletions

433
README.md
View File

@@ -1,108 +1,411 @@
# Клон Linktr.ee на Django + Next.js
# 🐱 CatLink - Персональные страницы ссылок# 🐱 CatLink - Персональные страницы ссылок
Полнофункциональное приложение для создания персональных страниц с ссылками, похожее на Linktr.ee.
## Технологии
**Backend:**
- Django 5.2 + Django REST Framework
- PostgreSQL
- JWT Authentication
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Docker](https://img.shields.io/badge/Docker-Ready-blue)](https://docker.com)[![Docker](https://img.shields.io/badge/Docker-Ready-blue)](https://docker.com)
[![Next.js](https://img.shields.io/badge/Next.js-15-black)](https://nextjs.org)[![Next.js](https://img.shields.io/badge/Next.js-15-black)](https://nextjs.org)
[![Django](https://img.shields.io/badge/Django-5.2-green)](https://djangoproject.com)[![Django](https://img.shields.io/badge/Django-5.2-green)](https://djangoproject.com)
**CatLink** - современная платформа для создания красивых персональных страниц со всеми важными ссылками в одном месте. Альтернатива Linktree с открытым исходным кодом.**CatLink** - современная платформа для создания красивых персональных страниц со всеми важными ссылками в одном месте. Альтернатива Linktree с открытым исходным кодом.
## ✨ Возможности## ✨ Возможности
- 🎨 **Множество макетов**: список, сетка, компактная сетка, журнальная верстка- 🎨 **Множество макетов**: список, сетка, компактная сетка, журнальная верстка
- 🎭 **Персонализация**: настройка цветов, фонов, иконок- 🎭 **Персонализация**: настройка цветов, фонов, иконок
- 📱 **Адаптивный дизайн**: отлично работает на всех устройствах- 📱 **Адаптивный дизайн**: отлично работает на всех устройствах
- 🔐 **Система аутентификации**: регистрация и управление профилем- 🔐 **Система аутентификации**: регистрация и управление профилем
- 📊 **Группировка ссылок**: организация ссылок по категориям- 📊 **Группировка ссылок**: организация ссылок по категориям
- 🌐 **SEO-оптимизация**: дружественные URL и метатеги- 🌐 **SEO-оптимизация**: дружественные URL и метатеги
- 🚀 **Высокая производительность**: быстрая загрузка и отзывчивость- 🚀 **Высокая производительность**: быстрая загрузка и отзывчивость
- 🐳 **Docker Ready**: простой деплой с помощью контейнеров- 🐳 **Docker Ready**: простой деплой с помощью контейнеров
## 🚀 Быстрый старт## 🚀 Быстрый старт
### Требования### Требования
- Docker и Docker Compose- Docker и Docker Compose
- Make (для удобства)- Make (для удобства)
- Git- Git
### Установка### Установка
1. **Клонируйте репозиторий**1. **Клонируйте репозиторий**
```bash ```bash
git clone https://github.com/smartsoltech/links.git git clone https://github.com/smartsoltech/links.git
cd links cd links
``` ```
2. **Запустите установку**2. **Запустите установку**
```bash ```bash
make install make install
``` ```
3. **Откройте в браузере**3. **Откройте в браузере**
- Frontend: http://localhost:3000 - Frontend: http://localhost:3000
- Backend API: http://localhost:8000 - Backend API: http://localhost:8000
- Django Admin: http://localhost:8000/admin - Django Admin: http://localhost:8000/admin
### Альтернативная установка (без Make)### Альтернативная установка (без Make)
```bash```bash
# Копируйте пример конфигурации# Копируйте пример конфигурации
cp .env.example .envcp .env.example .env
# Отредактируйте .env файл# Отредактируйте .env файл
nano .envnano .env
# Запустите контейнеры# Запустите контейнеры
docker-compose up -d --builddocker-compose up -d --build
# Примените миграции# Примените миграции
docker-compose exec web python manage.py migratedocker-compose exec web python manage.py migrate
# Создайте суперпользователя# Создайте суперпользователя
docker-compose exec web python manage.py createsuperuserdocker-compose exec web python manage.py createsuperuser
``````
## 📋 Управление с помощью Make## 📋 Управление с помощью Make
Проект включает мощный Makefile для упрощения разработки:Проект включает мощный Makefile для упрощения разработки:
```bash```bash
make help # Показать все доступные командыmake help # Показать все доступные команды
make dev-bg # Запуск для разработки в фонеmake dev-bg # Запуск для разработки в фоне
make status # Проверить статус сервисовmake status # Проверить статус сервисов
make health # Проверить работоспособностьmake health # Проверить работоспособность
make logs # Просмотр логовmake logs # Просмотр логов
make migrate-full # Выполнить миграции и собрать статикуmake migrate-full # Выполнить миграции и собрать статику
make backup # Создать бэкап базы данныхmake backup # Создать бэкап базы данных
``````
📖 **[Полное руководство по Makefile](./docs/MAKEFILE.md)**📖 **[Полное руководство по Makefile](./docs/MAKEFILE.md)**
## 🏗️ Архитектура## 🏗️ Архитектура
### Технологический стек### Технологический стек
- **Frontend**: Next.js 15, React, TypeScript, Bootstrap 5
- **Backend**: Django 5.2, Django REST Framework**Backend:**
- **База данных**: PostgreSQL- Django 5.2 + Django REST Framework
- **Контейнеризация**: Docker, Docker Compose- PostgreSQL
- **Веб-сервер**: Nginx (для продакшена)- JWT Authentication
- Django CORS Headers
- Gunicorn
**Frontend:**
- Next.js 15.3.1
- React 19
- TypeScript
- Tailwind CSS
- Axios для API запросов
### Структура проекта- Gunicorn
## Быстрый старт
```
### 1. Подготовка окружения
catlink/**Frontend:**
├── frontend/linktree-frontend/ # Next.js приложение- Next.js 15.3.1
├── backend/ # Django API- React 19
├── scripts/ # Скрипты автоматизации- TypeScript
├── docs/ # Документация- Tailwind CSS
├── storage/ # Загруженные файлы- Axios для API запросов
├── docker-compose.yml # Конфигурация Docker
├── Makefile # Команды автоматизации## Быстрый старт
└── README.md # Этот файл
```### 1. Подготовка окружения
## 🎯 Использование```bash
```bash
# Клонируйте репозиторий
git clone <url>
### Для пользователейgit clone <url>
cd links
# Скопируйте переменные окружения
cp .env.example .env
```
1. **Регистрация**: Создайте аккаунт на главной странице
### 2. Запуск проекта
2. **Настройка профиля**: Загрузите аватар, укажите информацию# Скопируйте переменные окружения
3. **Создание групп**: Организуйте ссылки по категориямcp .env.example .env
4. **Добавление ссылок**: Добавьте свои социальные сети и сайты```
5. **Персонализация**: Выберите макет и цветовую схему
6. **Публикация**: Поделитесь своей персональной ссылкой### 2. Запуск проекта
### Для разработчиков```bash
```bash
# Запуск всех сервисов
make up
# Применение миграций базы данных
make migrate
```
Подробные инструкции по разработке и развертыванию:make up
### 3. Доступ к приложению
- **Frontend**: http://localhost:3000
- **Backend API**: http://localhost:8000/api/
- **Django Admin**: http://localhost:8000/admin/
- 📚 **[Руководство по Makefile](./docs/MAKEFILE.md)** - Все команды разработки# Применение миграций базы данных
- 🚀 **[Руководство по деплою](./docs/DEPLOYMENT.md)** - Развертывание в продакшенеmake migrate
- 🔧 **[Исправления и патчи](./docs/FIXES.md)** - Известные проблемы и решения```
## 🛠️ Разработка### 3. Доступ к приложению
### Режим разработки- **Frontend**: http://localhost:3000
```bash- **Backend API**: http://localhost:8000/api/
# Запуск для разработки- **Django Admin**: http://localhost:8000/admin/
make dev-bg
## Команды
- `make up` - Запуск всех сервисов
- `make down` - Остановка всех сервисов
# Просмотр логов
make logs-web # Backend- `make up` - Запуск всех сервисов
make logs-frontend # Frontend- `make down` - Остановка всех сервисов
- `make migrate` - Применение миграций
- `make test` - Запуск тестов
## Структура проекта
# Работа с базой данных- `make test` - Запуск тестов
make migrate # Применить миграции
make shell # Django shell## Структура проекта
make shell-db # Подключение к БД
``````
```
├── backend/ # Django приложение
│ ├── api/ # API endpoints
│ ├── users/ # Пользователи
│ ├── links/ # Ссылки и группы
│ ├── customization/ # Настройки дизайна
│ └── backend/ # Настройки Django
├── frontend/linktree-frontend/ # Next.js приложение
├── docker-compose.yml # Docker Compose конфигурация
├── .env.example # Пример переменных окружения
└── DEPLOYMENT.md # Подробные инструкции по развертыванию
```
## Переменные окружения
### Тестирование│ ├── api/ # API endpoints
```bash│ ├── users/ # Пользователи
make test # Запуск тестов│ ├── links/ # Ссылки и группы
make lint # Проверка кода│ ├── customization/ # Настройки дизайна
make format # Форматирование кода│ └── backend/ # Настройки Django
```├── frontend/linktree-frontend/ # Next.js приложение
├── docker-compose.yml # Docker Compose конфигурация
### Работа с данными├── .env.example # Пример переменных окружения
```bash└── DEPLOYMENT.md # Подробные инструкции по развертыванию
make backup # Создать бэкап```
make restore # Восстановить из бэкапа
make clean # Очистить систему## Переменные окружения
```
Основные переменные в `.env`:
## 🚀 Деплой в продакшен
```env
# Django
DJANGO_SECRET_KEY=your-secret-key
DJANGO_DEBUG=True
DJANGO_ALLOWED_HOSTS=127.0.0.1,localhost
# PostgreSQL
DATABASE_NAME=links_db
DATABASE_USER=links_user
DATABASE_PASSWORD=links_password
### Простой деплой# Django
```bashDJANGO_SECRET_KEY=your-secret-key
make deployDJANGO_DEBUG=True
```DJANGO_ALLOWED_HOSTS=127.0.0.1,localhost
### С SSL сертификатом# PostgreSQL
```bashDATABASE_NAME=links_db
# Настройка SSLDATABASE_USER=links_user
make ssl-host-setup DOMAIN=catlinks.kr EMAIL=admin@catlinks.krDATABASE_PASSWORD=links_password
DATABASE_HOST=db
DATABASE_PORT=5432
# Frontend
NEXT_PUBLIC_API_URL=http://localhost:8000
# Или ручная настройкаDATABASE_PORT=5432
make ssl-setup
make ssl-cert# Frontend
```NEXT_PUBLIC_API_URL=http://localhost:8000
```
📖 **[Подробное руководство по деплою](./docs/DEPLOYMENT.md)**
Подробнее в `DEPLOYMENT.md`.
## 🤝 Вклад в проект
## Особенности
Мы приветствуем вклад в развитие проекта!
- 🔐 JWT аутентификация
- 👤 Кастомизация профилей
- 📱 Адаптивный дизайн
- 🔗 Управление ссылками и группами
- 🎨 Настройка внешнего вида
- 📊 API для всех операций
### Как принять участие:- 👤 Кастомизация профилей
1. Форкните репозиторий- 📱 Адаптивный дизайн
2. Создайте ветку для новой функции: `git checkout -b feature/amazing-feature`- 🔗 Управление ссылками и группами
3. Зафиксируйте изменения: `git commit -m 'Add amazing feature'`- 🎨 Настройка внешнего вида
4. Отправьте в ветку: `git push origin feature/amazing-feature`- 📊 API для всех операций
5. Откройте Pull Request
## Разработка
Проект настроен для разработки в Docker-контейнерах с горячей перезагрузкой.
### Правила разработки:
Для разработки без Docker смотрите инструкции в `DEPLOYMENT.md`.
- Следуйте существующему стилю кодаПроект настроен для разработки в Docker-контейнерах с горячей перезагрузкой.
- Добавляйте тесты для новых функций
- Обновляйте документацию при необходимостиДля разработки без Docker смотрите инструкции в `DEPLOYMENT.md`.
- Проверяйте код: `make lint`
## 📄 Лицензия
Этот проект распространяется под лицензией MIT. См. файл [LICENSE](LICENSE) для подробностей.
## 🆘 Поддержка
### Часто задаваемые вопросы
**Q: Как изменить порт приложения?**
A: Отредактируйте `.env` файл и измените переменные `FRONTEND_PORT` и `BACKEND_PORT`.
**Q: Как добавить собственные домены?**
A: Используйте `make ssl-host-setup DOMAIN=yourdomain.com EMAIL=your@email.com`
**Q: Приложение не запускается**
A: Проверьте статус: `make health` и логи: `make logs`
### Получить помощь
- 📖 Проверьте [документацию](./docs/)
- 🐛 [Создайте issue](https://github.com/smartsoltech/links/issues)
## 🙏 Благодарности
- [Next.js](https://nextjs.org) - за потрясающий React фреймворк
- [Django](https://djangoproject.com) - за надежный backend фреймворк
- [Bootstrap](https://getbootstrap.com) - за отличные компоненты UI
- Сообществу open source за вдохновение
---
<div align="center">
<p>Сделано с ❤️ командой <a href="https://github.com/smartsoltech">SmartSolTech</a></p>
<p>
<a href="#-catlink---персональные-страницы-ссылок">⬆️ Наверх</a>
<a href="./docs/MAKEFILE.md">📚 Документация</a>
<a href="https://github.com/smartsoltech/links/issues">🐛 Issues</a>
<a href="#-вклад-в-проект">🤝 Contributing</a>
</p>
</div>