Skip to content

karpulix/burnotes

Repository files navigation

Burnotes

Это проект на Next.js, демо доступно по адресу burnotes.com и в телеграм боте в качестве Telegram Mini App @burnotes_bot.

С помощью данного web-приложения можно создавать секретные защищенные шифрованием записки, которые сохраняются в базу данных Redis. Шифрование происходит на клиенте и сервер отправляется только зашифрованная записка. После запроса записки по API записка удаляется. Также записка хранится ограниченное время.

TODO:

  • Тестирование
  • GitLab CI & GitHub Actions
  • docker-compose.yml для сборки и деплоя production
  • Helm Chart для деплоя в кластер Kubernetes
  • Подключить что-то типа trunk.io к среде разработки
  • Разобраться с первым рендерингом после сборки приложения

Сборка

Автоматическая сборка и запуск

На данный момент сборка production среды полностью делегирована сервису vercel.com, поэтому в данной инструкции описана только сборка для разработки.

Следует использовать VSCode и расширение Dev Containers для запуска среды разработки. Для этого нужен предустановленный Docker.

Это позволяет запустить среду изолированно и исключает воздействие устанавливаемых пакетов на вашу операционную систему.

  • Установите Docker
  • Установите VSCode
  • Установите плагин Dev Containers
  • Клонируйте проект Burnotes
  • Откройте этот проект в VSCode

VSCode должен предложить открыть данный проект в контейнере - согласитесь.

Если этого не произошло, запустите Command Palette

  • Для Mac: + SHIFT + P
  • Для Win: ...чтототам... + SHIFT + P

введите и запустите команду:

>Dev Containers: Rebuild Container

В процессе запуска будет выполнено:

  • сборка среды
  • установка необходимых зависимостей,
  • запуск Redis
  • запуск приложения

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

Сервер можно остановить командой CTRL+C в терминале.

Вы можете выйти из этой среды чтобы запустить проект локально. Выполните в Command Palette:

>Dev Containers: Reopen Folder Locally

Кастомизация среды VSCode

Вы можете добавить нужные расширения в эту среду отредактировав массив расширений в файле .devcontainer/devcontainer.json. По умолчанию будут установлены следующие расширения:

  • unifiedjs.vscode-mdx - MDX – поддержка языка MDX (Markdown + JS)
  • esbenp.prettier-vscode - Prettier - Code formatter - форматирование кода
  • ms-azuretools.vscode-docker - Docker for VSCode поддержка Docker
  • cweijan.vscode-redis-client - Redis - UI клиент базы данных Redis для VSCode. В Sidebar появится возможность подключиться к БД Redis и просматривать записи.
  • bradlc.vscode-tailwindcss - Tailwind CSS IntelliSense - подсветка синтаксиса препроцессора Tailwindcss.
  • Gruntfuggly.todo-tree - Todo Tree - предоставляет возможность просматривать добавленные в код TODO списком

Ручная сборка и запуск

Для начала нужно установить зависимости (для разработки)

npm install --include=dev

В термиале VSCode вы можете остановить автоматически запущенный сервис и выполнять сборку/запуск самостоятельно используя команды:

  • npm run dev - сборка и запуск приложения
  • npm run build - сборка приложения
  • npm run lint - запуск линтера

Конфигурация (.env)

Для конфигурации используется файл .env который необходимо создать в корне проекта.

Отсутствие файла .env на данный момент не критично, т.к значения по умолчанию, определяемые программно, подходят для среды разработки. Но рекомендуется создать файл .env в корне проекта, можно использовать .env.example. Он также валиден для запуска среды разработки.

Env. Variable Default val Description
REDIS_HOST redis Адрес Redis
REDIS_PORT 6379 Порт Redis
REDIS_PW Пароль Redis
REDIS_EX 86400 Значение хранения записки по умолчанию (1 день)
REDIS_EX_INF false Если указано true записка хранится до прочтения

Локализация

Файлы локализации находятся в папке src/lang. Все файлы локализации, кроме ru.json, сгенерированы Chat GPT и представляют собой машинный перевод файла ru.json.

Возможные проблемы

Первый запуск

Первый запуск требует какое-то время. Приложение не будет доступно по адресу пока не закончится рендеринг. Можно следить за процессом в терминале (○ Compiling / ...) При первом запуске приложение может некорректно отображаться в браузере. Просто перезагрузите страницу. Проблема повторится только при следующей сборке.

Проблемы с контейнерами среды разработки

Обычно проблем никаких нет, но возникали сложности которые решались пересборкой контейнеров из VSCode. Предварительно можно удалить контейнеры docker компной docker rm <container_id> а также директории:

  • node_modules
  • .next

Дополнительно

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

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

Самый простой способ развернуть это приложение в production - использовать платформу Vercel от создателей Next.js.

Документацию по развертыванию Next.js.

About

easy to use open source secret note service

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors