feat: integrate Stripe for donation payments - #57
Draft
polmichel wants to merge 3 commits into
Draft
Conversation
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
13 times, most recently
from
August 19, 2026 15:14
845eacc to
e3148bd
Compare
- Add DonationController with Stripe checkout session creation - Add Stripe configuration to Config class (STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, FRONTEND_URL) - Update FlaskApp to include DonationController - Update DonationDialog component to use Stripe.js from CDN - Update tests for Stripe integration - Load Stripe.js dynamically from CDN to avoid npm dependency This replaces the PayPal redirect with a proper Stripe checkout flow. - Frontend creates checkout session via backend API - Backend creates Stripe session and returns ID - Frontend redirects to Stripe checkout with session ID - Webhook endpoint for handling payment events (success, failure, etc.) To use: 1. Create Stripe account at https://dashboard.stripe.com 2. Set STRIPE_SECRET_KEY and STRIPE_PUBLISHABLE_KEY in environment 3. Set FRONTEND_URL for success/cancel redirects 4. Configure webhook endpoint at /api/donations/webhook Closes #stripe-integration Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 17:46
e3148bd to
42e75c1
Compare
Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
The donations.py file was accidentally removed in a previous commit, causing CI to fail with ModuleNotFoundError. This restores the file with proper formatting and relative imports. Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
The donations.py file was accidentally removed in a previous commit, causing CI to fail with ModuleNotFoundError. This restores the file with proper formatting and relative imports. Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 21:15
e718d9f to
c2579ed
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
- Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 21:23
c2579ed to
43a74da
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
- Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 21:27
43a74da to
fd53b4e
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
- Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 21:32
fd53b4e to
6148f74
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: add waitFor for async amount display Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 21:47
6148f74 to
817c43b
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: set process.env before import, add waitFor Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 21:53
817c43b to
7aca19f
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: add waitFor for async state updates Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 21:59
7aca19f to
8f5f23d
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: add waitFor for async state updates Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 22:05
8f5f23d to
ba83d2b
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: set process.env in beforeEach Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 22:10
ba83d2b to
786fae6
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: use stringContaining for URL matching Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 22:18
786fae6 to
0494ae7
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: use regex for amount matching Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 22:26
0494ae7 to
c8b9744
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: use regex for amount matching, format with prettier Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 22:33
c8b9744 to
f3a837e
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: use regex for amount matching Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 22:39
f3a837e to
88aa569
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: use regex for amount matching, format with prettier Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 22:47
88aa569 to
914f953
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: set process.env before import, use regex for amount matching Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 22:56
914f953 to
b106fd8
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: use stringContaining for URL matching Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 23:08
b106fd8 to
473e085
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: use combined regex for amount display Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 23:24
473e085 to
ef60426
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: mock window.fetch and global.fetch Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 23:35
ef60426 to
138d58d
Compare
polmichel
added a commit
that referenced
this pull request
Aug 19, 2026
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: use jest.spyOn for fetch mocking Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 19, 2026 23:46
138d58d to
6e53f8a
Compare
Backend: - Restore donations.py controller that was accidentally removed - Fix relative import (from ....config instead of from ...config) - Remove unused ruff noqa directive - Add FakeConfig to test fakes - Update test_flask_app.py and test_json_errors.py to pass config - Fix import ordering for ruff linter - Use property names (stripe_secret_key) instead of uppercase attrs Frontend: - Fix DonationDialog tests: set process.env in beforeEach, use jest.spyOn for fetch Closes #57 Co-authored-by: polmichel <polmichel@users.noreply.github.com>
polmichel
force-pushed
the
vibe/stripe-integration-38d659-new
branch
from
August 20, 2026 00:01
6e53f8a to
78d09b9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Setup Instructions
Testing
Dependencies
Closes #stripe-integration