DIN MAANEKNUDEHISTORIE — SOURCE BUILD AND DEPLOYMENT Licence: project-owned application, prompts and native service are AGPL-3.0-only. See LICENSE, THIRD-PARTY-NOTICES.txt and FONT-LICENSES.txt. Third-party licences remain in force. Full native binding and Swiss core sources, original headers and native build inputs are included in source-dependencies.tar.gz. 1. Use Node 22 and Bun with text lockfile support. Install the application with bun install --frozen-lockfile. Use bun run build for a production build. The existing Lovable Vite plugin configures TanStack Start and Cloudflare output. No paid AI call is made by source packaging or building. 2. Supply your own Supabase, AI, payment and email credentials as server-side environment values. Never put them in source control. Variable names and runtime validation are in src/lib/core/config.ts, src/lib/ai/gateway.server.ts, src/integrations/supabase/ and src/lib/email-templates/transport-config.ts. The optional one-off admin QA action requires EMAIL_QA_RECIPIENT, an address authorized by the operator. It is not a customer input or automatic send. 3. Apply the SQL files in the exact order printed by: node scripts/migration-order.mjs Use that order on your own PostgreSQL/Supabase instance. The platform and custom migrations use separate counters: Jupiter candidate and preview queue migrations must follow 0042 even though the platform names them 0029 and 0030. Applied filenames and journal records are preserved. The Drizzle journal does not register all custom migrations: do not rely on it alone or sort filenames numerically. Read the deployment notes in docs/VALIDATED-CHECKOUT.txt and docs/EMAIL-DELIVERY-EVENTS.md. Supply your own storage buckets and cron secrets. Do not reuse production IDs or private data from another operator. Older status notes under docs/ describe their original changes; README.md records the current status. 4. GeoNames sources and hashes are in src/lib/geo/manifest.ts. Download and unpack cities500.zip and DK.zip from the listed official dump URLs, run scripts/geonames/build.py in that directory, and upload the resulting places.tsv.gz into your own reference-data bucket. Upstream daily dumps can change: update the source/version/artifact hashes to match your chosen data. 5. Build services/astro/Dockerfile with services/astro as its build context. npm ci installs the exact native dependencies in its package-lock.json. To inspect/rebuild the included native source, unpack source-dependencies.tar.gz; sweph/binding.gyp and sweph/package.json describe compilation from the C/C++ source. The native service needs Node 22, a persistent volume, an API key, licence acknowledgement and the settings in services/astro/OPERATIONS.txt. App and native engine must run the same source release. Keep live sales off until host, source offer, concurrency and delivery acceptance are complete. 6. node source-release.mjs builds a deterministic archive and a manifest of every included file. The shared footer links to /source/index.html. The Vite build hook runs this step so the archive follows changes even when a host bypasses package scripts. The dev server also refreshes the offer on source requests; a failed scan stops that request rather than serving stale code. Check that /source/index.html and its archive are available to actual users without administrator access on the deployed host. A private GitHub URL is not a substitute for this source offer. The source release deliberately excludes .env files, repository history, node_modules, local scratch scripts, generated PDFs, logs and runtime storage. Dependencies can be retrieved at the versions/integrities in the lockfiles; package provenance and licence notices are also listed in the notice file. Review notices if dependencies change; regenerating the archive is not a replacement for updating third-party attribution. MULTI-PRODUCT STATUS (5 October 2026) The platform has separate Moon, Kari annual-transit and Sam Jupiter adapters. Jupiter candidate-1 is a zero-value internal test edition, never a sale edition. It requires manual technical, astrological, language and layout review. A real synthetic preview reached PDF and was held for review; editorial corrections must be accepted before a customer release. The owner confirmed USD 21 for the separate commercial edition; complete payment/delivery acceptance before enabling it. Historical preparation notes under docs/ are not a deployment status ledger.