|
| 1 | +<p align="center"> |
| 2 | +<p align="center"> |
| 3 | + <img alt="TinShop" src="./logo.png" width="50%"> |
| 4 | +</p> |
| 5 | +<p align="center"> |
| 6 | + Your own personal shop right into tinfoil! |
| 7 | +</p> |
| 8 | + |
| 9 | +[](https://github.com/dblk/tinshop/actions) |
| 10 | +[](https://github.com/dblk/tinshop) |
| 11 | +[](https://godoc.org/github.com/dblk/tinshop/v0.0.1) |
| 12 | +[](https://goreportcard.com/report/github.com/dblk/tinshop) |
| 13 | +[](https://GitHub.com/dblk/tinshop/releases/) |
| 14 | + |
| 15 | +# Disclaimer |
| 16 | + |
| 17 | +This program **DOES NOT** encourage piracy at all! |
| 18 | +It was designed to reduce the time to download/install a game from the Nintendo eShop. |
| 19 | +In case you have a ADSL connection, to install latest `Zelda` ([14.4Gb](https://www.nintendo.com/games/detail/the-legend-of-zelda-breath-of-the-wild-switch/)) it can take ages! |
| 20 | + |
| 21 | +On top of that, if you have bought a game on eShop like [Jump Force](https://www.bandainamcoent.com/news/jump-force-sunsetting-announcement), once it is not anymore on the shop how can you install it again? |
| 22 | +Using your personal NSP dump, with `tinfoil` and `tinshop` everything should be fine and fast! |
| 23 | + |
| 24 | +# Use |
| 25 | + |
| 26 | +To proper use this software, here is the checklist: |
| 27 | +- [ ] _Optional:_ A proper configured `config.yaml` |
| 28 | + - [ ] Copy/Paste [`config.example.yaml`](https://github.com/DblK/tinshop/blob/master/config.example.yaml) to `config.yaml` |
| 29 | + - [ ] Comment/Uncomment parts in the config according to your needs |
| 30 | +- [ ] Games should have in their name `[ID][v0]` to be recognized |
| 31 | +- [ ] Retrieve binary from [latest release](https://github.com/DblK/tinshop/releases) or build from source (See `Dev` section below) |
| 32 | + |
| 33 | +Now simply run it and add a shop inside tinfoil with the address setup in `config` (or `http://localIp:3000` if not specified). |
| 34 | + |
| 35 | +# Features |
| 36 | + |
| 37 | +Here is the list of all main features so far: |
| 38 | +- [X] Automatically download `titles.US.en.json` if missing at startup |
| 39 | +- [X] Basic protection from forged queries (should allow only tinfoil to use the shop) |
| 40 | +- [X] Serve from several mounted directories |
| 41 | +- [X] Serve from several network directories (Using NFS) |
| 42 | +- [X] Display a webpage for forbidden devices |
| 43 | + |
| 44 | +# Dev or build from source |
| 45 | + |
| 46 | +I suggest to use a tiny executable [gow](https://github.com/mitranim/gow) to help you during the process (hot reload, etc..). |
| 47 | +For example I use the following command to develop `gow -c run .`. |
| 48 | + |
| 49 | +If you want to build `TinShop` from source, please run `go build`. |
| 50 | + |
| 51 | +And then, simply run `./tinshop`. |
| 52 | + |
| 53 | +## Want to do cross-build generation? |
| 54 | + |
| 55 | +Wanting to generate all possible os binaries (macOS, linux, windows) with all architectures (arm, amd64)? |
| 56 | +Here is the command `goreleaser release --snapshot --skip-publish --rm-dist`. |
| 57 | + |
| 58 | +Dead simple, thanks to Golang! |
| 59 | + |
| 60 | +# Roadmap |
| 61 | + |
| 62 | +You can see the [roadmap here](https://github.com/DblK/tinshop/projects/1). |
| 63 | + |
| 64 | +If you have any suggestions, do not hesitate to participate! |
| 65 | + |
| 66 | +# Q & A |
| 67 | + |
| 68 | +## Why use this instead of `X` (NUT or others software)? |
| 69 | + |
| 70 | +It's dead simple, and no dependencies! It's just a single small executable. |
| 71 | +Easier to install games without connecting switch or by updating SD card (Nightmare if you are on macOS). |
| 72 | + |
| 73 | +The upcoming features will also be a huge advantage against others software. |
| 74 | + |
| 75 | +## Where do I put my games? |
| 76 | + |
| 77 | +By default, `TinShop` will look into the `games` directory relative to `tinshop` executable. |
| 78 | + |
| 79 | +However in the `config.yaml` file, you can change this. |
| 80 | +In the `sources` section, you can have the following: |
| 81 | +- `directories`: List of directories where you put your games |
| 82 | +- `nfs`: List of NFS shares that contains your games |
| 83 | + |
| 84 | + |
| 85 | +## Can I set up a `https` endpoint? |
| 86 | + |
| 87 | +Yes, you can! |
| 88 | +Use a reverse proxy (like [traefik](https://github.com/traefik/traefik), [caddy](https://github.com/caddyserver/caddy), nginx...) to do tls termination and forward to your instance on port `3000`. |
| 89 | + |
| 90 | +## How can I add a `basic auth` to protect my shop? |
| 91 | + |
| 92 | +TinShop **does not** implement basic auth by itself. |
| 93 | +You should configure it inside your reverse proxy. |
| 94 | + |
| 95 | +For other type of protection, you can whitelist (__*__) your own switch and this will do the trick. |
| 96 | + |
| 97 | +__*__ Feature not yet implemented! |
| 98 | + |
| 99 | +## I have tons of missing title displayed in `tinfoil`, what should I do? |
| 100 | + |
| 101 | +First, download and replace the latest [`titles.US.en.json`](https://github.com/AdamK2003/titledb/releases/download/latest/titles.US.en.json) available (or delete it, it will be automatically downloaded at startup). |
| 102 | +If this does not solve your issue, then you should use custom titledb entry (__*__) to describe those which are missing. |
| 103 | + |
| 104 | +__*__ Feature not yet implemented! |
| 105 | + |
| 106 | +# Credits |
| 107 | + |
| 108 | +I would like to give back thanks to the people who helped me with or without knowing! |
| 109 | +- [Bogdan Rosu Creative](https://www.iconfinder.com/icons/353439/basket_purse_shopping_cart_ecommerce_shop_buy_online_icon) for his shop icon. |
| 110 | +- [Dono](https://github.com/Donorhan) for his support and tests. |
| 111 | +- [AdamK2003](https://github.com/AdamK2003/titledb) for his up-to-date [`titles.US.en.json`](https://github.com/AdamK2003/titledb/releases/download/latest/titles.US.en.json) and his answers on discord. |
0 commit comments