app: 멀티유저 카테고리 보드 및 드래그 이동 추가
Made-with: Cursor
This commit is contained in:
42
docs/spec.md
42
docs/spec.md
@@ -2,7 +2,7 @@
|
||||
|
||||
## 현재 버전
|
||||
|
||||
- `v0.0.8`
|
||||
- `v0.0.9`
|
||||
|
||||
## 스택
|
||||
|
||||
@@ -14,12 +14,42 @@
|
||||
|
||||
## PocketBase 컬렉션: `todos`
|
||||
|
||||
| 필드 | 타입 | 설명 |
|
||||
| ------ | ------- | ----------- |
|
||||
| `title` | text | 할 일 제목 |
|
||||
| `done` | bool | 완료 여부 |
|
||||
이 앱은 **로그인 사용자 기반**으로 동작한다. 권한은 “본인 데이터만 접근”을 기본으로 한다.
|
||||
|
||||
규칙(API 규칙)은 운영 환경에 맞게 설정한다. 로컬 개발 시에는 본인 계정에 맞는 생성·수정 권한이 있어야 한다.
|
||||
### `users` (auth collection)
|
||||
|
||||
- PocketBase 기본 `users` 컬렉션을 사용한다.
|
||||
- 프런트는 `authWithPassword` 방식으로 로그인한다.
|
||||
|
||||
### `categories`
|
||||
|
||||
| 필드 | 타입 | 설명 |
|
||||
| --- | --- | --- |
|
||||
| `owner` | relation -> users | 카테고리 소유자 |
|
||||
| `name` | text(noempty) | 카테고리 이름 |
|
||||
| `order` | number | 카테고리 정렬 순서(작을수록 위) |
|
||||
|
||||
### `todos`
|
||||
|
||||
| 필드 | 타입 | 설명 |
|
||||
| --- | --- | --- |
|
||||
| `owner` | relation -> users | 할 일 소유자 |
|
||||
| `category` | relation -> categories | 소속 카테고리 |
|
||||
| `title` | text(noempty) | 할 일 제목 |
|
||||
| `done` | bool | 완료 여부 |
|
||||
| `completedAt` | date(nullable) | 완료 시각(완료 시 set) |
|
||||
| `order` | number | 카테고리 내 정렬 순서(작을수록 위) |
|
||||
|
||||
### API Rules(권장)
|
||||
|
||||
아래는 “로그인 사용자 본인 데이터만”을 기준으로 한 예시다. (컬렉션/필드 이름은 실제 설정과 동일해야 한다.)
|
||||
|
||||
- **categories**: list/view/create/update/delete
|
||||
- `@request.auth.id != "" && owner = @request.auth.id`
|
||||
- **todos**: list/view/create/update/delete
|
||||
- `@request.auth.id != "" && owner = @request.auth.id`
|
||||
|
||||
`create` 규칙은 레코드에 `owner`를 포함해 저장하는 것을 전제로 한다. 프런트에서 `owner`를 항상 설정한다.
|
||||
|
||||
## 환경 변수
|
||||
|
||||
|
||||
Reference in New Issue
Block a user