Build from Source
S3 Manager is built with Electron Forge and Vite. These instructions are for developers who want to run or package the app from source.
Prerequisites
Section titled “Prerequisites”| Requirement | Version |
|---|---|
| Node.js | 22 or newer |
| npm | bundled with Node.js |
No native module compilation is required. S3 Manager uses node-sqlite3-wasm (a WebAssembly build of SQLite) specifically to avoid Electron ABI rebuilds.
Clone and install
Section titled “Clone and install”git clone https://github.com/NoiXdev/s3Manager.gitcd s3Managernpm installRun in development
Section titled “Run in development”npm startThis launches the app via electron-forge start with Vite’s dev server powering the renderer (hot-reload). Changes to main-process files require a full restart of npm start; renderer changes hot-reload automatically.
Run the test suite
Section titled “Run the test suite”npm testRuns the Vitest test suite once. To run in watch mode:
npm run test:watchLint and type-check
Section titled “Lint and type-check”npm run lintnpm run typechecklint runs ESLint over all .ts and .tsx files. typecheck runs tsc --noEmit.
Build distributable installers
Section titled “Build distributable installers”npm run makenpm run make runs electron-forge make, which packages the app and then builds platform-specific installers for the current OS:
| Platform | Artifact |
|---|---|
| macOS | DMG (via @electron-forge/maker-dmg) |
| Windows | Squirrel installer (via @electron-forge/maker-squirrel) |
| Linux | .deb (via @electron-forge/maker-deb) and .rpm (via @electron-forge/maker-rpm) |
Output lands in the out/ directory.
Package without installers
Section titled “Package without installers”npm run packageProduces the platform-specific app bundle in out/ without wrapping it in an installer. Useful for quick smoke-testing the packaged build.
macOS signing and notarization
Section titled “macOS signing and notarization”Code signing and notarization only run when Apple credentials are present in the environment (APPLE_API_KEY_ID, APPLE_API_KEY, APPLE_API_ISSUER). A local npm run make produces an unsigned build and is not affected by the absence of those variables.
See docs/macos-signing.md in the repository for CI setup details.