ai slop ah
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Northline Delivery Studio
|
||||
# Noah Bianchi Studio
|
||||
|
||||
Northline is an original photographer client-delivery platform inspired by the category of premium gallery products such as DLVRD. It is built around one loop:
|
||||
Noah Bianchi is an original photographer client-delivery platform inspired by the category of premium gallery products such as DLVRD. It is built around one loop:
|
||||
|
||||
```text
|
||||
Upload -> Curate -> Customize -> Publish -> Send a private link
|
||||
@@ -11,7 +11,7 @@ Photographers get a focused studio dashboard. Clients get a private editorial ga
|
||||
## Stack
|
||||
|
||||
- Frontend: React, TypeScript, Vite, React Router, Tailwind CSS, Framer Motion
|
||||
- Backend: Go 1.24+, `net/http`, REST/JSON, `database/sql`
|
||||
- Backend: Go 1.24+, Gin, REST/JSON, `database/sql`
|
||||
- Database: PostgreSQL by default; SQLite remains available for lightweight local testing
|
||||
- Storage: MinIO locally through an S3-compatible storage interface
|
||||
- Media: direct browser uploads with presigned URLs, asynchronous preview processing, signed download URLs
|
||||
@@ -52,6 +52,7 @@ Open:
|
||||
- Dashboard: [http://localhost:5173/login](http://localhost:5173/login)
|
||||
- Dev diagnostics: [http://localhost:5173/dashboard/dev](http://localhost:5173/dashboard/dev)
|
||||
- Demo client gallery: [http://localhost:5173/g/emma-james-wedding](http://localhost:5173/g/emma-james-wedding)
|
||||
- API documentation: [http://localhost:8080/swagger/index.html](http://localhost:8080/swagger/index.html)
|
||||
- MinIO console: [http://localhost:9001](http://localhost:9001)
|
||||
|
||||
### PowerShell
|
||||
@@ -78,7 +79,7 @@ The seed command creates:
|
||||
```text
|
||||
Email: demo@example.com
|
||||
Password: DemoPassword123!
|
||||
Studio: Northline Studio
|
||||
Studio: Noah Bianchi
|
||||
```
|
||||
|
||||
It also creates the published demo gallery:
|
||||
@@ -187,6 +188,8 @@ POST /api/auth/register
|
||||
POST /api/auth/login
|
||||
POST /api/auth/logout
|
||||
GET /api/auth/me
|
||||
PATCH /api/auth/me
|
||||
POST /api/auth/password
|
||||
```
|
||||
|
||||
Authenticated galleries:
|
||||
@@ -232,6 +235,12 @@ Health:
|
||||
GET /health
|
||||
```
|
||||
|
||||
Swagger UI is available at `/swagger/index.html`; the generated Swagger document is also served at `/swagger/doc.json`. Regenerate the checked-in documentation after changing API annotations with:
|
||||
|
||||
```bash
|
||||
make swagger
|
||||
```
|
||||
|
||||
Photographer routes use an HTTP-only signed session cookie. Public visitor identity and gallery access are separate signed cookies; clients do not need accounts.
|
||||
|
||||
## Database
|
||||
@@ -256,7 +265,7 @@ The schema does not store uploaded media content. `external_url` exists only to
|
||||
|
||||
```text
|
||||
backend/
|
||||
cmd/server/ API and worker startup
|
||||
cmd/server/ Gin API router and worker startup
|
||||
cmd/migrate/ dialect-aware SQL migration runner
|
||||
cmd/seed/ demo photographer and gallery seed
|
||||
internal/auth/ bcrypt auth, signed sessions, visitor access cookies
|
||||
@@ -281,6 +290,8 @@ Preview and public delivery use the same `ClientGallery` component. The preview
|
||||
Backend:
|
||||
|
||||
```bash
|
||||
make test
|
||||
make lint
|
||||
```
|
||||
|
||||
Frontend:
|
||||
|
||||
Reference in New Issue
Block a user