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

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

Особенности

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

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

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

  • 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. Подтвердите удаление в появившемся диалоговом окне

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

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

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

NoteJS/
├── public/                  # Статические файлы (клиентская часть)
│   ├── index.html          # Страница входа
│   ├── register.html       # Страница регистрации (NEW!)
│   ├── notes.html          # Страница заметок
│   ├── login.js            # Логика входа (обновлена)
│   ├── register.js         # Логика регистрации (NEW!)
│   ├── app.js              # Клиентский JavaScript
│   └── style.css           # Стили
├── server.js               # Express сервер
├── .env                    # Конфигурация (не включать в 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 /notes - страница заметок
  • GET /api/notes - получить все заметки
  • POST /api/notes - создать новую заметку
  • PUT /api/notes/:id - обновить заметку
  • DELETE /api/notes/:id - удалить заметку

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

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

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

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

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

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

Разработка

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

npm run dev

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

Лицензия

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

Календарь

На странице заметок слева расположен интерактивный календарь, который позволяет:

  • 📅 Просмотреть текущий месяц с выделением сегодняшней даты
  • ◀️ Переключаться между месяцами с помощью кнопок навигации
  • 🔗 Выбирать даты для фильтрации заметок (функция может быть расширена)
  • 📱 Адаптивность - на мобильных устройствах календарь располагается на всю ширину выше формы

Характеристики календаря

  • Сегодняшний день выделен синим цветом
  • Выбранный день отмечен зелёным цветом
  • Дни из соседних месяцев отображаются серым цветом
  • Календарь использует русские названия месяцев и дней недели
  • Полностью функционален без необходимости в дополнительных библиотеках
Description
No description provided
Readme 3.1 MiB
Languages
JavaScript 72.5%
CSS 15.2%
HTML 12.3%