coffee-cli 0.1.0__tar.gz

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.
@@ -0,0 +1,26 @@
1
+ ## Summary
2
+
3
+ -
4
+
5
+ ## Runnable Demo
6
+
7
+ Command:
8
+
9
+ ```bash
10
+ coffee
11
+ ```
12
+
13
+ What should be visible:
14
+
15
+ -
16
+
17
+ ## Checks
18
+
19
+ - [ ] `ruff check .`
20
+ - [ ] `pytest`
21
+ - [ ] `python -m build`
22
+
23
+ ## Sprint / Milestone
24
+
25
+ -
26
+
@@ -0,0 +1,47 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ python-version: ["3.12"]
16
+
17
+ steps:
18
+ - name: Check out source
19
+ uses: actions/checkout@v4
20
+
21
+ - name: Set up Python
22
+ uses: actions/setup-python@v5
23
+ with:
24
+ python-version: ${{ matrix.python-version }}
25
+
26
+ - name: Install dependencies
27
+ run: python -m pip install --upgrade pip && python -m pip install -e ".[dev]"
28
+
29
+ - name: Show environment
30
+ run: |
31
+ python --version
32
+ python -m pip show textual pytest anyio
33
+
34
+ - name: Run Ruff
35
+ run: python -m ruff check .
36
+
37
+ - name: Run tests
38
+ run: python -m pytest -vv --tb=long
39
+
40
+ - name: Build package
41
+ run: python -m build
42
+
43
+ - name: Upload package artifacts
44
+ uses: actions/upload-artifact@v4
45
+ with:
46
+ name: coffee-cli-dist-python-${{ matrix.python-version }}
47
+ path: dist/*
@@ -0,0 +1,87 @@
1
+ name: Publish
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ target:
7
+ description: Package index to publish to
8
+ required: true
9
+ default: testpypi
10
+ type: choice
11
+ options:
12
+ - testpypi
13
+ - pypi
14
+
15
+ jobs:
16
+ build:
17
+ runs-on: ubuntu-latest
18
+
19
+ steps:
20
+ - name: Check out source
21
+ uses: actions/checkout@v4
22
+
23
+ - name: Set up Python
24
+ uses: actions/setup-python@v5
25
+ with:
26
+ python-version: "3.12"
27
+
28
+ - name: Install build tooling
29
+ run: python -m pip install --upgrade pip build
30
+
31
+ - name: Build package
32
+ run: python -m build
33
+
34
+ - name: Upload package artifacts
35
+ uses: actions/upload-artifact@v4
36
+ with:
37
+ name: coffee-cli-dist
38
+ path: dist/*
39
+
40
+ publish-testpypi:
41
+ if: github.event.inputs.target == 'testpypi'
42
+ needs: build
43
+ runs-on: ubuntu-latest
44
+ environment:
45
+ name: testpypi
46
+ url: https://test.pypi.org/p/coffee-cli
47
+ permissions:
48
+ id-token: write
49
+
50
+ steps:
51
+ - name: Download package artifacts
52
+ uses: actions/download-artifact@v4
53
+ with:
54
+ name: coffee-cli-dist
55
+ path: dist
56
+
57
+ - name: Publish package to TestPyPI
58
+ uses: pypa/gh-action-pypi-publish@release/v1
59
+ with:
60
+ repository-url: https://test.pypi.org/legacy/
61
+
62
+ publish-pypi:
63
+ if: github.event.inputs.target == 'pypi'
64
+ needs: build
65
+ runs-on: ubuntu-latest
66
+ environment:
67
+ name: pypi
68
+ url: https://pypi.org/p/coffee-cli
69
+ permissions:
70
+ id-token: write
71
+
72
+ steps:
73
+ - name: Require a version tag for PyPI
74
+ run: |
75
+ if [[ "${GITHUB_REF}" != refs/tags/v* ]]; then
76
+ echo "Real PyPI publishing must be run from a version tag like v0.1.0."
77
+ exit 1
78
+ fi
79
+
80
+ - name: Download package artifacts
81
+ uses: actions/download-artifact@v4
82
+ with:
83
+ name: coffee-cli-dist
84
+ path: dist
85
+
86
+ - name: Publish package to PyPI
87
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,13 @@
1
+ .pytest_cache/
2
+ .ruff_cache/
3
+ .coverage
4
+ __pycache__/
5
+ *.py[cod]
6
+ *.egg-info/
7
+ .mypy_cache/
8
+ .tox/
9
+ .venv/
10
+ build/
11
+ dist/
12
+ .DS_Store
13
+
@@ -0,0 +1,57 @@
1
+ # Contributing
2
+
3
+ Coffee CLI follows a branch-and-PR workflow. Treat `main` as the stable branch.
4
+
5
+ ## Workflow
6
+
7
+ 1. Start from an up-to-date `main`.
8
+
9
+ ```bash
10
+ git switch main
11
+ git pull origin main
12
+ ```
13
+
14
+ 2. Create a branch for one focused change.
15
+
16
+ ```bash
17
+ git switch -c feature/playable-home-screen
18
+ ```
19
+
20
+ Use these prefixes:
21
+
22
+ - `feature/` for user-facing app work
23
+ - `fix/` for bug fixes
24
+ - `docs/` for documentation
25
+ - `ci/` for workflow and automation changes
26
+ - `test/` for test-only improvements
27
+
28
+ 3. Make small commits with clear messages.
29
+
30
+ ```bash
31
+ git add .
32
+ git commit -m "Add playable home screen"
33
+ ```
34
+
35
+ 4. Run the full local checks.
36
+
37
+ ```bash
38
+ ruff check .
39
+ pytest
40
+ python -m build
41
+ ```
42
+
43
+ 5. Push the branch and open a pull request.
44
+
45
+ ```bash
46
+ git push -u origin feature/playable-home-screen
47
+ ```
48
+
49
+ 6. Merge only after CI passes.
50
+
51
+ ## Main branch rules
52
+
53
+ - Do not do feature work directly on `main`.
54
+ - Do not push directly to `main` after the initial project bootstrap.
55
+ - Keep each PR focused on one milestone, bug, or workflow improvement.
56
+ - Make sure every runnable milestone can be launched with `coffee`.
57
+
@@ -0,0 +1,108 @@
1
+ Metadata-Version: 2.4
2
+ Name: coffee-cli
3
+ Version: 0.1.0
4
+ Summary: A polished Python terminal UI for coffee-themed developer workflows.
5
+ Project-URL: Homepage, https://github.com/josephforson285/coffee-for-devs
6
+ Project-URL: Issues, https://github.com/josephforson285/coffee-for-devs/issues
7
+ Author: Coffee CLI Contributors
8
+ License: MIT
9
+ Keywords: cli,coffee,terminal,textual,tui
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Topic :: Software Development
16
+ Classifier: Topic :: Terminals
17
+ Requires-Python: >=3.12
18
+ Requires-Dist: textual<1.0,>=0.68
19
+ Provides-Extra: dev
20
+ Requires-Dist: anyio>=4.4; extra == 'dev'
21
+ Requires-Dist: build>=1.2; extra == 'dev'
22
+ Requires-Dist: pytest-cov>=5.0; extra == 'dev'
23
+ Requires-Dist: pytest>=8.2; extra == 'dev'
24
+ Requires-Dist: ruff>=0.5; extra == 'dev'
25
+ Description-Content-Type: text/markdown
26
+
27
+ # Coffee CLI
28
+
29
+ Coffee CLI is a Python terminal UI application for developers who want a polished, installable `coffee` command with personality. The app is built as a modern Python package and is intended to grow into a showcase project for terminal UX, testing, CI/CD, and professional packaging.
30
+
31
+ ## Project goals
32
+
33
+ - Launch with `coffee` after installation.
34
+ - Use `Textual` for a polished TUI.
35
+ - Keep the codebase educational and production-leaning.
36
+ - Validate every change with tests, linting, and CI.
37
+
38
+ ## Local environment
39
+
40
+ This project is being developed inside:
41
+
42
+ - project root: `/home/redsteam/Desktop/bear/ML/coffee-for-devs`
43
+ - virtual environment: `/home/redsteam/Desktop/bear/ML/MLprojs`
44
+
45
+ Activate the environment:
46
+
47
+ ```bash
48
+ source /home/redsteam/Desktop/bear/ML/MLprojs/bin/activate
49
+ ```
50
+
51
+ ## First-time setup
52
+
53
+ Install the project and developer tools into the virtual environment:
54
+
55
+ ```bash
56
+ python -m pip install -e ".[dev]"
57
+ ```
58
+
59
+ Run the quality checks:
60
+
61
+ ```bash
62
+ ruff check .
63
+ pytest
64
+ python -m build
65
+ ```
66
+
67
+ Start the app:
68
+
69
+ ```bash
70
+ coffee
71
+ ```
72
+
73
+ ## Install from a wheel
74
+
75
+ Build the package:
76
+
77
+ ```bash
78
+ python -m build
79
+ ```
80
+
81
+ Install the generated wheel into a fresh environment:
82
+
83
+ ```bash
84
+ python -m pip install dist/coffee_cli-0.1.0-py3-none-any.whl
85
+ coffee
86
+ ```
87
+
88
+ This is the local release-candidate check before publishing to PyPI.
89
+
90
+ ## Release publishing
91
+
92
+ Publishing is handled by the manual GitHub Actions workflow in `.github/workflows/publish.yml`.
93
+ Use `target=testpypi` first, verify the package, then publish to PyPI from a version tag such as
94
+ `v0.1.0`.
95
+
96
+ ## Current scope
97
+
98
+ Coffee CLI currently includes:
99
+
100
+ - modern `pyproject.toml` packaging
101
+ - `src/` layout
102
+ - `coffee` console script entry point
103
+ - first Textual app skeleton with animated ASCII steam
104
+ - order flow, brewing flow, personal favorites, journal, and statistics
105
+ - tested package structure
106
+ - GitHub Actions CI workflow
107
+
108
+ See [docs/roadmap.md](docs/roadmap.md) for the planned sprint breakdown, [docs/milestones.md](docs/milestones.md) for runnable milestones, [docs/release-checklist.md](docs/release-checklist.md) for release steps, and [CONTRIBUTING.md](CONTRIBUTING.md) for the Git workflow.
@@ -0,0 +1,82 @@
1
+ # Coffee CLI
2
+
3
+ Coffee CLI is a Python terminal UI application for developers who want a polished, installable `coffee` command with personality. The app is built as a modern Python package and is intended to grow into a showcase project for terminal UX, testing, CI/CD, and professional packaging.
4
+
5
+ ## Project goals
6
+
7
+ - Launch with `coffee` after installation.
8
+ - Use `Textual` for a polished TUI.
9
+ - Keep the codebase educational and production-leaning.
10
+ - Validate every change with tests, linting, and CI.
11
+
12
+ ## Local environment
13
+
14
+ This project is being developed inside:
15
+
16
+ - project root: `/home/redsteam/Desktop/bear/ML/coffee-for-devs`
17
+ - virtual environment: `/home/redsteam/Desktop/bear/ML/MLprojs`
18
+
19
+ Activate the environment:
20
+
21
+ ```bash
22
+ source /home/redsteam/Desktop/bear/ML/MLprojs/bin/activate
23
+ ```
24
+
25
+ ## First-time setup
26
+
27
+ Install the project and developer tools into the virtual environment:
28
+
29
+ ```bash
30
+ python -m pip install -e ".[dev]"
31
+ ```
32
+
33
+ Run the quality checks:
34
+
35
+ ```bash
36
+ ruff check .
37
+ pytest
38
+ python -m build
39
+ ```
40
+
41
+ Start the app:
42
+
43
+ ```bash
44
+ coffee
45
+ ```
46
+
47
+ ## Install from a wheel
48
+
49
+ Build the package:
50
+
51
+ ```bash
52
+ python -m build
53
+ ```
54
+
55
+ Install the generated wheel into a fresh environment:
56
+
57
+ ```bash
58
+ python -m pip install dist/coffee_cli-0.1.0-py3-none-any.whl
59
+ coffee
60
+ ```
61
+
62
+ This is the local release-candidate check before publishing to PyPI.
63
+
64
+ ## Release publishing
65
+
66
+ Publishing is handled by the manual GitHub Actions workflow in `.github/workflows/publish.yml`.
67
+ Use `target=testpypi` first, verify the package, then publish to PyPI from a version tag such as
68
+ `v0.1.0`.
69
+
70
+ ## Current scope
71
+
72
+ Coffee CLI currently includes:
73
+
74
+ - modern `pyproject.toml` packaging
75
+ - `src/` layout
76
+ - `coffee` console script entry point
77
+ - first Textual app skeleton with animated ASCII steam
78
+ - order flow, brewing flow, personal favorites, journal, and statistics
79
+ - tested package structure
80
+ - GitHub Actions CI workflow
81
+
82
+ See [docs/roadmap.md](docs/roadmap.md) for the planned sprint breakdown, [docs/milestones.md](docs/milestones.md) for runnable milestones, [docs/release-checklist.md](docs/release-checklist.md) for release steps, and [CONTRIBUTING.md](CONTRIBUTING.md) for the Git workflow.
@@ -0,0 +1,158 @@
1
+ # Runnable Milestones
2
+
3
+ This project should grow in small playable slices. A milestone is not complete just because code exists; it should give a visible result that can be launched locally with `coffee`.
4
+
5
+ ## Milestone 0: Project Foundation
6
+
7
+ Status: done
8
+
9
+ Goal: make Coffee CLI a real Python project with packaging, tests, linting, CI, and a GitHub remote.
10
+
11
+ Runnable demo:
12
+
13
+ ```bash
14
+ source /home/redsteam/Desktop/bear/ML/MLprojs/bin/activate
15
+ coffee
16
+ ```
17
+
18
+ Expected result:
19
+
20
+ - the `coffee` command starts the Textual app
21
+ - the first home screen renders
22
+ - the app can quit with `q`
23
+
24
+ Verification:
25
+
26
+ ```bash
27
+ ruff check .
28
+ pytest
29
+ python -m build
30
+ ```
31
+
32
+ ## Milestone 1: Playable Home Screen
33
+
34
+ Status: done
35
+
36
+ Goal: make the first screen feel intentional and easy to inspect.
37
+
38
+ Playable behavior:
39
+
40
+ - animated steam is visible
41
+ - arrow keys move through the menu
42
+ - the selected menu item updates the right-side summary
43
+ - `q` exits cleanly
44
+
45
+ Demo script:
46
+
47
+ ```bash
48
+ coffee
49
+ ```
50
+
51
+ Definition of done:
52
+
53
+ - user can navigate the home menu
54
+ - UI text fits cleanly in the terminal
55
+ - tests cover pure rendering and menu state logic
56
+ - Ruff, Pytest, and build pass
57
+
58
+ ## Milestone 2: First Order Flow
59
+
60
+ Status: done
61
+
62
+ Goal: let the user create a basic coffee order.
63
+
64
+ Playable behavior:
65
+
66
+ - choose a coffee type
67
+ - choose a size
68
+ - choose a milk option
69
+ - see a live summary
70
+ - confirm or cancel the order
71
+
72
+ Demo script:
73
+
74
+ ```bash
75
+ coffee
76
+ ```
77
+
78
+ Definition of done:
79
+
80
+ - one full order can be completed from the TUI
81
+ - price calculation is tested
82
+ - order summary is tested
83
+ - CI passes
84
+
85
+ ## Milestone 3: Brewing Moment
86
+
87
+ Status: done
88
+
89
+ Goal: make order confirmation feel memorable.
90
+
91
+ Playable behavior:
92
+
93
+ - confirming an order starts a brewing animation
94
+ - progress states show grinding, heating, brewing, and pouring
95
+ - final screen shows the completed drink
96
+
97
+ Demo script:
98
+
99
+ ```bash
100
+ coffee
101
+ ```
102
+
103
+ Definition of done:
104
+
105
+ - animation completes without blocking input forever
106
+ - user can return to the home screen
107
+ - tests cover the brewing state transitions
108
+
109
+ ## Milestone 4: Personal Coffee Tools
110
+
111
+ Status: done
112
+
113
+ Goal: add reasons to reuse the app.
114
+
115
+ Playable behavior:
116
+
117
+ - save favorite drinks
118
+ - open a coffee journal
119
+ - view simple statistics
120
+
121
+ Demo script:
122
+
123
+ ```bash
124
+ coffee
125
+ ```
126
+
127
+ Definition of done:
128
+
129
+ - favorites persist locally
130
+ - journal entries persist locally
131
+ - storage behavior is tested
132
+
133
+ ## Milestone 5: Release Candidate
134
+
135
+ Status: in progress
136
+
137
+ Goal: prepare Coffee CLI for other developers to install.
138
+
139
+ Playable behavior:
140
+
141
+ - install from a built wheel
142
+ - run `coffee` from a fresh environment
143
+ - CI builds release artifacts
144
+
145
+ Demo script:
146
+
147
+ ```bash
148
+ python -m build
149
+ python -m pip install dist/coffee_cli-0.1.0-py3-none-any.whl
150
+ coffee
151
+ ```
152
+
153
+ Definition of done:
154
+
155
+ - README has installation instructions
156
+ - GitHub release checklist exists
157
+ - package metadata is complete
158
+ - CI artifacts are reliable
@@ -0,0 +1,46 @@
1
+ # Release Checklist
2
+
3
+ Use this checklist before tagging a Coffee CLI release or publishing to PyPI.
4
+
5
+ ## Local Release Candidate
6
+
7
+ - Start from an up-to-date `main`.
8
+ - Create a focused release branch.
9
+ - Run `python -m pip install -e ".[dev]"`.
10
+ - Run `python -m ruff check .`.
11
+ - Run `python -m pytest`.
12
+ - Run `python -m build`.
13
+ - Create a fresh virtual environment.
14
+ - Install the wheel with `python -m pip install dist/coffee_cli-0.1.0-py3-none-any.whl`.
15
+ - Run `coffee` and verify the TUI opens.
16
+
17
+ ## Pull Request Gate
18
+
19
+ - Open a PR from the release branch.
20
+ - Confirm GitHub Actions passes.
21
+ - Confirm the CI run uploads `dist/` artifacts.
22
+ - Review package metadata in `pyproject.toml`.
23
+ - Review README installation instructions.
24
+ - Merge only after the release-candidate demo works.
25
+
26
+ ## Future PyPI Release
27
+
28
+ - Create PyPI and TestPyPI accounts.
29
+ - Configure Trusted Publishing for this GitHub repository on TestPyPI.
30
+ - Run the `Publish` workflow manually with `target=testpypi`.
31
+ - Install from TestPyPI in a clean environment.
32
+ - Merge the release-candidate PR after CI and TestPyPI verification pass.
33
+ - Create a Git tag such as `v0.1.0` from `main`.
34
+ - Configure Trusted Publishing for this GitHub repository on PyPI.
35
+ - Run the `Publish` workflow manually from the tag with `target=pypi`.
36
+ - Install from PyPI in a clean environment.
37
+
38
+ Trusted Publishing settings:
39
+
40
+ - TestPyPI project name: `coffee-cli`
41
+ - PyPI project name: `coffee-cli`
42
+ - Owner: `josephforson285`
43
+ - Repository: `coffee-for-devs`
44
+ - Workflow name: `publish.yml`
45
+ - TestPyPI environment: `testpypi`
46
+ - PyPI environment: `pypi`
@@ -0,0 +1,49 @@
1
+ # Coffee CLI Roadmap
2
+
3
+ ## Product framing
4
+
5
+ Coffee CLI should feel like a real developer tool, not a classroom menu script. The coffee theme gives the app character, but the engineering quality, UX polish, and delivery workflow are the real value.
6
+
7
+ ## Sprint 1
8
+
9
+ Goal: ship the first installable `coffee` command.
10
+
11
+ - create Python package structure
12
+ - wire the `coffee` console entry point
13
+ - build a welcome screen with animated ASCII steam
14
+ - add core tests
15
+ - add Ruff, Pytest, and build automation in CI
16
+
17
+ Runnable milestone: see [milestones.md](milestones.md#milestone-0-project-foundation) and [milestones.md](milestones.md#milestone-1-playable-home-screen).
18
+
19
+ ## Sprint 2
20
+
21
+ Goal: support a complete coffee ordering flow.
22
+
23
+ - add coffee selection
24
+ - add milk and size selection
25
+ - calculate prices
26
+ - show an order summary
27
+ - add tests for ordering and pricing logic
28
+
29
+ Runnable milestone: see [milestones.md](milestones.md#milestone-2-first-order-flow).
30
+
31
+ ## Later sprints
32
+
33
+ - themes and settings
34
+ - favorites
35
+ - coffee journal
36
+ - statistics dashboard
37
+ - search and command palette
38
+ - plugin architecture
39
+ - optional AI barista
40
+
41
+ ## Definition of done
42
+
43
+ - code works locally
44
+ - the milestone has a visible `coffee` demo
45
+ - tests exist for the change
46
+ - `ruff check .` passes
47
+ - `pytest` passes
48
+ - `python -m build` passes
49
+ - CI passes before merge