Repository navigation
Expand file tree
/
Copy pathfirebase-blueprint.json
More file actions
96 lines (96 loc) · 3.25 KB
/
Copy pathfirebase-blueprint.json
File metadata and controls
96 lines (96 loc) · 3.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
{
"entities": {
"UserProfile": {
"title": "User Profile",
"description": "Information about the user and their preferences.",
"type": "object",
"properties": {
"userId": { "type": "string" },
"displayName": { "type": "string" },
"email": { "type": "string" },
"photoURL": { "type": "string" },
"interests": { "type": "array", "items": { "type": "string" } },
"preferredLanguages": { "type": "array", "items": { "type": "string" } },
"createdAt": { "type": "string", "format": "date-time" }
},
"required": ["userId", "email"]
},
"Interaction": {
"title": "Interaction",
"description": "User's swipe action on a repository.",
"type": "object",
"properties": {
"userId": { "type": "string" },
"repoId": { "type": "string" },
"repoData": { "type": "object" },
"type": { "type": "string", "enum": ["like", "pass", "superlike"] },
"timestamp": { "type": "string", "format": "date-time" }
},
"required": ["userId", "repoId", "type", "timestamp"]
},
"CuratedList": {
"title": "Curated List",
"description": "A collection of repositories curated by a user.",
"type": "object",
"properties": {
"listId": { "type": "string" },
"ownerId": { "type": "string" },
"ownerName": { "type": "string" },
"title": { "type": "string" },
"description": { "type": "string" },
"repoIds": { "type": "array", "items": { "type": "string" } },
"repos": { "type": "array", "items": { "type": "object" } },
"isPublic": { "type": "boolean" },
"createdAt": { "type": "string", "format": "date-time" },
"updatedAt": { "type": "string", "format": "date-time" }
},
"required": ["ownerId", "title", "repoIds"]
},
"Follow": {
"title": "Follow",
"description": "Tracks users following other users' lists.",
"type": "object",
"properties": {
"followerId": { "type": "string" },
"followedUserId": { "type": "string" },
"listId": { "type": "string" },
"timestamp": { "type": "string", "format": "date-time" }
},
"required": ["followerId", "listId", "timestamp"]
},
"GitHubFollow": {
"title": "GitHub Follow",
"description": "Tracks GitHub users followed by a platform user for feed customization.",
"type": "object",
"properties": {
"userId": { "type": "string" },
"username": { "type": "string" },
"avatarUrl": { "type": "string" },
"timestamp": { "type": "string", "format": "date" }
},
"required": ["userId", "username"]
}
},
"firestore": {
"users": {
"schema": "UserProfile",
"description": "Collection of user profiles."
},
"interactions": {
"schema": "Interaction",
"description": "Collection of user swipe interactions."
},
"lists": {
"schema": "CuratedList",
"description": "Collection of curated repo lists."
},
"follows": {
"schema": "Follow",
"description": "Collection of list follows."
},
"githubFollows": {
"schema": "GitHubFollow",
"description": "Collection of followed GitHub users."
}
}
}