{"id":50815444,"url":"https://github.com/ilia-ae/deposit.mayday.software","last_synced_at":"2026-06-13T09:04:10.380Z","repository":{"id":351701448,"uuid":"1202529550","full_name":"ilia-ae/deposit.mayday.software","owner":"ilia-ae","description":"🌏🔓 Open-source cryptographic deposit for source code authorship and timestamp evidence. Angular frontend + Cloudflare Worker API + browser extension (Chrome/Firefox).","archived":false,"fork":false,"pushed_at":"2026-05-18T06:13:55.000Z","size":7793,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-18T07:54:33.772Z","etag":null,"topics":["2026","angular","browser-extension","chrome-extension","cloudflare-workers","cryptographic-timestamp","firefox-extension","proof-of-authorship"],"latest_commit_sha":null,"homepage":"https://deposit.mayday.software","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ilia-ae.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-06T05:46:50.000Z","updated_at":"2026-05-18T06:13:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ilia-ae/deposit.mayday.software","commit_stats":null,"previous_names":["razqqm/deposit.mayday.software","ilia-ae/deposit.mayday.software"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ilia-ae/deposit.mayday.software","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilia-ae%2Fdeposit.mayday.software","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilia-ae%2Fdeposit.mayday.software/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilia-ae%2Fdeposit.mayday.software/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilia-ae%2Fdeposit.mayday.software/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ilia-ae","download_url":"https://codeload.github.com/ilia-ae/deposit.mayday.software/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilia-ae%2Fdeposit.mayday.software/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34278159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2026","angular","browser-extension","chrome-extension","cloudflare-workers","cryptographic-timestamp","firefox-extension","proof-of-authorship"],"created_at":"2026-06-13T09:04:09.628Z","updated_at":"2026-06-13T09:04:10.372Z","avatar_url":"https://github.com/ilia-ae.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mayday.software deposit\n\nOpen-source cryptographic deposit for source code authorship and timestamp evidence.\n\n- License: MIT (see [LICENSE](LICENSE)) \n- Production app: [https://deposit.mayday.software/](https://deposit.mayday.software/)\n- Monorepo: Angular frontend + Cloudflare Worker API relay + Browser extension (Chrome / Firefox)\n\n## What this project does\n\nThe product creates independent evidence layers for software artifacts:\n\n1. WHAT: SHA-256 fingerprint of files and manifest content.\n2. WHO: cryptographic signature (roadmap item for browser GPG/OpenPGP flow).\n3. WHEN: timestamp anchors (OpenTimestamps/Bitcoin and RFC 3161 TSA providers).\n\nThe evidence is designed to be verifiable without trusting this service.\n\n## Product positioning\n\nThis product is an evidence layer, not a government registration authority.\n\n- It helps prove existence and integrity at a certain time.\n- It does not automatically grant legal presumptions in every jurisdiction.\n- In Russia, state software registration under Civil Code Article 1262 is a separate mechanism.\n\nFor regional legal background, see [docs/RESEARCH_CIS.md](docs/RESEARCH_CIS.md).\n\n## High-level workflow\n\n```text\nfiles/folder -\u003e SHA-256 -\u003e manifest.cff -\u003e signature -\u003e timestamp proofs\n```\n\nExpected output files:\n\n- `manifest.cff`\n- `manifest.cff.asc` (when signature flow is enabled)\n- `manifest.cff.ots`\n- `manifest.cff.asc.ots`\n\n## Verification model\n\nThird parties can independently verify proofs:\n\n1. Verify signature (`gpg --verify ...`) when signature is present.\n2. Verify timestamp (`ots verify ...`) against Bitcoin anchor data.\n3. Optionally validate RFC 3161 tokens with OpenSSL.\n\nThe verification chain should remain valid even if this website is unavailable.\n\n## Architecture\n\n```text\nBrowser SPA (Angular)\n  - local hashing and manifest generation\n  - certificate rendering\n  - timestamp request assembly\n         |\n         v\nCloudflare Worker (worker/src/index.ts)\n  - serves SPA static assets\n  - relays /api/tsa/* and /api/ots/* to allowlisted upstream providers\n         |\n         v\nExternal timestamp services (RFC 3161 + OTS calendars)\n```\n\n### Browser extension\n\nChrome MV3 / Firefox extension that brings deposit and page-capture features directly into the browser toolbar.\n\n```text\nextension/\n├── manifest.json              # Manifest V3 (Chrome)\n├── manifest.firefox.json      # Firefox overrides (gecko.id, background.scripts)\n├── angular.json               # Angular build config (outputHashing: none)\n├── tsconfig.json / tsconfig.app.json\n├── package.json               # Dependencies (Angular 21, webextension-polyfill, asn1js, pkijs, openpgp)\n├── scripts/\n│   └── build.mjs              # Post-build: esbuild for bg/content, manifest copy, _locales\n├── src/\n│   ├── main.ts                # Bootstrap + WORKER_BASE = \"https://deposit.mayday.software\"\n│   ├── app.config.ts          # Zoneless, animations, inline i18n loader\n│   ├── index.html             # Popup HTML (400×600)\n│   ├── styles.scss            # Design tokens + dark mode via prefers-color-scheme\n│   ├── tokens.scss            # Design tokens (shared with frontend)\n│   ├── popup/                 # Shell with 3 tabs (Deposit / Capture / History)\n│   ├── tabs/\n│   │   ├── deposit/           # Drag-and-drop → SHA-256 → CITATION.cff → anchors\n│   │   ├── capture/           # Page snapshot (HTML + screenshot) → anchors\n│   │   └── dashboard/         # Deposit history, badge, link to website\n│   ├── deposit/               # Hashing, manifest, anchor services (from frontend)\n│   │   └── anchors/           # RFC 3161, OpenTimestamps, Ethereum\n│   ├── ui/                    # UI components (from frontend)\n│   ├── shared/services/       # ExtensionStorageService, CaptureService\n│   ├── background/            # MV3 service worker (badge, context menu)\n│   ├── content/               # Content script for HTML capture (\u003c400 bytes)\n│   └── i18n/                  # EN + RU (inline + _locales)\n└── dist/extension/browser/    # Build output (load in Chrome or Firefox)\n```\n\nBuild output sizes (production):\n\n| Component | Size |\n|---|---|\n| Initial (Angular runtime + anchor logic + UI) | ~544 KB |\n| Lazy (animations) | ~68 KB |\n| Background service worker | ~11 KB |\n| Content script | ~400 bytes |\n| Styles | ~6 KB |\n| **Total** | **~630 KB** |\n\n### Technical notes\n\n- Frontend: Angular 21, static SPA.\n- Extension: Angular 21, MV3 popup (Chrome + Firefox), esbuild for background/content scripts.\n- i18n: EN and RU via `@ngx-translate`.\n- Worker: no user file storage; relay-only model for timestamp requests.\n- Deploy: single Cloudflare Workers deployment from repository root.\n- CI: GitHub Actions — lint, build (frontend + extension + worker), see [.github/workflows/ci.yml](.github/workflows/ci.yml).\n\n## Local development\n\n### Frontend only\n\n```bash\ncd frontend\nnpm install\nnpm start\n# http://localhost:4200/\n```\n\nUse this mode for UI work. Timestamp anchoring requires Worker API endpoints.\n\n### Full stack (frontend + worker)\n\n```bash\n# from repository root\nnpm install\nnpx wrangler dev\n# http://localhost:8787\n```\n\nIf frontend sources change, rebuild static assets:\n\n```bash\ncd frontend \u0026\u0026 npm run build\n```\n\n## Production build\n\n### Frontend\n\n```bash\ncd frontend \u0026\u0026 npm run build\n# output: frontend/dist/mayday-software/browser/\n```\n\n### Browser extension\n\n```bash\n# Chrome\ncd extension \u0026\u0026 npm install \u0026\u0026 npm run build\n# output: extension/dist/extension/browser/\n\n# Firefox\ncd extension \u0026\u0026 npm run build:firefox\n\n# From repository root (Chrome)\nnpm run build:ext\n```\n\nLoading the extension:\n\n- **Chrome:** `chrome://extensions` → Developer mode → Load unpacked → select `extension/dist/extension/browser/`\n- **Firefox:** `about:debugging` → This Firefox → Load Temporary Add-on → select `extension/dist/extension/browser/manifest.json`\n\n### Packaging for distribution\n\n```bash\ncd extension\nnpm run package:chrome   # → dist/mayday-ext-chrome.zip\nnpm run package:firefox  # → dist/mayday-ext-firefox.zip\n```\n\n## Deploy\n\n```bash\nnpx wrangler login\nnpm run deploy\n```\n\n`wrangler.toml` points to:\n\n- static assets directory: `frontend/dist/mayday-software/browser`\n- worker entrypoint: `worker/src/index.ts`\n- SPA fallback mode via `not_found_handling = \"single-page-application\"`\n\n## Documentation map\n\n- [docs/README.md](docs/README.md)\n- [docs/PWA_SETUP.md](docs/PWA_SETUP.md)\n- [docs/PRE_PROD_SPRINT.md](docs/PRE_PROD_SPRINT.md)\n- [docs/MARKETING_REFRESH_2026.md](docs/MARKETING_REFRESH_2026.md)\n- [docs/RESEARCH_CIS.md](docs/RESEARCH_CIS.md)\n- [docs/AUDIT_2026-04-16.md](docs/AUDIT_2026-04-16.md)\n\n## External references\n\n- CITATION File Format: [https://citation-file-format.github.io/](https://citation-file-format.github.io/)\n- OpenTimestamps: [https://opentimestamps.org/](https://opentimestamps.org/)\n- Angular Service Worker docs: [https://angular.dev/ecosystem/service-workers/getting-started](https://angular.dev/ecosystem/service-workers/getting-started)\n- Cloudflare Workers Static Assets docs: [https://developers.cloudflare.com/workers/static-assets/](https://developers.cloudflare.com/workers/static-assets/)\n\n---\n\n## Actuality\n\n\u003e ✅ Verified 2026-04-16 — all sections, commands, and links confirmed accurate.\n\u003e Extension (Chrome MV3 + Firefox) added to architecture and build documentation.\n\u003e Re-verified 2026-04-16 — manifest version aligned, .gitignore gaps fixed, embed.js endpoint documented.\n\n## RU summary\n\n`mayday.software deposit` - это open-source сервис для криптографического депонирования программных артефактов.\n\n- Основной домен продукта: `deposit.mayday.software`.\n- Сервис фиксирует:\n  - что было создано (хеш),\n  - кем подписано (подпись, по roadmap),\n  - когда существовало (таймштампы OTS/Bitcoin и RFC 3161).\n- Позиционирование: дополнительный слой доказательств, а не замена государственной регистрации.\n- Архитектура: Angular SPA + Cloudflare Worker relay + браузерное расширение (Chrome/Firefox) без хранения пользовательских файлов.\n- Подробности по правовым аспектам СНГ: [docs/RESEARCH_CIS.md](docs/RESEARCH_CIS.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filia-ae%2Fdeposit.mayday.software","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filia-ae%2Fdeposit.mayday.software","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filia-ae%2Fdeposit.mayday.software/lists"}