sync public allowlist from private myoffice

This commit is contained in:
myoffice-sync
2026-08-05 10:36:17 +00:00
parent 6f7fd61ee9
commit 874796c860
720 changed files with 2841 additions and 69563 deletions
+110
View File
@@ -0,0 +1,110 @@
# MyOffice
**Layers**
Frontend <-> Backend <-> Services <-> Repositories <-> Database
*1. MyOffice.SPA*
Frontend layer
Angular
*2. MyOffice.Web*
Backend layer
ASP Core
*3. MyOffice.Data.Services*
Services layer
*5. MyOffice.Data.Models*
Models
*6. MyOffice.Data.Repositories*
Database layer
*7. MyOffice.DbContext*
AppDbContext
EntityFramework Core
*8. MyOffice.Migrations.Postgres*
Postgres Migrations
*9. MyOffice.Migrations.Sqlite*
Sqlite Migrations
**DataBase**
1. SQLite
2. PostgreSql
3. MS SQL
**Develompent**
1. Local IIS
2. Express IIS
**Authentication & Authorization**
1. OpenIddict (replaces IdentityServer4)
2. Custom UserStore + Identity V3 password hashes (legacy hashes rehashed on login)
3. SPA: email/password via ROPC (kept); Authorization Code + PKCE configured for interactive OIDC
4. Login with Google / Auth0 (`external` grant)
5. Details: [docs/AUTH.md](docs/AUTH.md), refactoring: [docs/REFACTORING_PLAN.md](docs/REFACTORING_PLAN.md)
**Build & Deploy**
1. Build with .bat
2. Deploy to Linux
**Get started**
1. Restore / build: `dotnet build MyOffice.Web/MyOffice.Web.csproj`
2. SPA: `cd MyOffice.SPA && npm install && npm start` (default http://localhost:4300)
3. Set startup project to `MyOffice.Web`, run (API default http://localhost:9100)
4. Ensure `FrontEnd:Host` matches the SPA origin (`appsettings.json`)
5. Tests: `dotnet test MyOffice.Tests/MyOffice.Tests.csproj`
6. Empty DB is auto-filled with demo users (rates at Jan 1, sample accounts/items/motions):
- `user_UAH@user_UAH.userUAH` / `user_UAH`
- `user_USD@user_USD.userUSD` / `user_USD`
- `user_EUR@user_EUR.userEUR` / `user_EUR`
**add site to IIS**
1. add
Site name:myproject
Physical path:...\MyProject\MyProject.Web
Port:9100
2. Select 'IIS', Run Backend (F5)
**Settings**
1. launchSettings.json
2. appsettings
appsettings.json
appsettings.Development.json
appsettings.Production.json
3. Optional: `AutoMapper:LicenseKey` (or env `AUTOMAPPER_LICENSE_KEY`) — free Community key from https://automapper.io if under ~$5M revenue. Empty works; you only get license warning logs.
**External providers**
1. Auth0
appsettings ExternalProviders:Auth0
2. Google
appsettings ExternalProviders:Google
**PowerShell scripts**
1. use 'Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass' to allow run *.ps1
2. params.txt
2.1. publish_folder=_Published (folder to publish)
2.2. linux_user=root (linux user)
2.3. linux_host=192.168.1.215 (linux host)
2.4. linux_folder=/var/www/MyProject (folder in linux)
**Build**
1. .\build.ps1
1.1. '.\build.ps1' - build Backend + Frontend
1.2. '.\build.ps1 dotnet' build Backend
1.3. '.\build.ps1 spa' build Frontend
**Docker demo** (SPA + API + Postgres + pgAdmin)
1. `cd Docker` then `.\build.ps1` (defaults :32080 / :32081 / :32082)
2. After code changes: `.\build.ps1 rebuild` (or `.\build.ps1 reset` to wipe DB + re-seed)
3. Details: [Docker/README.md](Docker/README.md)
**Proxmox** (Gitea public scripts + release artifact)
1. Maintainer: `.\proxmox\publish.ps1 -Tar``.\proxmox\release.ps1``.\proxmox\sync-public.ps1 -Push` (or Gitea Actions)
2. User on Proxmox: set `GITEA_URL` / `GITEA_OWNER` / `REPO_RAW_BASE`, run `myoffice.sh` (see [proxmox/README.md](proxmox/README.md))
3. Proxy nginx to `http://<ct-ip>:9100`
4. Lab SSH (no Gitea): `.\proxmox\deploy.ps1 -TargetHost <ct-ip>`