From e99ceb95ff86127714cdbe583708e7e6ccd759aa Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:51:21 -0600 Subject: [PATCH] docs: update README with detailed features and tech stack information --- README.md | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 101 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8b4593a..260e6ba 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,105 @@ # Grounds for Support -⚠️ Under Construction ⚠️ +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. -This is a simple application I built to help me better understand how to intergrate Stripe so that I can accept payments from people over the interwebz. +## 🚀 Features +- **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. + +## 🛠️ Tech Stack + +### 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.