nanoweb
v0.26.0
Published
Nan•web server side generator with simple Javascript, CSS, HTML, EJS templates and React for forms and editor.
Downloads
453
Readme
Платформа Nan∙web
Генератор статичних сайтів і навіть більше на JavaScript.
Платформа розроблена навколо філософії, в основі якої:
- вігластво,
- безпека,
- баланс і гармонію.
Ця філософія реалізована через унікальну структуру файлової системи, де кожна директорія має додатковий файл, що дозволяє мінімалістично та лаконічно використовувати дані, позбуваючись сміття і дублікатів.
Зміст
Цілі
- Розробити легку та безпечну платформу для управління сайтом: розробка, тестування, публікація.
- Безпека: статичний сайт (без сервера) з HTML, JavaScript, CSS, активами.
- Легке управління та зберігання змін: шаблони та дані (JSON, YAML, CSV, XLXS тощо).
- Використовувати можливості LLM (ChatGPT та Gemini) максимально ефективно.
Вимоги
Використання
Дані зберігаються у файлах .yaml
, які використовуються як файлова база даних, що дозволяє отримувати доступ до сирих файлів для управління сайтом без редактора. Структура веб-адреси відповідає розташуванню файлу даних .yaml
.
Для URL https://domain.com/uk/contacts.html файл даних — це data/uk/contacts.yaml
.
Публічна частина сайту — це лише статичні файли. Тому для публічного сервера можливі наступні технології та рішення:
Платформи для хостингу статичних файлів
- GitHub Pages: Ідеально підходить для хостингу статичних сайтів безпосередньо з репозиторію GitHub.
- GitLab Pages: Аналогічно до GitHub Pages, дозволяє хостинг статичних сайтів з репозиторіїв GitLab.
- GCP (Google Cloud Platform) Object Storage: Забезпечує масштабоване та високодоступне зберігання для статичних файлів.
- Amazon S3 (Simple Storage Service): Ще одна масштабована та безпечна послуга зберігання об'єктів для статичних файлів.
- Netlify: Платформа для автоматизації розгортання та управління сучасними веб-проєктами, з вбудованою CI/CD.
- Vercel: Оптимізована для хостингу статичних сайтів з легким інтегруванням для додатків Next.js.
- Azure Static Web Apps: Сервіс для хостингу статичних веб-додатків з безсерверними API.
- Власний виділений або VPS сервер: Існує багато різних хостинг-провайдерів для спільного використання.
Адміністрування та React App
Для інтерфейсу адміністрування та React-додатку потрібні наступні технології:
- Node.js: Середовище виконання JavaScript на стороні сервера для розробки бекенду адміністрування.
- Express.js: Фреймворк для веб-додатків на Node.js для побудови API для панелі адміністрування.
- React: Бібліотека для фронтенду, яка використовується для створення інтерфейсу адміністрування.
Форми та інші API
Для надсилання електронних листів та обробки замовлень з вебсайту можна використовувати такі технології та рішення:
- PHP: Мова сценаріїв на стороні сервера, яка може обробляти надсилання електронних листів та обробку замовлень.
- Python: Універсальна мова, яка також може використовуватися для створення API для надсилання електронних листів та обробки замовлень.
- Node.js: Також можна використовувати для створення API для обробки цих функцій.
Хостинг
Для хостингу бекенду Node.js та React-додатку можна розглянути наступні платформи:
- Heroku: Хмарна платформа як послуга (PaaS), яка підтримує кілька мов програмування.
- DigitalOcean: Пропонує масштабовану обчислювальну платформу з простим налаштуванням та управлінням.
- AWS (Amazon Web Services) EC2: Забезпечує гнучку обчислювальну потужність у хмарі.
- Google Cloud Platform (GCP) Compute Engine: Масштабовані, високопродуктивні віртуальні машини.
- Azure App Service: Повністю керована платформа для створення, розгортання та масштабування веб-додатків.
- Vercel: Оптимізована для додатків React, з підтримкою безсерверних функцій.
- Netlify: Також підтримує безсерверні функції та добре інтегрується з хостингом статичних сайтів.
Інтеграція CI/CD
Для автоматизації розгортання та управління безперервною інтеграцією та доставкою (CI/CD):
- GitHub Actions: Автоматизація робочих процесів безпосередньо з репозиторію GitHub.
- GitLab CI/CD: Інструмент безперервної інтеграції та доставки, вбудований у GitLab.
- CircleCI: Платформа безперервної інтеграції та доставки, яка автоматизує процеси розробки.
- Travis CI: Сервіс безперервної інтеграції, що використовується для побудови та тестування програмних проектів, розміщених на GitHub.
Безпека
HTTPS
Статичний вебсайт не обробляє жодної приватної інформації і просто представляє публічні статичні дані користувачам. Однак використання HTTPS є гарною практикою з кількох причин, включаючи оптимізацію для пошукових систем (SEO) та переваги у довірі користувачів.
Масштабованість
Мережа доставки контенту (CDN)
- Cloudflare: Забезпечує глобальну CDN з захистом від DDoS та оптимізацією продуктивності.
- AWS CloudFront: Швидкий сервіс CDN, що безпечно доставляє дані, відео, додатки та API.
- Google Cloud CDN: Інтегрується з сервісами Google Cloud для забезпечення кешування контенту на межі мережі.
Інші міркування
- HTTPS: Забезпечте, щоб усі статичні та динамічні частини вебсайту обслуговувалися через HTTPS для підвищення безпеки, SEO та довіри користувачів.
- Масштабованість: Переконайтеся, що рішення може витримати зростання трафіку та даних.
- Резервне копіювання та відновлення: Реалізуйте регулярне резервне копіювання та план відновлення.
- Моніторинг і логування: Використовуйте інструменти, такі як New Relic, Datadog або ELK Stack, для моніторингу та логування.
- Мережа доставки контенту (CDN): Використовуйте CDN, такі як Cloudflare або AWS CloudFront, для покращення розповсюдження статичного контенту.
Дотримуючись цих вимог та використовуючи зазначені платформи і технології, ви можете забезпечити надійну, масштабовану та ефективну платформу nanoweb.
Розробка
- Мови: JavaScript, HTML, CSS.
- Формати даних: Markdown, JSON, YAML, CSV.
- NPM.
- Bootstrap.
- Редактор, такий як Visual Studio Code.
Досягнення
- Навчання створенню коду з використанням інженерії підказок ChatGPT, Gemini.
- Розробка простого сервера на JavaScript.
- Використання фреймворку Bootstrap у проєкті.
Особливості
- Модульна архітектура.
- Розширювані плагіни.
- Всебічний API.
Встановлення
# Встановіть пакет nanoweb для node.js
npm install nanoweb
# Запустіть вебсервер для редагування та обслуговування вебсайту
nanoweb server
# Згенеруйте весь вебсайт у статичний контент
nanoweb render
# Згенеруйте конкретні дані (сторінку), пов'язану з файлом даних data/uk/news.yaml
nanoweb render uk/news.html
# Опублікуйте вебсайт через обраний метод публікації
nanoweb publish