Blog UI built with Yew and WebAssembly, styled with Bootstrap.
- Posts system – page, list, create, edit, delete and publish
- Authors system – page, list and edit authors
- Tags system – create and manage tags
- Comments system – list, create and delete comments
- Minimal administration panel (roles, bans and access control)
- Authentication via Telegram, Yandex or internal accounts
- Server‑Side Rendering (SSR) for posts, authors and tags
- SEO‑friendly metadata for search and social networks
- Search across posts and authors
- Telegram notifications when a post is published
- Image mirroring and deployment helpers
- Rust with the
wasm32-unknown-unknown
targetrustup target add wasm32-unknown-unknown
- Trunk for building and serving the app
cargo install trunk
The UI is configured through environment variables. Some of the most common ones are listed below:
Variable | Description | Required? |
---|---|---|
YANDEX_CLIENT_ID |
OAuth identifier for Yandex authentication | Only with yandex feature |
API_URL |
Base URL of the backend API, e.g. http://127.0.0.1:3000/api |
Yes (client) |
TELEGRAM_BOT_LOGIN |
Telegram bot login for notifications | Only with telegram feature |
TITLE |
Title of the blog | Yes |
DESCRIPTION |
Meta description for SEO | Yes |
KEYWORDS |
Comma‑separated keywords | No |
ACCORDION_JSON |
JSON definition for the landing page accordion | Yes |
See src/lib.rs
for the full list and defaults.
Start a development server with live reloading:
trunk serve
Generate optimized assets:
trunk build --release
Unit tests can be executed with:
cargo test
- Project board
- UI (current repository)
- Server
- Notifications service
- Images processor
- Deployment scripts
This project is licensed under the MIT License.