Skip to content

Full-stack веб-приложение для создания и обсуждения научных статей с активным сообществом. Включает богатый редактор, систему рейтингов, умный поиск и персональные сборники. Проект демонстрирует опыт архитектуры full-stack приложений на FastAPI и Vue.js.

Notifications You must be signed in to change notification settings

Shirouky/Scipher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Scipher - Платформа для научных публикаций

Python Vue.js SQLAlchemy SQLite

Science + Cypher - современная веб-платформа для создания, публикации и обсуждения научных и научно-популярных статей с активным сообществом читателей и авторов.

Особенности

Для авторов

  • Свободное творчество - научные, научно-популярные и художественные публикации
  • Продвинутый редактор с поддержкой CKEditor 4
  • Кастомизация оформления - цвета, фоны, аватары
  • Система тегов для лучшей категоризации

Для читателей

  • Умный поиск с фильтрами по тегам, авторам и рейтингам
  • Система рейтингов и комментариев
  • Персональные сборники статей
  • Отслеживание прочитанного

Сообщество

  • Рейтинги статей - коллективная оценка качества
  • Комментарии с системой лайков
  • Профили пользователей с статистикой
  • Модерация контента

Технологический стек

Backend

  • FastAPI - современный асинхронный фреймворк
  • SQLAlchemy - ORM для работы с базой данных
  • SQLite - база данных (с возможностью миграции на PostgreSQL)
  • JWT - аутентификация и авторизация
  • Pydantic - валидация данных
  • Uvicorn - ASGI-сервер

Frontend

  • Vue.js 3 - прогрессивный фреймворк
  • Vue Router - маршрутизация
  • Vuex - управление состоянием
  • Vue Cookies - работа с cookies
  • Axios - HTTP-запросы
  • CKEditor 4 - текстовый редактор
  • SCSS - препроцессор CSS
  • Font Awesome - иконки

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

scipher/
├── backend/
│   ├── api.py              # Основное FastAPI приложение
│   ├── crud.py             # Операции с базой данных
│   ├── DB_tables.py        # Модели SQLAlchemy
│   ├── models_api.py       # Pydantic модели
│   └── scipher.db          # База данных SQLite
├── frontend/
│   ├── src/
│   │   ├── components/     # Vue компоненты
│   │   ├── views/          # Страницы приложения
│   │   ├── router/         # Конфигурация маршрутизации
│   │   ├── store/          # Vuex хранилище
│   │   └── assets/         # Стили и ресурсы
│   ├── public/
│   └── package.json
└── README.md

Быстрый старт

Предварительные требования

  • Python 3.8+
  • Node.js 14+
  • npm или yarn

Установка и запуск

Backend

# Установка зависимостей Python
pip install fastapi uvicorn sqlalchemy python-multipart passlib python-jose[cryptography]

# Запуск сервера
cd backend
python api.py

Сервер будет доступен по адресу: http://127.0.0.1:7000

Frontend

# Установка зависимостей Node.js
cd frontend
npm install

# Запуск в режиме разработки
npm run serve

Приложение будет доступно по адресу: http://localhost:8080

Основные функции API

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

  • POST /token - получение JWT токена
  • GET /user/me - информация о текущем пользователе

Пользователи

  • POST /user - регистрация нового пользователя
  • GET /users - список пользователей
  • GET /user/{id}/all - полная информация о пользователе
  • PATCH /users/{id}/info - обновление информации

Статьи

  • POST /article - создание статьи
  • GET /articles - список статей
  • GET /article/{id} - получение статьи
  • PATCH /article/{id}/all - обновление статьи
  • POST /finder - умный поиск статей

Комментарии

  • POST /comment - создание комментария
  • GET /article/{id}/comments - комментарии к статье

Медиа

  • POST /img/user/avatar - загрузка аватара
  • POST /img/article/{id}/back - фоновое изображение статьи

Интерфейс

Основные страницы

  • Главная - популярные статьи, теги, пользователи
  • Статья - просмотр и обсуждение статей
  • Редактор статей - создание и редактирование контента
  • Профиль пользователя - личный кабинет
  • Поиск - расширенный поиск с фильтрами

Компоненты

  • ArticleView - просмотр статей
  • ArticleEditView - редактор статей
  • UserProfileView - профиль пользователя
  • ShortenedArticle - карточка статьи
  • Comment - компонент комментариев

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

Основные сущности

  • Users - пользователи системы
  • Articles - статьи и публикации
  • Comments - комментарии к статьям
  • Tags - теги для категоризации
  • Compilations - персональные сборники статей

Безопасность

  • JWT аутентификация
  • Хеширование паролей
  • Валидация входных данных
  • Защита от CSRF
  • CORS настройки

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

Production сборка

# Frontend
npm run build

# Backend 
uvicorn api:app --host 0.0.0.0 --port 8000

Команда разработки

Frontend & Team Lead
Любовь Деребас

Backend разработка
Серафим Никольский
Алексей Соколов

Дополнительная разработка
Дары Родионова, Ройтберг Елизавета, Егор Федоров, Степан Карлов, Илья Гаранов, Яковлев Иван

Планы развития

  • Система уведомлений
  • Подписки на пользователей
  • Расширенный умный поиск
  • Рейтинг пользователей
  • Мобильное приложение
  • Социальные функции

Scipher - где наука встречает сообщество! 🔬✨

About

Full-stack веб-приложение для создания и обсуждения научных статей с активным сообществом. Включает богатый редактор, систему рейтингов, умный поиск и персональные сборники. Проект демонстрирует опыт архитектуры full-stack приложений на FastAPI и Vue.js.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published