# SQL Express MySQL Sync

One-way .NET Framework 4.8 sync engine: Access → SQL Express → MySQL shop catalogue.

## Stack & conventions
- Runtime: .NET Framework 4.8 (`net48`), x64 default for ACE OLEDB
- Source: Microsoft Access `.mdb` (ACE OLEDB 12.0)
- Staging: SQL Server Express (`sync_metadata` schema for run audit)
- Target: MySQL `shop_products` / `shop_sync_log` (CI4 shop)
- Branch naming: `feature/TASK-XXX-<slug>`
- Commit format: `[TASK-XXX] <verb> <object>`
- Trigger phrase for docs: `-docs`


## How to work here
- Copy `.env.example` to `.env`; never commit credentials.
- Build: `dotnet build SyncEngine.sln -c Release`
- Run: `SyncEngine\bin\Release\net48\SyncEngine.exe all`
- Only one `SyncEngine.exe` may run on a machine at a time (see [sync-architecture.md](sync-architecture.md#single-instance)).

## Documentation

| Guide | Description |
|-------|-------------|
| [getting-started.md](getting-started.md) | Prerequisites, setup, first run, deployment |
| [build-and-test.md](build-and-test.md) | Build, output artifacts, tests |
| [configuration.md](configuration.md) | `.env` and config file reference |
| [sync-architecture.md](sync-architecture.md) | Sync flows and diagrams |
| [access-sql-express-compatibility.md](access-sql-express-compatibility.md) | Access → SQL Express schema mirroring (types, constraints, stats) |
| [access-linked-sql-express.md](access-linked-sql-express.md) | AnniesApp `UsysSqlConfig`, `mdSqlExpress`, `frmSystem` SQL Express linking |
| [shop_products.md](shop_products.md) | MySQL target schema and field mapping |
