add readme file
This commit is contained in:
82
README.md
Normal file
82
README.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# Arcline Billing Portal
|
||||
|
||||
A lightweight billing and subscription management portal for Arcline IT customers. Customers can register, view their subscriptions and invoices, and manage their plans via Stripe Checkout.
|
||||
|
||||
## Features
|
||||
|
||||
- Customer registration and login with bcrypt password hashing
|
||||
- Subscription management via Stripe (checkout, cancellation)
|
||||
- Invoice history with PDF links
|
||||
- Password reset via email
|
||||
- Stripe webhook processing
|
||||
- Rate limiting and security headers
|
||||
|
||||
## Requirements
|
||||
|
||||
- Go 1.22+
|
||||
- A [Stripe](https://stripe.com) account
|
||||
- SMTP credentials for email (password resets)
|
||||
|
||||
## Setup
|
||||
|
||||
1. Copy the example environment file and fill in your values:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
2. Build the binary:
|
||||
|
||||
```bash
|
||||
go build -o billing .
|
||||
```
|
||||
|
||||
3. Run:
|
||||
|
||||
```bash
|
||||
./billing
|
||||
```
|
||||
|
||||
The server listens on `0.0.0.0:8082` by default. The SQLite database and schema are created automatically on first run.
|
||||
|
||||
## Environment Variables
|
||||
|
||||
| Variable | Default | Description |
|
||||
|---|---|---|
|
||||
| `PORT` | `8082` | HTTP listen port |
|
||||
| `DATABASE_PATH` | `./arcline-billing.db` | SQLite database file path |
|
||||
| `BASE_URL` | — | Public base URL (e.g. `https://client.arclineit.com`) — used for redirect URLs and password reset links |
|
||||
| `SESSION_SECURE` | `true` | Set `Secure` flag on session cookies (disable for local HTTP dev) |
|
||||
| `STRIPE_SECRET_KEY` | — | Stripe secret API key |
|
||||
| `STRIPE_WEBHOOK_SECRET` | — | Stripe webhook signing secret |
|
||||
| `SMTP_HOST` | — | SMTP server hostname |
|
||||
| `SMTP_PORT` | — | SMTP server port |
|
||||
| `SMTP_USER` | — | SMTP username |
|
||||
| `SMTP_PASS` | — | SMTP password |
|
||||
| `SMTP_FROM` | — | From address for outgoing email |
|
||||
|
||||
### Stripe Price IDs
|
||||
|
||||
Configure the price IDs for each plan tier:
|
||||
|
||||
| Variable | Plan |
|
||||
|---|---|
|
||||
| `STRIPE_PRICE_SHARED_STARTER` | Shared Hosting — Starter |
|
||||
| `STRIPE_PRICE_SHARED_PRO` | Shared Hosting — Pro |
|
||||
| `STRIPE_PRICE_SHARED_BUSINESS` | Shared Hosting — Business |
|
||||
| `STRIPE_PRICE_WP_STARTER` | WordPress Hosting — Starter |
|
||||
| `STRIPE_PRICE_WP_PRO` | WordPress Hosting — Pro |
|
||||
| `STRIPE_PRICE_WP_BUSINESS` | WordPress Hosting — Business |
|
||||
| `STRIPE_PRICE_VPS_1` | VPS — Tier 1 |
|
||||
| `STRIPE_PRICE_VPS_2` | VPS — Tier 2 |
|
||||
| `STRIPE_PRICE_VPS_3` | VPS — Tier 3 |
|
||||
| `STRIPE_PRICE_VPS_4` | VPS — Tier 4 |
|
||||
|
||||
## Stripe Webhooks
|
||||
|
||||
Point your Stripe webhook to `POST /webhook`. The following events are handled:
|
||||
|
||||
- `checkout.session.completed` — creates a subscription record
|
||||
- `invoice.paid` — records a paid invoice
|
||||
- `invoice.payment_failed` — updates subscription status
|
||||
- `customer.subscription.deleted` — marks subscription as cancelled
|
||||
Reference in New Issue
Block a user