Submit Your App

Apps are published via GitHub pull request. It's free, version-controlled, and takes about 5 minutes.

Open a Pull Request

How to submit

  1. 1

    Fork the repository

    Fork classpadDev/store on GitHub.

  2. 2

    Add your app YAML

    Create a file in the apps/ folder named your-app-slug.yml. See the template below.

  3. 3

    Add your cover image

    Place a cover image in static/images/cover/YourApp.png and screenshots in static/images/your-slug/.

  4. 4

    Open a Pull Request

    Submit your PR against the main branch. A maintainer will review it — usually within a few days.

App YAML template

Copy the snippet below and fill in your details. Required fields are marked *.

id:          42               # next available integer — check existing files
slug:        my-awesome-app   # *  URL-safe, lowercase, hyphens only
name:        My Awesome App   # *  Display name shown in the store
author:      YourUsername     # *  Your username or real name
description: One-line summary of what your app does.  # *  ≤ 160 chars

# Download — at least one of these is required
downloadUrl: https://github.com/YourRepo/releases/download/v1.0/app.hh3  # *
detailsUrl:  https://github.com/YourRepo                                   # optional

format:  .hh3   # *  one of: .hh3 | .hh2 | .py

# Cover image path (relative to /store/ base)
image:    /store/images/cover/MyAwesomeApp.png   # *  see image guidelines below
position: center   # optional — CSS background-position, e.g. "top center"

# Screenshots (optional — portrait images preferred)
screenshots:
  - /store/images/my-awesome-app/screen1.png
  - /store/images/my-awesome-app/screen2.png

# Tags — pick one or more that apply
tags:          # *  at least one tag required
  - Game       # or: Action | Puzzle | Classic | Strategy | RPG | Arcade
  - Utility    # or: Programming | Education | Math | AI | Graphics | Emulator

# Statistics (optional — leave out if not known)
rating:      4.2    # float 0–5
ratingCount: "18"   # displayed as-is, e.g. "18" or "1.2k"
downloads:   "500+" # displayed as-is

# Developer support links (all optional)
website: https://yoursite.com
contact: yourname@example.com
privacy: https://yoursite.com/privacy

# Long description — Markdown supported, will render on the detail page
longDescription: |
  A longer description of your app.

  ## Features
  - Feature one
  - Feature two

  ## Controls
  | Key | Action |
  |-----|--------|
  | [EXE] | Do thing |

Image guidelines

🖼️

Cover image

File static/images/cover/YourApp.png
Format PNG
Recommended size 320 × 528 px
Aspect ratio ~0.606 (portrait)
Max file size 250 KB
The cover must be an original creation or a live screenshot from the running app on the ClassPad. Do not use unofficial artwork, copyrighted material, or AI-generated images.
📸

Screenshots

Folder static/images/your-slug/
Format PNG or JPG
Preferred size 320 × 528 px (portrait)
Landscape OK? Yes — the carousel adapts
Max per app 8 screenshots
Screenshots should show the actual running application. Scale-up from the 320×528 native resolution is fine; composited UI mockups are not.

Review criteria

  • The app must run on a CASIO ClassPad II (fx-CP400) under Hollyhock-2, Hollyhock-3, or as a PythonExtra script.
  • Source code or a release binary must be publicly accessible (GitHub, Gitea, etc.).
  • All images must be original captures from the running app. No copyrighted assets.
  • The YAML file must pass schema validation (the CI pipeline checks this automatically).
  • Apps must not contain malicious code or violate any applicable laws.
🔐

Site admin

Are you a store maintainer? Use the CMS to edit existing app entries directly in the browser
No need to clone the repo.

Open Admin CMS