You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Clone the repository
git clone https://github.com/hmziqrs/ruxlog.git
cd ruxlog
# Copy environment file and adjust values
cp .env.example .env.dev
# Start infrastructure (Postgres, Valkey, RustFS)
just dev env=dev
# Run database migrations
just api migrate env=dev
# Start the backend API
just api-dev env=dev
# In separate terminals, start the frontends
just admin-dev env=dev
just consumer-dev env=dev
The consumer app will be available at http://localhost:1108 and the admin app at http://localhost:1107. The API runs on http://localhost:1100.
Project Architecture
Ruxlog is a Rust-first monorepo with the following layout:
backend/api/ Axum HTTP API, SeaORM models, migrations, services
frontend/
consumer-dioxus/ Public-facing blog (Dioxus 0.7, WASM)
admin-dioxus/ Admin console (Dioxus 0.7, WASM)
ruxlog-shared/ Shared domain types, stores, Tailwind config
oxcore/ HTTP client, base utilities
oxstore/ State management framework
oxform/ Form handling abstractions
oxui/ Reusable UI component library
docs/ Knowledge base and operational docs
scripts/ Shell helpers for DB setup, compose, storage
Backend: Axum with SeaORM (PostgreSQL), Valkey for sessions/caching, RustFS for object storage.
Frontends: Dioxus 0.7 targeting WebAssembly. Shared UI primitives and state management are in the ox* crates.
Feature flags: Most functionality is behind Cargo features. The basic default provides a minimal blog; full enables everything.
Components are PascalCase functions returning Element.
Keep routing in router.rs and side-effects in hooks.
Use StateFrame<T> for async operation states, not bare booleans.
Use the store pattern (GlobalSignal + use_* hook) for shared state.
Prefer edit_state_abstraction_with_list for edit/update handlers.
General
Follow conventions in subproject AGENTS.md files when present.
Keep PRs focused: one logical change per pull request.
Testing
Backend
# Unit and integration tests (all features enabled)cd backend/api
cargo test --features full
# Integration tests only
cargo test --test security_tests --features full
# Smoke tests (requires a running API instance)
bash tests/post_v1_smoke.sh
bash tests/auth_v1_smoke.sh
Frontends
# Check compilation with all featurescd frontend/admin-dioxus
cargo check -p admin-dioxus --features full
cd frontend/consumer-dioxus
cargo check -p consumer-dioxus --features full
# Shared cratescd frontend/ruxlog-shared && cargo testcd frontend/oxcore && cargo testcd frontend/oxstore && cargo testcd frontend/oxform && cargo test
Pull Request Process
Fork the repository and create a feature branch from master.
Develop your changes, running cargo fmt and cargo clippy regularly.
Test with cargo test --features full (backend) or cargo check -p <crate> --features full (frontends).
cargo check -p <crate> --features full passes (frontends)
New env vars documented in .env.example
Database schema changes include a migration
New API endpoints have a smoke test
docs/KNOWLEDGEBASE.md updated if behavior changed
Environments
Env
API
Postgres
Valkey
RustFS
Admin
Consumer
dev
:1100
:1101
:1102
:1105
:1107
:1108
stage
:1200
:1201
:1202
:1205
:1207
:1208
test
:1300
:1301
:1302
:1305
:1307
:1308
prod
:8888
configured
configured
configured
:8080
:8081
Useful Commands
just # List all available commands
just dev env=dev # Start infra services
just dev-full env=dev # Start everything in Docker
just down env=dev # Stop services
just reset env=dev # Stop and remove volumes
just test-db env=test # Reset test database
just api-dev env=dev # Run API with hot reload
just admin-dev env=dev # Run admin frontend
just consumer-dev env=dev # Run consumer frontend
just consumer-build env=prod # Production WASM build
just admin-bundle env=prod # Production admin bundle
Questions?
Check docs/KNOWLEDGEBASE.md for operational context and deployment notes.
Review AGENTS.md for repository-wide conventions.
Check subproject AGENTS.md files (backend/api/AGENTS.md, frontend/admin-dioxus/AGENTS.md, frontend/consumer-dioxus/AGENTS.md) for module-specific guidelines.