An open API service indexing awesome lists of open source software.

https://github.com/symonxdd/epic-switcher

Epic Switcher is designed to facilitate switching between accounts in the Epic Games Launcher (Windows only)
https://github.com/symonxdd/epic-switcher

account-switcher desktop-app epic-games epic-games-launcher github-actions golang open-source react utility vite wails windows

Last synced: about 14 hours ago
JSON representation

Epic Switcher is designed to facilitate switching between accounts in the Epic Games Launcher (Windows only)

Awesome Lists containing this project

README

          



Project Icon

Epic Switcher


- Epic Switcher is designed to facilitate switching between accounts in the Epic Games Launcher
- Currently only for Windows



Main screen

## ๐Ÿ“ฅ Downloads
- Grab the latest version from the [**Releases page**](https://github.com/symonxdd/epic-switcher/releases/latest)
- No install required


> [!TIP]
> GitHub 'Releases' is GitHub jargon for downloads.


โš ๏ธ What's the "Windows protected your PC" message?

### โš ๏ธ Windows SmartScreen Warning
When you run the app for the first time on Windows, you might see a warning like this:


SmartScreen Warning Screenshot a



SmartScreen Warning Screenshot b

### ๐Ÿง  What's actually happening?

This warning appears because the app is **new** and **hasn't yet built trust** with Microsoft SmartScreen, **not because the app is malicious**.

According to [Microsoft's official documentation](https://learn.microsoft.com/en-us/windows/security/operating-system-security/virus-and-threat-protection/microsoft-defender-smartscreen/), SmartScreen determines whether to show this warning based on:

- Whether the file matches a **known list of malicious apps** or is from a **known malicious site**
- Whether the file is **well-known and frequently downloaded**
- Whether the app is **digitally signed** with a costly trusted certificate

This is **just a generic warning** โ€” many indie or open-source apps trigger it until they build trust or pay for expensive certificates.

### โœ… How to dismiss and run

1. Click **"More info"**
2. Click **"Run anyway"**

### ๐Ÿคจ Why not prevent the warning

To fully avoid SmartScreen warnings on Windows, developers are expected to:

- Buy and use an **EV (Extended Validation) Code Signing Certificate**
- Have enough users download the app over time to build a strong **reputation score**

These certificates can cost **hundreds of dollars per year**, which isn't always feasible for solo developers or small open-source projects.
We're focused on keeping this tool free and accessible.
> For full details on how SmartScreen works, check out [Microsoft's official documentation](https://learn.microsoft.com/en-us/windows/security/operating-system-security/virus-and-threat-protection/microsoft-defender-smartscreen/)

Thanks for supporting open-source software! ๐Ÿ’™


## ๐Ÿ’ก Motivation
`throw new NotImplementedException();`


## ๐Ÿ–ผ๏ธ Screens

### Accounts page
![accounts-page](./docs/screens/accounts-page-with-add-button.png)


### Add Session modal
![add-account-modal](./docs/screens/add-account-modal.png)


### Manage page
![manage-page](./docs/screens/manage-page-with-hint.png)


### Delete Session modal
![delete-session-modal](./docs/screens/delete-session-modal.png)


### How it Works page
![/how-it-works](./docs/screens/how-it-works-page.png)


### Settings page
![settings-page](./docs/screens/settings-page-with-update-notice.png)


> [!NOTE]
> **Developer section below:** The following content is intended for developers interested in the inner workings of Epic Switcher.


## ๐Ÿ—‚๏ธ Project Layout
Here's a quick overview of the main files and folders:
```
epic-switcher/
โ”œโ”€โ”€ .github/
โ”‚ โ””โ”€โ”€ workflows/
โ”‚ โ””โ”€โ”€ release.yml # GitHub Actions workflow for cross-platform builds + releases
โ”‚
โ”œโ”€โ”€ backend/ # Go backend logic
โ”‚ โ”œโ”€โ”€ helper/ # Cross-platform utilities and command wrappers
โ”‚ โ”‚ โ”œโ”€โ”€ command_default.go # Default command runner (used on non-Windows)
โ”‚ โ”‚ โ””โ”€โ”€ command_windows.go # Windows-specific command runner (hides terminal window)
โ”‚ โ”œโ”€โ”€ models/ # Data structures (LoginSession)
โ”‚ โ””โ”€โ”€ app.go # Main backend bindings exposed to the frontend
โ”‚
โ”œโ”€โ”€ build/ # App icons, packaging resources, and Wails build outputs
โ”‚ โ””โ”€โ”€ appicon.png # Icon used for the app window and release packages
โ”‚
โ”œโ”€โ”€ frontend/ # Vue 3 frontend (served with Vite)
โ”‚ โ”œโ”€โ”€ src/
โ”‚ โ”‚ โ”œโ”€โ”€ main.jsx # React app entry point
โ”‚ โ”‚ โ””โ”€โ”€ App.jsx # Root React component
โ”‚ โ””โ”€โ”€ index.html # HTML entry point
โ”‚
โ”œโ”€โ”€ go.mod # Go dependencies (the Go module manifest)
โ”œโ”€โ”€ go.sum # Go dependency checksums
โ”œโ”€โ”€ main.go # App entry point (launches Wails)
โ”œโ”€โ”€ release.js # Script to automate version bumping and pushing a new release
โ”œโ”€โ”€ wails.json # Wails project configuration
โ””โ”€โ”€ README.md # You're reading it โœจ
```

> [!NOTE]
> The two files at `app/helper/command_*.go` are **OS-specific** and use [Go build tags](https://pkg.go.dev/go/build#hdr-Build_Constraints) to automatically select the correct one during build time. This ensures clean handling of platform quirks without any runtime checks.


## ๐Ÿ”ง Dev Prerequisites
- To build or run in dev mode, follow the [official Wails installation guide](https://wails.io/docs/gettingstarted/installation).
- You'll need Go installed, along with Node and a package manager like `npm`, `yarn`, or `pnpm`.


## โš™๏ธ Live Development
To start the app in dev mode:
```bash
wails dev
```


## ๐Ÿ“ฆ Release Build
To generate a production-ready, standalone binary:
```bash
wails build
```
This compiles the app and outputs a native executable, ready to distribute.


## ๐Ÿš€ Release Workflow
Epic Switcher uses a fully automated release pipeline powered by **GitHub Actions** and a helper script.

To create a new release, I run the release script:
```bash
npm run release
```

This will:

1. Prompt to select the version type (`Patch`, `Minor`, or `Major`)
2. Bump the version in `frontend/package.json`
3. Commit the version bump and create a Git tag
4. Push the commit and tag to GitHub

> [!NOTE]
> The version bump uses a clear commit message like: `chore: bump version to v1.2.3`

When a `v*` tag is pushed, the [`release.yml`](.github/workflows/release.yml) GitHub Actions workflow is triggered.

- ๐Ÿ”ง Builds a native binary for Windows (.exe).
- ๐Ÿ—ƒ Renames and organizes the build artifacts.
- ๐Ÿ“ Creates a new GitHub Release and uploads the binary with an OS-specific label.

๐Ÿ’ก The release process can be viewed under the repo's **Actions** tab


> [!NOTE]
> _Thanks to my previous work on my other project (AVD Launcher), I already had a release pipeline ready. It only required minor adjustments to fit this project._


## Built with โค๏ธ
This project is built with:
- [Wails](https://wails.io/)
- [Go](https://go.dev/)
- [React](https://react.dev/)

### Credits
- Logo symbol by [Epicons](https://www.svgrepo.com/svg/355688/user-a-solid) from [SVGRepo](https://www.svgrepo.com/)
- Demo screenshot background by [Unsplash](https://unsplash.com/photos/a-close-up-of-a-cell-phone-with-a-purple-background-Cp4dn8_6Y5I)


Made with ๐Ÿ’› by Symon


Powered by Wails