deytenit 9200529bf0 🤖 feat: migrate static S3 storage to Cloudflare R2 and add multi-locale SSG support (#70)
## Summary

- **Cloudflare R2 Migration**:
- Migrated `static.ermnvldmr.com` asset storage to Cloudflare R2 bucket
`com-ermnvldmr-static` (location `WEUR`).
- Added support for `COM_ERMNVLDMR_STATIC_PUBLIC_URL` fallback in
`@ermnvldmr/cli` to properly format public asset URLs for non-dotted
bucket names.
- Relocated public CA cert to
`/dev/ssl/certs/ErmnvldmrDevelopmentRootCA.pem` and updated
`REMOTE_ROOT_CA_URL` references in `@ermnvldmr/rsbuild-config` and
`ensure-dev-certs.mjs`.
- Configured R2 CORS policies using wildcards
(`https://*.ermnvldmr.com`, `https://ermnvldmr.com`,
`https://localhost.ermnvldmr.com*`, `http://localhost*`,
`https://direct.yandex.ru`, `https://*.direct.yandex.ru`,
`https://localhost.yandex.ru*`).
  - Enforced minimum TLS 1.2 on zone `ermnvldmr.com`.
- Updated encrypted `.env.dev` and GitHub secrets in both
`deytenit/ermnvldmr.com` and `deytenit/apex.ermnvldmr.com`.

- **Multi-locale SSG Support**:
- Added `NormalModuleReplacementPlugin` to SSR runner in
`@ermnvldmr/ssg` for automatic `.en.mdx` -> `.${locale}.mdx`
substitution during Russian builds.
- Added page metadata extraction (`getPageOptions`) in `@ermnvldmr/ssg`
for pre-rendered `<title>` and `<meta name="description">` tags.
- Added unit test suite for `createPage` and updated `services/www`
build scripts (`build:all`, `build:en`, `build:ru`, `dev:en`, `dev:ru`).
2026-10-30 00:05:44 +03:00
2026-02-26 22:25:25 +03:00
2026-03-07 20:59:03 +03:00

ermnvldmr.com

codecov

The monorepo powering the front pages of my own

Quick Start

Essential Information

You should learn the following, before exploring the project:

License

Composite (see Copyright & License)

Monorepo Structure

Services

  • www: Main website, built with Rsbuild, React, and MDX.
  • static: Static landing pages, built with Rsbuild and React.
  • docs: Documentation site, built with Hugo and the Hextra theme.

Packages

Who Are You?

Visitor

Just browsing or interested in the content.

Developer

Want to contribute or understand the codebase.

  • Setup: pnpm install
  • Development:
    • Website: pnpm www:dev
    • Documentation: pnpm docs:dev
    • UI Library: pnpm ui:dev
  • Development Guide: AGENTS.md
  • Component Development: pnpm ui:storybook
  • Testing: pnpm test or pnpm test:coverage (View results on Codecov)
  • Code Quality: pnpm lint and pnpm typecheck

Designer

Interested in the design system and components.

  • Components: Run pnpm ui:storybook to explore components
  • Design System: See packages/ui/src/styles/index.css for the color palette and theme
  • Theme Structure: CSS variables with light/dark mode support

Contributor

Want to submit improvements.

  • Workflow: Fork, branch from next, submit pull request
  • Code Standards: See AGENTS.md for conventions
  • Testing Required: All changes must include tests
  • Documentation: TSDoc required for all public exports
  • CI Requirements: Pull requests must pass all checks

Communication & Support

Source Code: Licensed under the GNU GPL 2.0.

Documentation & Informational Content: Technical documentation, guides, and informational articles within services/docs/content/ and services/www/content/ are licensed under Creative Commons Attribution 4.0 International (CC BY 4.0).

Creative Literature & Art: Poems, personal essays, artworks, photography, and other purely creative or literary works are individually copyrighted by their respective owners. These works are not open-source and are not covered by the GPL or CC BY 4.0 licenses. They remain under full copyright protection unless explicitly stated otherwise within their specific file metadata or directory.


AI Assistance: Significant portions of this project's source code were developed with the assistance of AI code generation tools.

Copyright © 2026 Vladimir Eremin

S
Description
No description provided
Readme
22 MiB
0 Stars 1 Watchers 0 Forks
Languages
JavaScript 93.2%
TypeScript 5.4%
MDX 0.8%
Shell 0.2%
CSS 0.2%
Other 0.1%