# MakeNotWork Creator platform with 0% platform fee. Only Stripe's ~3% processing fee applies. Live at [makenot.work](https://makenot.work). ## Monorepo Structure ``` MNW/ server/ MNW server (Rust/Axum, PostgreSQL, HTMX) multithreaded/ Forum software (Rust/Axum, MNW OAuth integration) pom/ Production operations monitor (health checks, alerts) mnw-cli/ CLI tool for MNW platform shared/ Shared libraries docengine/ Markdown rendering + documentation engine tagtree/ Hierarchical tag standard synckit-client/ SyncKit cloud sync client SDK theme-common/ Theme loading + parsing (TOML themes) s3-storage/ S3-compatible storage abstraction themes/ TOML theme definitions (24 themes) tauri-updater-ui/ OTA update UI components ``` ## MNW Server Built with Rust (2024 edition), Axum, PostgreSQL, Askama templates, and HTMX. ### Prerequisites - **Rust** (stable toolchain, 1.85+, 2024 edition) - **PostgreSQL** (16+) - **Environment variables** via `.env` file: database URL, Stripe keys, Postmark token, S3 credentials, Sentry DSN, session secret, JWT secret. See `server/.env.example` for the full list. ### Build and Run All commands run from the `MNW/server/` directory: ```sh # Development cargo run # Run unit tests (no database needed) cargo test # Run integration tests (needs a running PostgreSQL instance) TEST_DATABASE_URL="postgres://user:pass@host:5432/postgres" cargo test --test integration # Admin CLI cargo run --bin mnw-admin ``` Production deployment uses `cargo zigbuild` for cross-compilation to x86_64 Linux. See `server/deploy/deploy.sh`. ### Key Integrations - **Stripe Connect** -- creator payouts, subscriptions, checkout - **Postmark** -- transactional email (verification, password reset, purchase receipts) - **S3** (Hetzner Object Storage) -- file storage for creator uploads - **SyncKit** -- cloud sync and device management API for client applications - **Sentry** -- error tracking - **git2** -- built-in git source browser ### Deployment Runs on a Hetzner VPS with systemd and Caddy (reverse proxy + TLS). No Docker. ```sh cd server/ # Full deploy (cross-compile + upload + restart) ./deploy/deploy.sh # Binary-only deploy (skip config files) ./deploy/deploy.sh --quick # Config-only deploy (Caddyfile, systemd unit, static assets, error pages) ./deploy/deploy.sh --config ``` ### Testing Each integration test creates and drops its own PostgreSQL database, so tests run in full isolation. Unit tests have no external dependencies. ```sh cd server/ cargo test # Unit tests cargo test --test integration # Integration tests (needs TEST_DATABASE_URL) ``` ## License PolyForm Noncommercial 1.0.0