Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Платформа вопросов и ответов, разработанная на Next.js 14

License

Notifications You must be signed in to change notification settings

athead/devoverflow

Repository files navigation

devOverflow

Stars Fork GitHub commits Pull requests

demo

License Top Language Contributors Release PRs

🔥 Lighthouse

* При использовании локального сервера MongoDB (Atlas + Vercel: Perfomance = 98)

🌐 Демо

Демо проекта: devOverflow

📝 Описание

devOverflow это платформа вопросов и ответов, позволяющая разработчикам задавать вопросы, делиться знаниями и учиться друг у друга. Она построена с использованием Next.js, Tailwind CSS, Clerk, MongoDB и многого другого.

Структура папок
devoverflow/
├───app
│ ├───(auth)
│ │ ├───sign-in
│ │ │ └───[[...sign-in]]
│ │ └───sign-up
│ │ └───[[...sign-up]]
│ ├───(root)
│ │ ├───(home)
│ │ │ └───ask-question
│ │ ├───collection
│ │ ├───community
│ │ ├───jobs
│ │ ├───profile
│ │ │ ├───edit
│ │ │ └───[id]
│ │ ├───question
│ │ │ ├───edit
│ │ │ │ └───[id]
│ │ │ └───[id]
│ │ └───tags
│ │ └───[id]
│ └───api
│ ├───chatgpt
│ ├───trudvsem
│ └───webhook
├───components
│ ├───cards
│ ├───forms
│ ├───home
│ ├───jobs
│ ├───layout
│ ├───profile
│ ├───shared
│ │ ├───filters
│ │ ├───navbar
│ │ ├───search
│ │ ├───sidebar
│ │ └───ui
│ └───ui
├───constants
├───content
├───context
├───database
├───lib
│ └───actions
├───public
│ └───assets
│ ├───icons
│ └───images
├───styles
└───types

📖 Оглавление

Оглавление

✨ Используемые технологии

devOverflow разработан с использованием следующих технологий:
  • TypeScript: TypeScript - это типизированный JavaScript.
  • Next.js: Next.js - это фреймворк React для создания веб-приложений, статически генерирующих страницу на стороне сервера.
  • Tailwind CSS: Tailwind CSS - это CSS-фреймворк для быстрой верстки пользовательских интерфейсов.
  • ESLint: ESLint - это инструмент статического анализа кода для выявления проблем в JavaScript коде.
  • Prettier: Prettier - это настраиваемый форматировщик кода.
  • Clerk: Clerk - это API аутентификации для разработчиков, который обрабатывает всю логику регистрации пользователя, входа в систему.
  • Shadcn-UI: Shadcn UI - это библиотека пользовательского интерфейса React, которая помогает разработчикам быстро создавать современные веб-приложения.
  • TinyMCE: TinyMCE - самая популярная в мире библиотека для редактирования текста.
  • MongoDB: MongoDB - это нереляционная, основанная на документах распределенная база данных, созданная для разработки современных приложений.
  • Mongoose: Mongoose - это инструмент моделирования объектов MongoDB, предназначенный для работы в асинхронной среде.
  • Prism.js: Prism - это легкий, расширяемый парсер синтаксиса.
  • Query String: Парсер строки запроса URL.
  • Svix: Svix - это прокси-сервер webhook, который позволяет получать веб-хуки локально.
  • Zod: Zod - это TypeScript библиотека для валидации данных.
  • Vercel: Vercel - это облачная платформа для разработчиков, предоставляющая инфраструктуру для быстрого развертывания веб-приложения.

Используемые технологии

🧰 Начало работы

Чтобы запустить проект в вашей среде разработки, следуйте нижеописанной пошаговой инструкции.

📋 Условия запуска

Для локального запуска, вам необходимо установить на вашем локальном компьютере следующие программы:

⚙️ Установка и локальный запуск

Шаг 0:

Примечание !!️ приложение использует Clerk для аутентификации и управления пользователями, вам необходимо создать учетную запись Clerk здесь и установить переменные окружения CLERK_PUBLISHABLE_KEY и CLERK_SECRET_KEY в файле .env.

Примечание !!️ приложение использует базу данных MongoDB, необходимо создать базу данных и подключить ее к приложению, для этого измените переменную окружения MONGODB_URL в файле .env, расположенном в папке server.

Примечание !!️ приложение использует TinyMCE, необходимо создать учетную запись TinyMCE здесь и установить переменную окружения NEXT_PUBLIC_TINYMCE_API_KEY в файле .env.

