2025-12-11 18:03:08 -06:00
# Grounds for Support
2026-01-04 21:51:21 -06:00
Grounds for Support is a full-stack web application designed to facilitate donations ("buying a coffee") using Stripe. It demonstrates a modern integration of a React frontend with an ASP.NET Core backend, handling secure payments, webhooks, and data persistence.
2025-12-11 18:03:08 -06:00
2026-01-04 21:52:06 -06:00
## Features
2025-12-11 18:03:08 -06:00
2026-01-04 21:51:21 -06:00
- **Secure Donations**: Integrated with Stripe Payment Intents for secure transaction processing.
- **Custom Amounts**: Users can specify their donation amount, name, and a personal message.
- **Real-time Feedback**: Immediate confirmation of payment status.
- **Recent Activity**: Displays a list of recent supporters.
- **Rate Limiting**: API endpoints are protected against abuse.
- **Responsive Design**: Works seamlessly on desktop and mobile.
2026-01-04 21:52:06 -06:00
## Tech Stack
2026-01-04 21:51:21 -06:00
### Frontend
- **Framework**: React 19 with TypeScript
- **Build Tool**: Vite
- **Styling**: CSS
- **Payments**: Stripe Elements (`@stripe/react-stripe-js` )
- **Testing**: Vitest, React Testing Library
### Backend
- **Framework**: ASP.NET Core (Minimal APIs)
- **Language**: C#
- **Database**: SQLite with Entity Framework Core
- **Payments**: Stripe.net SDK
### DevOps
- **Containerization**: Docker
- **CI/CD**: GitHub Actions (Build & Deploy)
- **Hosting**: Linux VPS (Ubuntu)
## Getting Started
### Prerequisites
- .NET SDK
- Node.js
- Stripe Account (for API keys)
### Local Development
1. **Clone the repository**
```bash
git clone https://github.com/StevanFreeborn/groundsforsupport.stevanfreeborn.com.git
cd groundsforsupport.stevanfreeborn.com
` ``
2. **Configure Environment**
- Update ` src/GroundsForSupport.Server/appsettings.Development.json` (or use User Secrets) with your Stripe keys:
` ``json
"StripeOptions": {
"ApiKey": "sk_test_...",
"EventsWebhookSecret": "whsec_..."
}
` ``
- Create a ` .env` file in ` src/GroundsForSupport.Client` with your publishable key:
` ``txt
VITE_STRIPE_API_KEY=pk_test_...
` ``
3. **Run the Application**
The server project is configured to build the client automatically.
` ``bash
cd src/GroundsForSupport.Server
dotnet run
` ``
The API will be available at ` https://localhost:7071` (or similar), and it will serve the static frontend files.
*Alternatively, run frontend separately for hot-reloading:*
` ``bash
cd src/GroundsForSupport.Client
npm install
npm run dev
` ``
## Testing
- **Frontend Tests**:
` ``bash
cd src/GroundsForSupport.Client
npm test
` ``
- **Backend Tests**:
` ``bash
dotnet test
` ``
## 📄 License
This project is licensed under the MIT License.