Skip to main content

max / makenotwork

2.8 KB · 86 lines History Blame Raw
1 # MakeNotWork
2
3 Creator platform with 0% platform fee. Only Stripe's ~3% processing fee applies. Live at [makenot.work]https://makenot.work.
4
5 ## Monorepo Structure
6
7 ```
8 MNW/
9 server/ MNW server (Rust/Axum, PostgreSQL, HTMX)
10 multithreaded/ Forum software (Rust/Axum, MNW OAuth integration)
11 pom/ Production operations monitor (health checks, alerts)
12 mnw-cli/ CLI tool for MNW platform
13 shared/ Shared libraries
14 docengine/ Markdown rendering + documentation engine
15 tagtree/ Hierarchical tag standard
16 synckit-client/ SyncKit cloud sync client SDK
17 s3-storage/ S3-compatible storage abstraction
18 tauri-updater-ui/ OTA update UI components
19 ```
20
21 ## MNW Server
22
23 Built with Rust (2024 edition), Axum, PostgreSQL, Askama templates, and HTMX.
24
25 ### Prerequisites
26
27 - **Rust** (stable toolchain, 1.85+, 2024 edition)
28 - **PostgreSQL** (16+)
29 - **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.
30
31 ### Build and Run
32
33 All commands run from the `MNW/server/` directory:
34
35 ```sh
36 # Development
37 cargo run
38
39 # Run unit tests (no database needed)
40 cargo test
41
42 # Run integration tests (needs a running PostgreSQL instance)
43 TEST_DATABASE_URL="postgres://user:pass@host:5432/postgres" cargo test --test integration
44
45 # Admin CLI
46 cargo run --bin mnw-admin
47 ```
48
49 Production deploys run through Sando, the build-and-release controller (`sandod`, on fw13). See Deployment below.
50
51 ### Key Integrations
52
53 - **Stripe Connect** -- creator payouts, subscriptions, checkout
54 - **Postmark** -- transactional email (verification, password reset, purchase receipts)
55 - **S3** (Hetzner Object Storage) -- file storage for creator uploads
56 - **SyncKit** -- cloud sync and device management API for client applications
57 - **Sentry** -- error tracking
58 - **git2** -- built-in git source browser
59
60 ### Deployment
61
62 Runs on a Hetzner VPS with systemd and Caddy (reverse proxy + TLS). No Docker.
63
64 Deploys go through Sando, the pipeline controller (`sandod`, on fw13). Sando
65 builds the server natively, runs the gate tiers, and swaps the release on the
66 prod host. Deploying by hand is not supported: no `deploy.sh`, no `scp`, no
67 building on the prod box. The operator procedure lives in
68 `sando/deploy/README.md`.
69
70 The old `server/deploy/deploy.sh` is retained only as a cutover reference and
71 must not be used.
72
73 ### Testing
74
75 Each integration test creates and drops its own PostgreSQL database, so tests run in full isolation. Unit tests have no external dependencies.
76
77 ```sh
78 cd server/
79 cargo test # Unit tests
80 cargo test --test integration # Integration tests (needs TEST_DATABASE_URL)
81 ```
82
83 ## License
84
85 PolyForm Noncommercial 1.0.0
86