storeshot 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/CONTRIBUTING.md +75 -0
- package/LICENSE +21 -0
- package/README.md +142 -0
- package/SECURITY.md +25 -0
- package/THIRD_PARTY_LICENSES.txt +668 -0
- package/THIRD_PARTY_NOTICES.md +93 -0
- package/dist/cli.js +1458 -0
- package/dist/cli.js.map +1 -0
- package/dist/ui/artwork/tabler/LICENSE +21 -0
- package/dist/ui/artwork/tabler/README.md +23 -0
- package/dist/ui/artwork/tabler/filled/grid-pattern.svg +13 -0
- package/dist/ui/artwork/tabler/filled/laurel-wreath-1.svg +13 -0
- package/dist/ui/artwork/tabler/filled/laurel-wreath-2.svg +13 -0
- package/dist/ui/artwork/tabler/filled/laurel-wreath-3.svg +13 -0
- package/dist/ui/artwork/tabler/filled/laurel-wreath.svg +13 -0
- package/dist/ui/artwork/tabler/filled/sparkles.svg +15 -0
- package/dist/ui/artwork/tabler/filled/stars.svg +15 -0
- package/dist/ui/artwork/tabler/outline/scribble.svg +19 -0
- package/dist/ui/artwork/tabler/outline/underline.svg +20 -0
- package/dist/ui/assets/AssetsView-D0lbK5rm.js +1 -0
- package/dist/ui/assets/SetEditor-BBUlgGT0.js +440 -0
- package/dist/ui/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/dist/ui/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/dist/ui/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/dist/ui/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/dist/ui/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/dist/ui/assets/index-DPDaBFld.js +10 -0
- package/dist/ui/assets/index-DfZBqsD3.css +2 -0
- package/dist/ui/assets/shared-BiRg4I01.js +1 -0
- package/dist/ui/index.html +14 -0
- package/dist/ui/licenses/geist-OFL-1.1.txt +93 -0
- package/dist/ui/mockup-bundles/frameup-free/LICENSE +21 -0
- package/dist/ui/mockup-bundles/frameup-free/README.md +12 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/imac-pro.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/imac-retina.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/imac.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-air-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-air-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-air-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-mini-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-mini-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-mini-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-pro-11-silver-landscape.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-pro-11-silver-portrait.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-pro-11-space-gray-landscape.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-pro-11-space-gray-portrait.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-pro-13-silver-landscape.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-pro-13-silver-portrait.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-pro-13-space-gray-landscape.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-pro-13-space-gray-portrait.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/ipad-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-black.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-green.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-pro-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-pro-max-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-pro-max-midnight-green.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-pro-max-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-pro-max-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-pro-midnight-green.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-pro-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-pro-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-purple.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-red.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-white.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-11-yellow.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-13-pro-max.svg +5 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-13-pro.svg +5 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-14-pro-max-no-cutout.svg +4 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-14-pro-max.svg +5 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-14-pro-no-cutout.svg +4 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-14-pro.svg +5 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-15-pro-max-no-cutout.svg +4 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-15-pro-max.svg +5 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-15-pro-no-cutout.svg +4 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-15-pro.svg +5 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-16-pro-max-no-cutout.svg +10 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-16-pro-max.svg +11 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-16-pro-no-cutout.svg +4 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-16-pro.svg +5 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-17-pro-max-no-cutout.svg +4 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-17-pro-max.svg +5 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-17-pro-no-cutout.svg +4 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-17-pro.svg +5 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-5c-blue.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-5c-green.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-5c-red.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-5c-white.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-5c-yellow.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-5s-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-5s-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-5s-space-gray.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-6s-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-6s-plus-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-6s-plus-rose-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-6s-plus-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-6s-plus-space-gray.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-6s-rose-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-6s-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-6s-space-gray.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-7-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-7-jet-black.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-7-matte-black.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-7-plus-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-7-plus-jet-black.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-7-plus-matte-black.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-7-plus-rose-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-7-plus-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-7-rose-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-7-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-8-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-8-plus-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-8-plus-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-8-plus-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-8-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-8-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-se-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-se-rose-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-se-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-se-space-gray.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-x-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-x-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-xr-blue.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-xr-coral.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-xr-red.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-xr-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-xr-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-xr-yellow.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-xs-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-xs-max-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-xs-max-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-xs-max-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-xs-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/iphone-xs-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/macbook-air-13-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/macbook-air-13-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/macbook-air-13-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/macbook-gold.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/macbook-pro-13-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/macbook-pro-13-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/macbook-pro-15-silver.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/macbook-pro-15-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/macbook-space-grey.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/pro-display-xdr.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/assets/thunderbolt-display.png +0 -0
- package/dist/ui/mockup-bundles/frameup-free/storeshot-mockups.json +2279 -0
- package/docs/mockup-bundles.md +104 -0
- package/docs/releasing.md +155 -0
- package/package.json +85 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to StoreShot will be documented in this file. The format is
|
|
4
|
+
based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and versioning
|
|
5
|
+
follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [0.1.0] - 2026-07-16
|
|
10
|
+
|
|
11
|
+
Initial public pre-release of the local-first StoreShot CLI and visual App Store
|
|
12
|
+
screenshot editor.
|
|
13
|
+
|
|
14
|
+
This `0.x` release line is under active development and may contain breaking
|
|
15
|
+
project-format or API changes.
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Contributing to StoreShot
|
|
2
|
+
|
|
3
|
+
Thank you for helping improve StoreShot. The project is in active development,
|
|
4
|
+
so small, focused changes with a clear user benefit are easiest to review.
|
|
5
|
+
|
|
6
|
+
## Before you start
|
|
7
|
+
|
|
8
|
+
- Search existing issues before opening a new one.
|
|
9
|
+
- For a bug, include the StoreShot version, Node.js version, operating system,
|
|
10
|
+
reproduction steps, and the smallest safe example project you can share.
|
|
11
|
+
- For a substantial feature or architecture change, open an issue first so the
|
|
12
|
+
approach and scope can be agreed before implementation.
|
|
13
|
+
- Never attach private screenshots, signing material, tokens, or proprietary
|
|
14
|
+
mockup assets to an issue.
|
|
15
|
+
|
|
16
|
+
## Development setup
|
|
17
|
+
|
|
18
|
+
StoreShot requires Node.js 22.12 or newer and npm.
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm ci
|
|
22
|
+
npm run dev
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The development command uses the ignored `playground/` directory. To test a
|
|
26
|
+
different project without opening the browser:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm run storeshot -- dev /tmp/storeshot-project --no-open
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Project principles
|
|
33
|
+
|
|
34
|
+
- Keep StoreShot local-first and folder-based. Do not introduce accounts, a
|
|
35
|
+
remote backend, or a database without prior agreement.
|
|
36
|
+
- Treat the directory passed to `storeshot dev` as a strict filesystem boundary.
|
|
37
|
+
- Keep Node-only code out of the browser bundle and browser-only code out of the
|
|
38
|
+
CLI runtime.
|
|
39
|
+
- Prefer readable types and direct solutions over compatibility layers or clever
|
|
40
|
+
abstractions. The `0.x` format may evolve when a cleaner design warrants it.
|
|
41
|
+
- Prefer the existing source-owned shadcn/Base UI components for interactive UI.
|
|
42
|
+
- Do not commit `dist/`, `node_modules/`, `playground/` contents, or local
|
|
43
|
+
`mockup-bundles/` and `element-bundles/` archives.
|
|
44
|
+
|
|
45
|
+
## Licensing new dependencies and assets
|
|
46
|
+
|
|
47
|
+
Every new dependency and redistributed asset must have a license that permits
|
|
48
|
+
its intended use and distribution.
|
|
49
|
+
|
|
50
|
+
- Add package dependencies through npm so `package-lock.json` records their SPDX
|
|
51
|
+
license metadata.
|
|
52
|
+
- Run `npm run licenses` after changing a package whose code or assets are
|
|
53
|
+
included in StoreShot's distributable output.
|
|
54
|
+
- Preserve upstream copyright notices and license files for bundled artwork,
|
|
55
|
+
fonts, and mockups.
|
|
56
|
+
- Record an asset's source URL and exact revision in its local README or manifest.
|
|
57
|
+
- Do not add assets copied from commercial products or websites without explicit
|
|
58
|
+
redistribution permission.
|
|
59
|
+
|
|
60
|
+
Update `THIRD_PARTY_NOTICES.md` when attribution changes.
|
|
61
|
+
|
|
62
|
+
## Validation and pull requests
|
|
63
|
+
|
|
64
|
+
Run the full gate before opening a pull request:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npm run check
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
For UI changes, also exercise the affected workflow in the browser. Keep commits
|
|
71
|
+
focused, explain user-visible behavior in the pull request, and call out project
|
|
72
|
+
format changes explicitly.
|
|
73
|
+
|
|
74
|
+
By submitting a contribution, you agree that it may be distributed under the
|
|
75
|
+
project's MIT License.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Mikko Kutilainen
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# StoreShot
|
|
2
|
+
|
|
3
|
+
StoreShot is a local-first, agent-native CLI and visual editor for creating
|
|
4
|
+
App Store screenshots. Run it in a folder, edit screenshot sets in the browser,
|
|
5
|
+
and keep the complete project as ordinary assets and JSON files that humans,
|
|
6
|
+
scripts, and AI coding agents can all inspect and change.
|
|
7
|
+
|
|
8
|
+
> **Pre-release:** StoreShot is currently at `0.1.0`. It is under active
|
|
9
|
+
> development, changes quickly, and does not yet promise backward compatibility.
|
|
10
|
+
> It supports Apple App Store screenshots today; Google Play support is planned.
|
|
11
|
+
|
|
12
|
+
StoreShot is already used in production for the iOS app
|
|
13
|
+
[Lokimaps](https://www.lokimaps.com/).
|
|
14
|
+
|
|
15
|
+
## Why StoreShot?
|
|
16
|
+
|
|
17
|
+
Many existing screenshot tools were designed as closed, manual design silos.
|
|
18
|
+
Their project data is difficult to inspect, version, automate, or hand to an AI
|
|
19
|
+
agent, which makes routine localization and release work unnecessarily awkward.
|
|
20
|
+
|
|
21
|
+
StoreShot keeps the workflow open and file-based. The visual editor is useful
|
|
22
|
+
for hands-on design, while the same project can be reviewed, generated, or
|
|
23
|
+
updated by an agent through normal filesystem tools. There is no account,
|
|
24
|
+
database, hosted project, or remote backend.
|
|
25
|
+
|
|
26
|
+
## What it can do
|
|
27
|
+
|
|
28
|
+
- Organize raw screenshots, brand artwork, logos, and reusable image assets.
|
|
29
|
+
- Create ordered screenshot sets for a locale and Apple device family.
|
|
30
|
+
- Arrange text, shapes, images, recolorable artwork, and device mockups on a
|
|
31
|
+
free-form canvas.
|
|
32
|
+
- Use undo/redo, copy/paste, alignment guides, layers, keyboard movement, and
|
|
33
|
+
canvas zoom.
|
|
34
|
+
- Export an entire set as full-resolution PNG files in a ZIP archive.
|
|
35
|
+
- Import portable device-mockup bundles with explicit frame geometry and license
|
|
36
|
+
metadata.
|
|
37
|
+
- Persist everything inside the selected project directory.
|
|
38
|
+
|
|
39
|
+
## Quick start
|
|
40
|
+
|
|
41
|
+
StoreShot requires Node.js 22.12 or newer.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm install --global storeshot
|
|
45
|
+
mkdir app-store-screenshots
|
|
46
|
+
storeshot dev app-store-screenshots
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The command opens a local workspace at `http://127.0.0.1:4173`. To use a
|
|
50
|
+
different port or avoid opening the browser:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
storeshot dev ./app-store-screenshots --port 4174 --no-open
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
The default server is bound to the loopback interface. Be deliberate when using
|
|
57
|
+
`--host` to expose it to another interface.
|
|
58
|
+
|
|
59
|
+
## Project format
|
|
60
|
+
|
|
61
|
+
StoreShot creates a transparent, portable project structure:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
app-store-screenshots/
|
|
65
|
+
├── storeshot.json
|
|
66
|
+
├── assets/
|
|
67
|
+
│ ├── screenshots/
|
|
68
|
+
│ ├── brand/
|
|
69
|
+
│ ├── logos/
|
|
70
|
+
│ └── other/
|
|
71
|
+
├── mockup-bundles/
|
|
72
|
+
│ └── my-device-frames/
|
|
73
|
+
│ ├── storeshot-mockups.json
|
|
74
|
+
│ ├── LICENSE
|
|
75
|
+
│ └── assets/
|
|
76
|
+
└── sets/
|
|
77
|
+
├── english-iphone-a1b2c3d4.json
|
|
78
|
+
└── finnish-iphone-e5f6g7h8.json
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Each set stores its locale, device, output dimensions, ordered screenshots, and
|
|
82
|
+
canvas layers. StoreShot only serves files inside the selected project boundary.
|
|
83
|
+
Project assets and imported bundles remain subject to their own licenses.
|
|
84
|
+
|
|
85
|
+
The editor can load fonts from [Bunny Fonts](https://fonts.bunny.net/) on demand.
|
|
86
|
+
The project itself remains local, but selecting a hosted font requires a network
|
|
87
|
+
request to Bunny Fonts.
|
|
88
|
+
|
|
89
|
+
## Device mockups
|
|
90
|
+
|
|
91
|
+
The built-in Apple frames come from the MIT-licensed
|
|
92
|
+
[FrameUp Free](https://github.com/amirmun99/FrameUp-Free) project. StoreShot also
|
|
93
|
+
supports project-local bundles and lets users import all or selected frames.
|
|
94
|
+
|
|
95
|
+
See the [mockup bundle format](docs/mockup-bundles.md) for the manifest and
|
|
96
|
+
geometry specification.
|
|
97
|
+
|
|
98
|
+
## Develop from source
|
|
99
|
+
|
|
100
|
+
From a checkout of this repository or your fork:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
npm ci
|
|
104
|
+
npm run dev
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
`npm run dev` starts the CLI in watch mode against the ignored `playground/`
|
|
108
|
+
project and serves the React UI with Vite hot reload.
|
|
109
|
+
|
|
110
|
+
Useful commands:
|
|
111
|
+
|
|
112
|
+
| Command | Purpose |
|
|
113
|
+
| --- | --- |
|
|
114
|
+
| `npm run dev` | Run the development CLI and UI against `playground/` |
|
|
115
|
+
| `npm run storeshot -- dev <dir> --no-open` | Run the unbuilt CLI against another folder |
|
|
116
|
+
| `npm run typecheck` | Type-check the project |
|
|
117
|
+
| `npm run build` | Build the CLI and browser UI |
|
|
118
|
+
| `npm run licenses` | Regenerate bundled dependency license texts |
|
|
119
|
+
| `npm run check` | Run license, type, and production-build validation |
|
|
120
|
+
|
|
121
|
+
The repository also includes `AGENTS.md` and project-local Codex configuration
|
|
122
|
+
for agent-assisted development.
|
|
123
|
+
|
|
124
|
+
Maintainers can follow the [release guide](docs/releasing.md) to publish a new
|
|
125
|
+
version through npm trusted publishing and GitHub Actions.
|
|
126
|
+
|
|
127
|
+
## Contributing and security
|
|
128
|
+
|
|
129
|
+
StoreShot is early software, and focused issues and pull requests are welcome.
|
|
130
|
+
Read [CONTRIBUTING.md](CONTRIBUTING.md) before making a substantial change. Please
|
|
131
|
+
report vulnerabilities according to [SECURITY.md](SECURITY.md), not in a public
|
|
132
|
+
issue.
|
|
133
|
+
|
|
134
|
+
## License
|
|
135
|
+
|
|
136
|
+
StoreShot is released under the [MIT License](LICENSE).
|
|
137
|
+
|
|
138
|
+
Third-party packages, fonts, icons, and device frames retain their own licenses.
|
|
139
|
+
See [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) and
|
|
140
|
+
[THIRD_PARTY_LICENSES.txt](THIRD_PARTY_LICENSES.txt) for attribution and license
|
|
141
|
+
details. StoreShot is not affiliated with or endorsed by Apple Inc. Apple,
|
|
142
|
+
App Store, iPhone, iPad, Apple Watch, and Mac are trademarks of Apple Inc.
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Security policy
|
|
2
|
+
|
|
3
|
+
## Supported versions
|
|
4
|
+
|
|
5
|
+
StoreShot is pre-release software. Security fixes are made against the latest
|
|
6
|
+
`0.x` release and the current default branch; older prereleases are not
|
|
7
|
+
maintained.
|
|
8
|
+
|
|
9
|
+
## Reporting a vulnerability
|
|
10
|
+
|
|
11
|
+
Please do not report a vulnerability in a public issue. Use the repository's
|
|
12
|
+
private vulnerability reporting feature on GitHub. If private reporting is not
|
|
13
|
+
available, contact the maintainer privately through the contact information on
|
|
14
|
+
their GitHub profile.
|
|
15
|
+
|
|
16
|
+
Include the affected version, impact, reproduction steps, and any suggested
|
|
17
|
+
mitigation. Do not include real user screenshots, credentials, tokens, or other
|
|
18
|
+
sensitive project data. You should receive an acknowledgement within seven days,
|
|
19
|
+
although this volunteer project cannot guarantee a resolution timeline.
|
|
20
|
+
|
|
21
|
+
## Local server model
|
|
22
|
+
|
|
23
|
+
StoreShot serves a user-selected project directory and binds to `127.0.0.1` by
|
|
24
|
+
default. Exposing the service with `--host` changes its threat model. Only do so
|
|
25
|
+
on a trusted network, and do not place untrusted files in the project directory.
|