Files
FeelAloud/backend/README.md
2026-07-22 22:54:03 +02:00

92 lines
2.0 KiB
Markdown

# FeelAloud Backend
Backend for real accounts:
- E-Mail and password registration/login
- Sign in with Apple ID-token verification
- Google ID-token verification
- JWT session tokens for the app
- Premium entitlement storage prepared for App Store Server verification
## Setup
1. Install dependencies:
```bash
npm install
```
2. Create PostgreSQL database and enable UUID generation:
```sql
create extension if not exists pgcrypto;
```
3. Copy config:
```bash
cp .env.example .env
```
4. Fill `.env`:
- `JWT_SECRET`: at least 32 random characters
- `APPLE_CLIENT_ID`: app bundle id, currently `de.feelaloud`
- `GOOGLE_CLIENT_IDS`: Google OAuth iOS/Web client IDs, comma-separated
5. Initialize DB:
```bash
npm run db:init
```
6. Start local API:
```bash
npm run dev
```
## Endpoints
- `GET /health`
- `POST /auth/email/register`
- `POST /auth/email/login`
- `POST /auth/email/change-password`
- `POST /auth/apple`
- `POST /auth/google`
- `GET /me`
- `GET /premium/status`
- `POST /premium/app-store/transaction`
## iOS Configuration
In the app, set the backend URL in Settings -> Profil once that UI is wired, or set `authBackendURL` in `UserDefaults` during testing:
```swift
UserDefaults.standard.set("http://localhost:8080", forKey: "authBackendURL")
```
For local device testing use your Mac's LAN IP instead of `localhost`.
## Required Apple/Google Console Setup
Apple:
- Paid Apple Developer account
- App capability: Sign in with Apple
- Bundle ID: `de.feelaloud`
- For server/web flows: Services ID and private key if you later exchange authorization codes server-side
Google:
- Google Cloud project
- OAuth consent screen
- iOS OAuth client for bundle ID `de.feelaloud`
- Add the resulting client ID to `GOOGLE_CLIENT_IDS`
Premium:
- Digital premium features must stay on StoreKit/In-App Purchase.
- PayPal is not the payment rail for iOS digital premium unlocks.
- Server-side transaction verification can be completed with App Store Server API once App Store Connect keys are available.