UI/UX improvements: - Removed CI/CD and Container Management from public view (admin-only) - Added scroll-triggered fade-up animations for cards and tech items - Implemented parallax floating effect on hero background - Added animated gradient shift on title text - Created micro-interactions for all interactive elements Animation features: - Service cards: Subtle bounce on hover - Tech items: Scale + pulsing glow effect - Footer links: Animated underline slide-in - Hero badge: Floating + glowing pulse - Status badges: Subtle pulse animation - Section titles: Slide-in from top entrance Technical implementation: - Built IntersectionObserver in Rust for scroll animations - Added js-sys and DomTokenList web-sys features - CSS animations following 2024-2025 trends - Accessibility: Respects prefers-reduced-motion - Performance: GPU-accelerated transforms - Staggered delays for cascade effect Bundle size: ~25KB WASM + 10KB JS (still optimized) |
||
|---|---|---|
| .cargo | ||
| dist | ||
| html-old | ||
| src | ||
| .gitignore | ||
| .woodpecker.yml | ||
| Cargo.toml | ||
| Dockerfile | ||
| Makefile | ||
| README.md | ||
| docker-compose.yml | ||
| index.html | ||
| style.css | ||
README.md
railwayka.ru Landing Page
Modern business card website for railwayka.ru infrastructure, built with Rust + WebAssembly and deployed via dcape GitOps platform.
Features
- 🦀 Rust + WebAssembly - High-performance, compiled to WASM
- Modern dark theme with clean design
- Service cards showcasing current and planned services
- Technology stack descriptions
- Fully responsive layout
- Minimal bundle size (~19KB WASM)
Technology Stack
- Rust: Core application logic
- WebAssembly: Fast, portable binary format
- wasm-bindgen: Rust-WASM bindings
- web-sys: Web API bindings for Rust
- Nginx: Alpine-based web server
- Docker: Containerized deployment
- Traefik: Automatic HTTPS via Let's Encrypt
- Dcape: GitOps-based deployment
Deployment
This application uses GitOps workflow:
- Push code to Git repository
- Woodpecker CI automatically triggers
- Application builds and deploys
- Service goes live at https://railwayka.ru
Manual Deployment
# Clone repository
git clone https://git.dc.railwayka.ru/howl/railwayka-landing.git
cd railwayka-landing
# Configure environment
make config
# Edit .env.sample and rename to .env
mv .env.sample .env
# Build and deploy
make docker-build
make up
Building from Source
Prerequisites
- Rust (latest stable) - install from rustup.rs
- wasm-bindgen-cli -
cargo install wasm-bindgen-cli - wasm32 target -
rustup target add wasm32-unknown-unknown
Build Steps
# 1. Build Rust to WASM
cargo build --release --target wasm32-unknown-unknown
# 2. Generate JS bindings
wasm-bindgen --out-dir dist --target web \
target/wasm32-unknown-unknown/release/railwayka_landing.wasm
# 3. Copy static assets
cp index.html style.css dist/
# 4. Serve locally
cd dist
python3 -m http.server 8000
# Visit http://localhost:8000
Quick Build Script
For convenience, you can use this one-liner:
cargo build --release --target wasm32-unknown-unknown && \
wasm-bindgen --out-dir dist --target web target/wasm32-unknown-unknown/release/railwayka_landing.wasm && \
cp index.html style.css dist/
Project Structure
.
├── Cargo.toml # Rust project manifest
├── .cargo/
│ └── config.toml # Rust build configuration
├── src/
│ └── lib.rs # Main Rust/WASM code
├── index.html # HTML shell
├── style.css # Styling
├── dist/ # Built artifacts (committed to git)
│ ├── index.html
│ ├── style.css
│ ├── railwayka_landing.js
│ ├── railwayka_landing_bg.wasm
│ └── *.d.ts
├── html-old/ # Archived old HTML version
├── Makefile # Dcape app Makefile
├── docker-compose.yml # Service definition
├── Dockerfile # Nginx deployment
└── .woodpecker.yml # CI/CD pipeline
Why Rust + WASM?
- Performance: Near-native execution speed
- Size: Optimized bundle (~19KB WASM + 9KB JS)
- Type Safety: Rust's type system prevents common bugs
- Modern: Cutting-edge web technology
- Learning: Great opportunity to explore WASM ecosystem
License
MIT