# MyDay > A self-hosted employee **time, absence & reporting** app by **Sechpoint**. > Delivered as a **PWA** for mobile and desktop. **Single-tenant** โ€” one company per instance. **Status:** ๐Ÿšง **planning / pre-alpha.** No application code yet. The design of record is [`PROJECT_PLAN.md`](PROJECT_PLAN.md). --- ## What it will do | Area | | |---|---| | **Org structure** | users, the manager hierarchy, departments, positions | | **Time** | presence and timesheets (a per-user mode) | | **Absence** | leave requests, approvals, balances | | **Reporting** | rollups and aggregations | Built as **one Go binary**: a small core (`MyDay.auth` โ€” identity, sessions, the door) plus drop-in **modules**. --- ## Running it > **Not yet available** โ€” nothing is built. These are the intended steps. ```bash # 1. configure cp config.example.yaml config.yaml # then edit; config.yaml is gitignored # 2. build go build -o myday ./cmd/myday # 3. run ./myday ``` --- ## โš ๏ธ First run โ€” do NOT expose it publicly The **first user becomes the top admin** (the root of the chain). So the instance bootstraps **loopback-only**, running a **`/setup` wizard** until that admin exists. ```bash # on the server it listens on 127.0.0.1:8080 only (config.example.yaml) ssh -L 8080:127.0.0.1:8080 user@server # from your workstation # then open http://127.0.0.1:8080/setup and complete the wizard ``` > **Reach the app over `localhost` / `127.0.0.1` โ€” not a hostname.** With an `https://` `base_url` > the CSRF and session cookies are marked **`Secure`**, so they are **not** sent over plain > `http://`; and only a **loopback** origin counts as a trustworthy/secure context for the > browser's **WebAuthn** dialogs. So for first run and any human testing, open the app at > **`http://localhost:8080`** or **`http://127.0.0.1:8080`** (via the tunnel above) โ€” never at a > bare server hostname. Only **after** the top admin exists should you put MyDay behind a reverse proxy and expose it. --- ## Documentation | | | |---|---| | [`PROJECT_PLAN.md`](PROJECT_PLAN.md) | the plan & decision log of record | | [`AGENT.md`](AGENT.md) | instructions for AI agents working here | | [`docs/specs/`](docs/specs/) | implementation specs | | [`config.example.yaml`](config.example.yaml) | configuration template | --- ## Security - Secrets live in **`config.yaml`** (gitignored) โ€” **never commit them**. - Auth is **Passkey (primary) + TOTP (fallback)**. - See `PROJECT_PLAN.md` ยง10 for the deferred-security register and its **beta gate**. --- ## License TBD.