Commit Graph

117 Commits

Author SHA1 Message Date
65aa9d66d3 ci: add Docker build and publish workflow
Add GitHub Actions workflow job to build and publish Docker images to GitHub Container Registry. Images are pushed on master branch commits and tags, with appropriate tagging strategy including semver, branch refs, and SHA.
2025-12-11 17:28:43 -06:00
e23c01e4fd refactor: reorganize backend modules and create lib.rs 2025-12-11 17:22:05 -06:00
d4454d7367 refactor: extract handlers to handlers/ directory 2025-12-11 17:22:05 -06:00
1a2b8c4407 refactor: convert to Cargo workspace structure 2025-12-11 17:21:10 -06:00
702205e181 refactor(docker): optimize multi-stage build with cargo-chef and layer caching
Improves Docker build performance and security through better layer caching,
dependency pre-building, and a minimal non-root runtime container.

- Add cargo-chef for Rust dependency caching across demo and server builds
- Separate planner and builder stages for optimal layer reuse
- Use pnpm with frozen lockfile for reproducible frontend builds
- Switch to debian:12-slim runtime with non-root user (uid 1000)
- Add health check endpoint monitoring
- Strip release binaries to reduce image size
- Pre-compress frontend assets during build
2025-12-11 12:18:57 -06:00
006055cb7f chore: add Justfile, apply clippy fixes, add frontend type checking
- Add Justfile with comprehensive development workflow commands (check,
lint, build, docker, etc.)
- Add @astrojs/check and typescript dependencies for frontend type
checking
2025-12-11 12:15:51 -06:00
8129975ecc chore(deps): resolve cargo-audit warnings, update dependencies 2025-12-11 12:07:22 -06:00
3ba9250cca refactor: apply clippy suggestions 2025-12-11 12:01:45 -06:00
82ac8caa88 refactor: migrate to envy for type-safe config parsing
Replace manual environment variable parsing with envy for structured configuration. Updates dotenv to dotenvy (maintained fork), adds dedicated Config struct with Railway-specific settings, and consolidates all environment variable access. Upgrades reqwest to 0.12.
2025-12-11 11:55:39 -06:00
a9e3ab8337 perf: optimize release profile for smaller binary size
Configure release profile with aggressive size optimizations:
- Set opt-level to 'z' for minimum binary size
- Enable LTO for better optimization across crates
- Strip debug info to reduce final binary size
- Use panic=abort to eliminate unwinding machinery
- Reduce codegen units to 1 for maximum optimization
- Keep overflow checks for safety in production
2025-12-11 11:51:30 -06:00
24c2c2b3c5 ci: add Renovate config and GitHub Actions quality workflow
Add automated dependency management with Renovate and comprehensive CI
checks including formatting, clippy, audit, and frontend build validation.
2025-12-11 11:50:59 -06:00
280f01bb28 feat: dynamic deployment id fetching in debug mode for development 2025-08-20 18:03:05 -05:00
1ffdd2b6eb fix(demo): avoid logging assumptions about state 2025-08-20 17:51:16 -05:00
e0bb0f52f0 feat: dynamically set PORT from Dockerfile, add .env.example 2025-08-20 17:40:09 -05:00
d20f298da5 feat: fetch builds logs for Railway on startup 2025-08-20 17:40:09 -05:00
8431290ea7 fix: RAILWAY_PUBLIC_DOMAIN envvar not resolving, add fallback & warning, change Dockerfile interpolation 2025-08-20 16:45:18 -05:00
d0b17fdc94 Improve README, add badges, add demo links, add Security section 2025-01-06 16:09:10 -06:00
eed66f96d7 Use proper buildLog variable for download button 2025-01-06 15:37:47 -06:00
b22d92dfb3 Add screenshots to README 2025-01-06 15:37:29 -06:00
cdbc474819 Pass ARG RAILWAY_PUBLIC_DOMAIN 2025-01-02 16:56:06 -06:00
a5e93f2afc debug log RAILWAY_PUBLIC_DOMAIN 2025-01-02 16:46:30 -06:00
8e0ca95c8a Use buildLog href 2025-01-02 15:54:06 -06:00
e68384abcf Use connectionStatus enum properly, further improve mobile scaling for screen-sm basis 2025-01-02 15:46:42 -06:00
721d0afc73 Add reconnection option, prevent autoplay, remove state on disconnect, mobile height adjustment 2025-01-02 15:40:58 -06:00
f18f4a0c7c Finish up highlight, minor increase in time, switch to react-use-webhook, client only rendering 2025-01-02 15:21:29 -06:00
178eb40c1a animate-pulse-border 2025-01-02 14:55:35 -06:00
bb224eed43 Audio via ref, DownloadButton key, highlight by token not index, deleteDownload onClick 2025-01-02 14:55:26 -06:00
d71433fa52 Fix minor react/badge issues 2025-01-02 14:54:56 -06:00
452f663884 Add delete_download incoming message handler, add future message logging for transmit 2025-01-02 14:39:27 -06:00
7736b0694e Fix CORS options/ordering 2025-01-02 13:46:27 -06:00
0663d38834 Remove unnecessary logs, switch to simple window.open download, suppressHydrationWarning 2025-01-02 13:46:02 -06:00
2a2daefd8c DownloadButton progress 2025-01-02 13:33:40 -06:00
5f2dcfa5c9 build log inte gration, delete-download-token name, fix className 2025-01-02 13:33:17 -06:00
4ae4e2c64e build_log sent with executables, use Same-Site = None in dev, partitioned cookies, CORS OPTIONS 2025-01-02 13:32:34 -06:00
3de98ca7e2 class vs className 2025-01-02 10:39:30 -06:00
3e97becf67 Rename DeleteSessionToken to DeleteDownloadToken 2025-01-02 10:37:28 -06:00
e61c4715e1 Switch from preact to react 2025-01-02 10:36:58 -06:00
e8fe3e8ec9 Setup websocket reconnection logic 2025-01-01 11:21:32 -06:00
d2ec94f578 demo: Use strong binary size reduction for release profile 2024-12-23 21:14:39 -06:00
dc332d954b server: switch to hexadecimal form, use proper download token instead of session id as key, stop panicing on unavailable websocket 2024-12-23 21:10:33 -06:00
a4f8aa1f23 demo: separate request function, switch to 0xABCD hex form, add debug / forced token env, add port to localhost default host 2024-12-23 21:09:52 -06:00
846a9adb51 fix preact.devtools config 2024-12-23 20:24:58 -06:00
c288c52517 include const time host info for reqwest endpoint 2024-12-23 20:24:50 -06:00
0ab8ad9660 Copy send_message result for send_state 2024-12-23 19:56:12 -06:00
bc39909f3c Apply Session middleware to all but /notify with separate router, improve /notify key error handling 2024-12-23 19:53:26 -06:00
de3dacda77 Fix notify sending TokenAlert to incorrect session id, use 'notify' id for TokenAlert name 2024-12-23 19:36:51 -06:00
b5a5c47ece Use query not param, anyhow for errors, websocket tx result tracing 2024-12-23 19:22:42 -06:00
61efe6c194 Add /notify route, fix filename extension generation, Message u32 id, 08x format pad 2024-12-23 19:13:22 -06:00
45bd617ba7 Remove extra type, fix deleteDownload type for useSocket 2024-12-23 19:12:20 -06:00
f228cbc7e4 Add token request step to demo with reqwest 2024-12-23 19:12:09 -06:00