NoteJS/README.md
Fovway 7376de1a5b feat: добавлен личный кабинет с аватарками и улучшена навигация
- Добавлена страница личного кабинета с возможностью загрузки аватарки
- Реализовано управление аватарками: загрузка, удаление, предварительный просмотр
- Исправлено отображение аватарки на странице профиля (центрирование)
- Убрано отображение аватарки со страницы заметок для чистоты интерфейса
- Обновлен .gitignore с исключениями для загруженных файлов и временных файлов
- Обновлен README.md с документацией по новым функциям
- Добавлена валидация загружаемых файлов (тип, размер, формат)
- Улучшена безопасность с изоляцией пользовательских данных
2025-10-19 00:36:19 +07:00

11 KiB
Raw Blame History

NoteJS - Приложение для быстрых заметок

Простое веб-приложение для создания и управления заметками с поддержкой Markdown форматирования и системой аутентификации.

Особенности

  • 🚀 Создано на Node.js + Express
  • 🔐 Система регистрации и авторизации по логину и паролю
  • 🔒 Безопасное хранение паролей с bcrypt хешированием
  • 💾 Хранение данных в SQLite базе данных
  • 👥 Изолированные заметки - каждый пользователь видит только свои заметки
  • 👤 Личный кабинет с возможностью загрузки аватарки (NEW!)
  • 🖼️ Управление аватаркой: загрузка, удаление, предварительный просмотр (NEW!)
  • 📝 Поддержка Markdown форматирования
  • 🏷️ Система тегов с автоматическим извлечением из заметок (NEW!)
  • 🔍 Поиск по заметкам с подсветкой результатов (NEW!)
  • 📅 Мини-календарь для навигации по датам заметок (NEW!)
  • 🎨 Простой и интуитивный интерфейс
  • 📱 Адаптивный дизайн

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

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

  • Node.js (версия 14 или выше)
  • npm

Установка

  1. Клонируйте репозиторий:
git clone <repository-url>
cd NoteJS
  1. Установите зависимости:
npm install
  1. Настройте переменные окружения:
    • Откройте файл .env
    • Установите секрет сессии в переменной SESSION_SECRET
    • Установите порт в переменной PORT (по умолчанию 3000)

Пример файла .env:

SESSION_SECRET=your_session_secret_here
PORT=3000
  1. Запустите сервер:
npm start
  1. Откройте браузер и перейдите по адресу http://localhost:3000

Использование

Регистрация

  1. Нажмите на ссылку "Зарегистрируйтесь" на странице входа
  2. Заполните форму регистрации:
    • Логин: минимум 3 символа
    • Пароль: минимум 6 символов
    • Подтвердите пароль: повторите пароль
  3. Нажмите кнопку "Зарегистрироваться"
  4. Вы будете автоматически залогинены и перенаправлены на страницу заметок

Вход в систему

  1. Введите ваш логин
  2. Введите ваш пароль
  3. Нажмите кнопку "Войти"
  4. После успешного входа вы попадете в интерфейс заметок

Создание заметок

  1. Введите текст заметки в поле ввода
  2. Используйте кнопки форматирования для добавления Markdown элементов:
    • B - жирный текст
    • I - курсив
    • H - заголовок
    • 📋 - элемент списка
    • " - цитата
    • </> - код
    • 🔗 - ссылка
  3. Нажмите кнопку "Сохранить"

Редактирование заметок

  1. Нажмите кнопку "Редактировать" рядом с заметкой
  2. Отредактируйте текст в появившемся поле ввода
  3. Нажмите кнопку "Сохранить"

Удаление заметок

  1. Нажмите кнопку "Удалить" рядом с заметкой
  2. Подтвердите удаление в появившемся диалоговом окне

Личный кабинет

  1. Нажмите на ваше имя пользователя в верхней части страницы заметок
  2. В личном кабинете вы можете:
    • Загрузить аватарку: нажмите "Загрузить аватар" и выберите изображение (JPG, PNG, GIF до 5 МБ)
    • Удалить аватарку: нажмите кнопку "Удалить" рядом с аватаркой
    • Изменить данные профиля: отредактируйте логин и email
    • Изменить пароль: введите текущий пароль и новый пароль