Примечание !!️ приложение использует OpenAI API для генерации ответов, необходимо создать учетную запись OpenAI здесь и установить переменную окружения OPENAI_API_KEY в файле .env (не является обязательным).

После выполнения всех приведенных выше инструкций, необходимо создать новый webhook на Clerk. Для этого перейдите в Панель управления Clerk, во вкладку "Webhooks", а затем нажмите "Add Endpoint". В качестве URL введите http://<ССЫЛКА-НА-ВАШ-САЙТ>/api/webhook/clerk. Для событий выберите "user". Затем нажмите "Create", чтобы создать webhook. Получите секретный ключ и установите его как переменную окружения CLERK_WEBHOOK_SECRET в файле .env.

Шаг 1:

Загрузите или клонируйте это репозиторий, воспользовавшись командой ниже:

git clone https://github.com/athead/devoverflow.git

Шаг 2:

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

npm install

Шаг 3:

Выполните следующую команду, чтобы запустить логальный сервер разработки:

npm run dev

Шаг 4:

Откройте http://localhost:3000 с помощью вашего браузера, чтобы увидеть результат.

📜 Скрипты

Все скрипты описны в файле package.json. Вот список всех скриптов:

Скрипт Действие
npm install Установка зависимостей
npm run dev Запуск локального сервера по адресу localhost:3000
npm run build Сборка в production режиме в ./dist/
npm run start Локальный запуск production сборки
npm run lint Запуск ESLint
npm run analyze Запуск Bundle analyzer
npm run structure Генерация структуры папок

🔒 Переменные окружения

Переменные окружения используются для конфигурирования приложения.

Переменные окружения — это переменные, которые задаются в операционной системе или оболочке, обычно используемые для настройки программ.

devOverflow использует Clerk, TinyMCE, OpenAI API и MongoDB как внешние службы. Вам необходимо создать учетную запись в каждой из этих служб и получить учетные данные (ключи API) для запуска приложения.

Создайте файл .env в корневом каталоге проекта и добавьте следующие переменные окружения:

NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=<CLERK_PUBLISHABLE_KEY>
CLERK_SECRET_KEY=<CLERK_SECRET_KEY>
NEXT_CLERK_WEBHOOK_SECRET=<CLERK_WEBHOOK_SECRET>
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/onboarding
NEXT_PUBLIC_TINY_MCE_API_KEY=<YOUR_TINY_MCE_API_KEY>
MONGODB_URL=<YOUR_MONGODB_URL>
NEXT_PUBLIC_SERVER_URL=<YOUR_SERVER_URL>
OPENAI_API_KEY=<YOUR_OPENAI_API_KEY>

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

Развертывание в рабочей среде (вручную)

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

npm run build

Развертывание на Vercel (рекомендуется)

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

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

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

Вы также можете развернуть это Next.js приложение с помощью Netlify.

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

Ознакомтесь с Next.js документацией для получения более подробной информации.

🔧 Сообщество

Совместная разработка

Совместная работа - это то, что делает open-source сообщество таким замечательным местом для обучения, вдохновения и творчества. Я высоко ценю любой ваш вклад.

Чтобы исправить ошибку или улучшить существующий модуль, выполните следующие действия:

  1. Форкните репозиторий
  2. Создайте новую ветку (git checkout -b improve-feature)
  3. Внесите соответствующие изменения в файлы
  4. Зафиксируйте свои изменения (git commit -am 'Improve feature')
  5. Запуште в ветку (git push origin improve-feature)
  6. Создайте pull request 🎉

📩 Запрос на исправление ошибок/добавление функции

Если вы обнаружили ошибку (неспособность модуля выполнять предназначенную функцию), пожалуйста, откройте запрос здесь указав проблему с заголовком и четким описанием.

Если вы хотите запросить новую функцию, не стесняйтесь сделать это, открыв запрос здесь. Пожалуйста, укажите примеры запросов и соответствующие им результаты.

💎 Благодарности

Я хотел бы выразить свою благодарность следующим людям, которые помогли мне с этим проектом и сделали его возможным:

📚 Ссылки

JSMastery. Ultimate Next.js 14 Course | Become a top 1% Next.js 14 developer.

📞 Контакты

Telegram

📋 Лицензия

devOverflow — это программное обеспечение с открытым исходным кодом, лицензированное MIT, его можно использовать бесплатно - более подробную информацию смотрите в разделе ЛИЦЕНЗИЯ.

About

Платформа вопросов и ответов, разработанная на Next.js 14

Topics

Resources

License

Stars

Watchers

Forks

AltStyle によって変換されたページ (->オリジナル) /