0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-03-22 08:58:11 +00:00

Updated Folders etc (markdown)

ericscheid
2023-12-04 15:57:59 +11:00
parent ebedc5e29d
commit 2f0ba5f7e8

@@ -29,12 +29,13 @@ Author-specific
- opening a link for a non-existant folder should trigger a 404
- a brew should be able to be in multiple folders at once
- folders can have subfolders of their own
- no duplicate names for folders inside the same account
- no duplicate names for folders inside the same account
- ... or at least, within the same folder space — thus two separate folders could each contain different subfolders both named "drafts"
- folder should appear in the brew title inside the share and edit pages("Examples: how to make tables")
- folders should appear before any brew in the user page
A URI/link should be `/user/:userId/:folderName`
A URI/link chould be `/user/:userId/:folder-slug`
### Data Model
@@ -51,16 +52,15 @@ Sub-folders are linked via a list of subfolderIds, in the same manner as how bre
- `__Id` (mongo specific ID field, exists wether we create it or not)
- `folderId` (nanoid, required, auto)
- `slug` (to use in the URL) (string, required)
- `displayName` (to display in the UI) (string, required)
- `owner`
- `brewIds` (list of shareId)
- `createdAt` (auto)
- `CreatedAt` (auto)
- `UpdatedAt` (auto)
#### More substantial data structure
![ERD of folders, users, and brews](https://github.com/naturalcrit/homebrewery/assets/2605467/03b4a90b-3c7f-4923-91db-dc77264473fd)
These folders should be displayed in the user page of the author of such folder <!-- could be a good idea to be able to copy someone else's folder, which should only copy published brews -->, opening the folder would bring the user to another page with the content of the folder displayed as if it was a user page.
So all unpublished files will still be invisible to unauthored accounts<!--although if you are an author you still can't see an unpublished brew, that needs a fix -->, even if they are inside a publicly viewable folder.<!--we could make it so that any folder without any published brew is invisible? -->
@@ -76,28 +76,23 @@ are private folders publicly viewable?
- thumnails
- tags
- views (useless?)
- view counts (useless?)
- systems
- description
- brewCount
- put someone else's brews into your folder
- put someone else's brews into your folder (e.g. faves, bookmarks, public resources)
- folders inside folders?
- move brews from folderA to folderB
- ability to hit a button to publish all brews inside
- folder password
- folder object could also have a link to a parent-folder (preferable to a list of contained-folders, to avoid loops etc)
- select via a picker UI (not by typing strings)
- store mongoids in codefenced block - store in the brew itself??
- select via a picker UI (not by typing strings, unless we support type-ahead magic)
- smart and dumb folders - additional properties
- plausible deniability if bad password or no password (give me access or give me death aka 404)
The brew metadata panel and folder picker UI should only show the folders belonging to that user, but also maintain back-end the other user's folder assignments.
The brew metadata panel and folder picker UI should only show the folders belonging to that user, but also maintain back-end the other user's folder assignments. The associating link between brew and folder is not maintained within the brew itself, but in the folder entity.
We do want to facilitate sharing of folder views. That is, a user could share `/user/erics/friday-game` to his Friday Game participants; or share publicly `/user/erics/monsters` to the world (although that might be better served as /user/erics?tags=monsters).
We do want to facilitate sharing of folder views. That is, a user could share `/user/erics/friday-game` to his Friday Game participants; or share publicly `/user/erics/monsters` to the world..
### Data structure