Поиск и фильтрация

  1. Поиск по заметкам: используйте поле поиска в левой панели для поиска по содержимому заметок
  2. Фильтрация по тегам: кликайте на теги в левой панели для фильтрации заметок
  3. Навигация по календарю: кликайте на даты в мини-календаре для просмотра заметок за определенный день

Теги

  • Теги автоматически извлекаются из заметок при использовании символа # (например: #важное)
  • Теги отображаются в левой панели с количеством заметок
  • Кликабельные теги в заметках позволяют быстро фильтровать контент

Выход из системы

Нажмите кнопку "🚪 Выйти" в верхней части страницы заметок

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

NoteJS/
├── public/                  # Статические файлы (клиентская часть)
│   ├── index.html          # Страница входа
│   ├── register.html       # Страница регистрации
│   ├── notes.html          # Страница заметок
│   ├── profile.html        # Страница личного кабинета (NEW!)
│   ├── login.js            # Логика входа
│   ├── register.js         # Логика регистрации
│   ├── profile.js          # Логика личного кабинета (NEW!)
│   ├── app.js              # Клиентский JavaScript (обновлен)
│   ├── style.css           # Стили (обновлены)
│   └── uploads/            # Загруженные аватарки пользователей (NEW!)
├── server.js               # Express сервер (обновлен)
├── .env                    # Конфигурация (не включать в git!)
├── .gitignore              # Исключения для git (обновлен)
├── package.json            # Зависимости проекта
├── notes.db                # SQLite база данных (создается автоматически)
└── README.md               # Документация

API Endpoints

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

  • GET / - страница входа
  • GET /register - страница регистрации
  • POST /api/register - регистрация нового пользователя
  • POST /api/login - вход в систему
  • POST /logout - выход из системы
  • GET /api/user - получить информацию о текущем пользователе (требует аутентификации)

Профиль пользователя (требует аутентификации)

  • GET /profile - страница личного кабинета
  • PUT /api/user/profile - обновить данные профиля или пароль
  • POST /api/user/avatar - загрузить аватарку
  • DELETE /api/user/avatar - удалить аватарку

Заметки (требуют аутентификации)

  • GET /notes - страница заметок
  • GET /api/notes - получить все заметки пользователя
  • POST /api/notes - создать новую заметку
  • PUT /api/notes/:id - обновить заметку
  • DELETE /api/notes/:id - удалить заметку

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

  • Bcrypt хеширование паролей при сохранении
  • Сессионная аутентификация с express-session
  • Helmet для защиты от распространенных уязвимостей
  • CORS конфигурация
  • Body Parser для безопасной обработки запросов
  • Multer для безопасной загрузки файлов с валидацией
  • Защищенные маршруты с проверкой аутентификации
  • Валидация загружаемых файлов: проверка типа, размера и формата
  • Изоляция данных: каждый пользователь видит только свои заметки и файлы

Требования к паролям

  • Минимум 6 символов при регистрации
  • Пароли хешируются с использованием bcrypt (стандарт раундов: 10)
  • Пароли не могут быть восстановлены из БД

Требования к логину

  • Минимум 3 символа
  • Должен быть уникальным (нельзя создать два аккаунта с одинаковым логином)

Требования к аватаркам

  • Максимальный размер: 5 МБ
  • Поддерживаемые форматы: JPG, PNG, GIF
  • Автоматическое изменение размера: изображения автоматически обрезаются до квадратного формата
  • Безопасность: проверка типа файла и размера перед загрузкой

Разработка

Для разработки используйте:

npm run dev

Этот скрипт использует nodemon для автоматической перезагрузки сервера при изменении файлов. Больше не нужно вручную перезапускать сервер при каждом изменении кода!

Лицензия

Этот проект создан Fovway.