Sign inSign up

saashup/phonebiz

By saashup

•Updated 3 months ago

Image
0

277

saashup/phonebiz repository overview

⁠Metanoia — proof-of-concept storefront

An Apple-style demo store for the four-phone dumbphone lineup from Phonebiz_Supplier_Pitch.pdf. Flask + SQLite, with a simulated Stripe-style checkout (no real payments) and hand-drawn SVG product renders.

./ci.sh                # full local CI: build image, smoke-test it, deploy
./ci.sh --no-deploy    # build + test only

The pipeline: syntax check → docker build → boots a throwaway container on port 5099 → runs ci/smoke_test.sh against it (all routes, a full payment flow, SQLite persistence, input validation) → tags metanoia:latest → docker compose up -d. Any failing stage aborts the pipeline; the throwaway container is removed on exit either way.

Then open http://127.0.0.1:5000⁠

Orders persist in the metanoia-data volume across restarts and redeploys. Manage the deployed app with docker compose {logs,restart,down}. docker compose down -v also wipes the order database.

⁠Run (bare, without Docker)

python3 -m venv .venv                     # once
.venv/bin/pip install -r requirements.txt # once
.venv/bin/python app.py

⁠Pages

URLWhat it is
/Landing: hero, market stats, lineup, comparison table, 3-question phone-match quiz
/phone/<slug>Product pages: jelly-star, qin-f25, doov-r77-pro, dumber-mini
/checkout/<slug>Stripe-mimicking checkout (test mode)
/success/<order id>Order confirmation / receipt
/admin/ordersAll orders stored in SQLite

⁠Demo payment

Use card 4242 4242 4242 4242, any future expiry, any CVC. Card numbers are Luhn-validated client-side; only the last 4 digits are sent to the server. Orders land in metanoia.db (created and seeded on first run) with a fake pi_… payment reference.

⁠Releases

./release.sh patch     # 0.1.0 -> 0.1.1
./release.sh minor     # 0.1.0 -> 0.2.0
./release.sh major     # 0.1.0 -> 1.0.0
./release.sh 1.2.3     # explicit version

The script refuses to run unless you are on a clean, up-to-date main. It stamps VERSION, moves the [Unreleased] notes in CHANGELOG.md under the new version, runs the full CI gate (./ci.sh --no-deploy), then creates a Release vX.Y.Z commit, an annotated vX.Y.Z tag, pushes both, and tags the Docker image metanoia:X.Y.Z.

On GitHub, two Actions workflows take it from there:

  • CI (.github/workflows/ci.yml) — runs ./ci.sh --no-deploy on every push and pull request to main.
  • Release (.github/workflows/release.yml) — on every v* tag, re-runs the CI gate and publishes the GitHub Release with the notes for that version from CHANGELOG.md.

Document changes as you go under ## [Unreleased] in CHANGELOG.md; the release script turns them into the release notes. The running app shows its version in the site footer.

⁠Notes

  • Prices are indicative retail (CHF), derived from the sourcing figures in the pitch.
  • Product images are original SVG renders in static/img/, drawn to a shared scale to match each phone's described form factor.
  • Delete metanoia.db to reset products and orders.

Tag summary

Content type

Image

Digest

sha256:be0cf10e4…

Size

46.3 MB

Last updated

3 months ago

docker pull saashup/phonebiz