# SHD.build A SvelteKit application for creating and sharing loadouts for *The Division Resurgence*. The first increment includes a responsive discovery page, an anonymous builder draft saved to local storage, authentication UI boundaries, an admin data-management preview, and an embedded Turso database foundation. See `docs/architecture.md` for the staged implementation plan. ## Database The server uses the in-process `@tursodatabase/database` package with a local SQLite-compatible file—there is no Turso Cloud dependency. Create or update the local database: ```sh npm run db:migrate ``` The default file is `data/shd-build.db`. Copy `.env.example` to `.env` to override its location. Custom avatars are stored as metadata-free 256 × 256 WebP files. Set `TDR_AVATAR_STORAGE_PATH` to a persistent, writable directory in production; it defaults to `data/avatars`. The same configuration works on Windows and Linux. Seed the initial local accounts once: ```sh npm run db:seed-users ``` This creates administrator `Aewyn` and standard user `Quartermaster`. Strong temporary passwords are generated and displayed once; only salted Argon2id hashes are stored. ## Develop ```sh npm run dev ``` ## Encrypted environment files Development and production settings live in the committed, encrypted `.env.development` and `.env.production` files. Private decryption keys live only in the ignored `.env.keys` file; back it up in a password manager. ```sh npm run env:decrypt # decrypt both files for editing npm run env:encrypt # encrypt both files again npm run env:stage # encrypt and git-add both files npm run env:decrypt:development # operate on one environment npm run env:decrypt:production ``` The repository pre-commit hook runs `env:stage`, so a commit always replaces staged plaintext environment files with encrypted versions. Git does not expose a pre-add hook, so use `npm run env:stage` instead of directly adding these two files when possible. Never commit or lose `.env.keys`. Production should receive `DOTENV_PRIVATE_KEY_PRODUCTION` through its secret manager rather than copying the keys file onto the server. ## Validate ```sh npm run check npm run build ``` Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). ## Creating a project If you're seeing this, you've probably already done this step. Congrats! ```sh # create a new project npx sv create my-app ``` To recreate this project with the same configuration: ```sh # recreate this project npx sv@0.16.5 create --template minimal --types ts --install npm . ``` ## Developing Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: ```sh npm run dev # or start the server and open the app in a new browser tab npm run dev -- --open ``` ## Building To create a production version of your app: ```sh npm run build ``` You can preview the production build with `npm run preview`. > To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. The shared visual language and dashboard conventions are documented in [docs/DESIGN_SYSTEM.md](docs/DESIGN_SYSTEM.md).