# QuoteForge

Local-first desktop web app for server configuration, quotation, and project work.

Runtime model:
- user work is stored in local SQLite;
- MariaDB is used only for setup checks and background sync;
- HTTP server binds to loopback only.

## What the app does

- configuration editor with price refresh from synced pricelists;
- projects with variants and ordered configurations;
- vendor BOM import and PN -> LOT resolution;
- revision history with rollback;
- rotating local backups.

## Run

```bash
go run ./cmd/qfs
```

Useful commands:

```bash
go run ./cmd/qfs -migrate
go test ./...
go vet ./...
make build-release
```

On first run the app creates a minimal `config.yaml`, starts on `http://127.0.0.1:8080`, and opens `/setup` if DB credentials were not saved yet.

## Documentation

- Shared engineering rules: [bible/README.md](bible/README.md)
- Project architecture: [bible-local/README.md](bible-local/README.md)
- Release notes: `releases/<version>/RELEASE_NOTES.md`

`bible-local/` is the source of truth for QuoteForge-specific architecture. If code changes behavior, update the matching file there in the same commit.

## Repository map

```text
cmd/                  entry points and migration tools
internal/             application code
web/                  templates and static assets
bible/                shared engineering rules
bible-local/          project architecture and contracts
releases/             packaged release artifacts and release notes
config.example.yaml   runtime config reference
```
