WEBVTT

1
00:00:00.000 --> 00:00:01.600
Do this one?

2
00:00:01.600 --> 00:00:06.280
Yeah, I would definitely re-watch part of the video.

3
00:00:06.280 --> 00:00:07.080
Sure.

4
00:00:07.080 --> 00:00:09.840
So we'll call that like, first video

5
00:00:09.840 --> 00:00:12.200
will be part of the kind of authentication

6
00:00:12.200 --> 00:00:15.560
and just sort of a general tour.

7
00:00:15.560 --> 00:00:19.960
And then let me walk through this.

8
00:00:19.960 --> 00:00:23.240
So we kind of keep going through the user flow here.

9
00:00:23.240 --> 00:00:25.320
So let's say now they're authenticated,

10
00:00:25.320 --> 00:00:27.600
so they're in their app.

11
00:00:27.600 --> 00:00:29.440
And now they're looking at my groups.

12
00:00:29.600 --> 00:00:34.880
And this is exactly the same as being on this page,

13
00:00:34.880 --> 00:00:35.960
obviously signed in.

14
00:00:42.160 --> 00:00:47.680
So these, my groups, is the same concept here.

15
00:00:47.680 --> 00:00:49.560
It's showing my groups here.

16
00:00:49.560 --> 00:00:52.160
And this looks like it's almost finished building,

17
00:00:52.160 --> 00:00:53.760
so we'll go ahead and run it here.

18
00:00:53.760 --> 00:00:55.800
So perfect, so let's just watch this for fun.

19
00:00:55.800 --> 00:00:59.400
I'm going to log in here as a user.

20
00:00:59.400 --> 00:01:00.720
It's checking that.

21
00:01:00.720 --> 00:01:02.040
And then it does this.

22
00:01:02.040 --> 00:01:04.599
And we sign in.

23
00:01:04.599 --> 00:01:05.920
And it accesses Wisdom.

24
00:01:05.920 --> 00:01:09.360
And it redirects the page.

25
00:01:09.360 --> 00:01:11.280
So it's very quick.

26
00:01:11.280 --> 00:01:14.040
But there was 12 actions it had to run through.

27
00:01:14.040 --> 00:01:17.080
But it does it very, very quick.

28
00:01:17.080 --> 00:01:19.840
And it just helps us prevent, for example,

29
00:01:19.840 --> 00:01:22.040
you don't want to send people directly into this

30
00:01:22.040 --> 00:01:23.560
without that redirect page.

31
00:01:23.560 --> 00:01:27.480
Because sometimes it doesn't know the data here.

32
00:01:27.480 --> 00:01:32.960
And then it doesn't know to go get the groups again.

33
00:01:32.960 --> 00:01:35.960
So it's kind of like it gets into a weird cached state.

34
00:01:35.960 --> 00:01:36.840
And it doesn't know.

35
00:01:36.840 --> 00:01:39.240
So what we do is we send it to that redirect page.

36
00:01:39.240 --> 00:01:42.000
It just verifies, are they signed in?

37
00:01:42.000 --> 00:01:44.360
Do they have all their credentials they need?

38
00:01:44.360 --> 00:01:47.280
And then go ahead and get the group list

39
00:01:47.280 --> 00:01:48.680
and add it to the local state.

40
00:01:48.680 --> 00:01:52.560
And that way, when we load this page, it's already loaded.

41
00:01:52.560 --> 00:01:55.880
We don't land on this page after the little scrolly wheel.

42
00:01:55.880 --> 00:01:59.800
And then it starts scrolling and looking for the query.

43
00:01:59.800 --> 00:02:03.520
Once we show it to the user, we want it to be functional.

44
00:02:03.520 --> 00:02:05.600
Yeah, so this is a very boring page.

45
00:02:05.600 --> 00:02:09.039
It just sort of lists out the groups that a user is in.

46
00:02:09.039 --> 00:02:11.160
So I'm going to go ahead and just click on this one,

47
00:02:11.160 --> 00:02:16.600
because it's the busiest.

48
00:02:16.600 --> 00:02:20.400
And let me pause this for just a second.

49
00:02:20.400 --> 00:02:24.800
OK, so this now takes you into this group page.

50
00:02:24.800 --> 00:02:25.840
We've got today.

51
00:02:25.840 --> 00:02:28.520
We've got replays listed out.

52
00:02:28.520 --> 00:02:33.480
They have a community board where we can post things here.

53
00:02:33.480 --> 00:02:37.120
And people can like different things.

54
00:02:37.120 --> 00:02:40.840
And they can click into the comments.

55
00:02:40.840 --> 00:02:44.600
And then you can also go to the leaderboard,

56
00:02:44.600 --> 00:02:46.920
where it tracks everybody's points for them

57
00:02:46.920 --> 00:02:49.920
completing different tasks.

58
00:02:49.920 --> 00:02:54.000
So some of this doesn't exist anywhere in the tribe API.

59
00:02:54.000 --> 00:02:58.280
And it only exists on the Firebase side.

60
00:02:58.280 --> 00:03:02.160
And so it lets us prototype things over here on Firebase.

61
00:03:02.160 --> 00:03:07.160
First, before we go and rebuild the tribe API

62
00:03:07.160 --> 00:03:10.240
to add a bunch of features just for this one app,

63
00:03:10.240 --> 00:03:14.040
we can prototype a version of it just with Firebase,

64
00:03:14.040 --> 00:03:16.400
see how it works, get it to where we like it.

65
00:03:16.400 --> 00:03:19.680
And then we potentially can move that over into the main tribe

66
00:03:19.680 --> 00:03:23.000
if we feel like that's something everybody should have.

67
00:03:23.000 --> 00:03:24.680
But right now, it's just limited to that.

68
00:03:24.680 --> 00:03:30.400
So group lists, and then this is the only app

69
00:03:30.400 --> 00:03:33.880
with the leaderboard and with that working the same way.

70
00:03:33.880 --> 00:03:38.320
So if I click into the template, sorry, it starts with this one,

71
00:03:38.320 --> 00:03:41.920
this group home, and we just named it.

72
00:03:41.920 --> 00:03:45.960
This is sort of the challenge look, is we've got the group.

73
00:03:45.960 --> 00:03:48.920
And this group, again, is just the same

74
00:03:49.000 --> 00:03:53.440
as if I go to the tribe site here.

75
00:03:53.440 --> 00:03:58.440
It's like I went into one of these groups here.

76
00:03:58.440 --> 00:04:01.080
So it's the same page, technically,

77
00:04:01.080 --> 00:04:02.960
with the image and the feed.

78
00:04:02.960 --> 00:04:07.200
It's all the same concepts, just sort of moved

79
00:04:07.200 --> 00:04:08.760
into a different sort of layout.

80
00:04:08.760 --> 00:04:13.280
It's just a little bit more mobile-friendly.

81
00:04:13.280 --> 00:04:17.360
So community, in theory, is basically

82
00:04:17.360 --> 00:04:21.160
the same as this discussion feed.

83
00:04:21.160 --> 00:04:24.200
The replays down here is just like all the videos

84
00:04:24.200 --> 00:04:27.560
that are on the left there.

85
00:04:27.560 --> 00:04:31.640
So let's jump back here.

86
00:04:31.640 --> 00:04:35.680
And so these are the two videos that people can watch.

87
00:04:35.680 --> 00:04:39.760
And if they click into a video, now we load that video,

88
00:04:39.760 --> 00:04:42.200
and we can hit Play.

89
00:04:42.200 --> 00:04:44.080
And then here, we've got the chat happening.

90
00:04:44.080 --> 00:04:45.880
So you can see this person just commented

91
00:04:46.000 --> 00:04:49.360
with less than a minute to go, six minutes to go,

92
00:04:49.360 --> 00:04:50.240
13 minutes to go.

93
00:04:50.240 --> 00:04:54.240
And if you keep going down, there's just tons of comments.

94
00:04:54.240 --> 00:04:58.800
I mean, there's about 4,000 members in this particular.

95
00:04:58.800 --> 00:05:00.680
If you go back.

96
00:05:00.000 --> 00:05:06.960
and hit the home page, see, there's 4,019 members.

97
00:05:06.960 --> 00:05:10.280
So they're very active, basically.

98
00:05:10.280 --> 00:05:12.280
Oh, yeah, that's a lot.

99
00:05:12.280 --> 00:05:15.160
And so all the comments and stuff right now

100
00:05:15.160 --> 00:05:17.120
are just being hosted by Firebase,

101
00:05:17.120 --> 00:05:20.400
because it's just a lot easier to get it in and out.

102
00:05:20.400 --> 00:05:23.520
And then we actually aren't using any of the front end

103
00:05:23.520 --> 00:05:24.640
app for this group.

104
00:05:24.640 --> 00:05:28.280
So if you go in here, and I'm looking at,

105
00:05:28.280 --> 00:05:32.960
this is the tribe web app that you're familiar with.

106
00:05:32.960 --> 00:05:36.520
If I click on Kingdom Seekers, it essentially

107
00:05:36.520 --> 00:05:39.560
redirects you to members.wisdomly,

108
00:05:39.560 --> 00:05:43.200
which is the Flutter flow app.

109
00:05:43.200 --> 00:05:45.880
So when I change something now in the template,

110
00:05:45.880 --> 00:05:47.840
it updates it on the web, and it updates it

111
00:05:47.840 --> 00:05:52.800
on the phone apps in the same update.

112
00:05:52.800 --> 00:05:58.440
So that was kind of a big breakthrough

113
00:05:58.440 --> 00:06:03.240
for this particular client, because in every other version,

114
00:06:03.240 --> 00:06:05.000
we would go add something in Flutter flow,

115
00:06:05.000 --> 00:06:07.800
and then Lucian would have to add it to the web app

116
00:06:07.800 --> 00:06:09.520
simultaneously.

117
00:06:09.520 --> 00:06:13.560
So by us moving to Flutter flow, doing the front end

118
00:06:13.560 --> 00:06:18.280
app on the web, and the front end of the mobile apps

119
00:06:18.280 --> 00:06:21.680
on Android and iOS, that let us everything be in sync.

120
00:06:21.680 --> 00:06:26.400
So now when we change the logic for login, for example,

121
00:06:26.400 --> 00:06:31.520
it pushes it immediately to the web app as well,

122
00:06:31.520 --> 00:06:35.720
and we've got it on the mobile app in the same update.

123
00:06:35.720 --> 00:06:40.680
So that was definitely a huge upgrade to our own thinking

124
00:06:40.680 --> 00:06:43.760
and process to simplify that tremendously.

125
00:06:43.760 --> 00:06:50.280
So yeah, and then in here, this is the challenge,

126
00:06:50.280 --> 00:06:52.440
the collection.

127
00:06:52.440 --> 00:06:54.640
The name is probably going to throw you off,

128
00:06:54.640 --> 00:06:56.840
since it's actually named incorrectly.

129
00:06:56.840 --> 00:07:00.960
We should probably rename it, because this is actually

130
00:07:00.960 --> 00:07:02.040
a piece of content.

131
00:07:02.040 --> 00:07:04.760
It would be actually called like a tribe content,

132
00:07:04.760 --> 00:07:06.440
but it got mislabeled.

133
00:07:06.440 --> 00:07:09.080
And so now it's just left there as being wrong.

134
00:07:09.080 --> 00:07:14.520
So yeah, video.

135
00:07:14.520 --> 00:07:17.040
And you can kind of break down this as well.

136
00:07:17.040 --> 00:07:19.280
We have a thing called a content stack, which

137
00:07:19.280 --> 00:07:23.960
stacks all these different components vertically

138
00:07:23.960 --> 00:07:25.920
and like a z-index.

139
00:07:25.920 --> 00:07:28.600
And so we first, on the very bottom layer,

140
00:07:28.600 --> 00:07:31.640
we show the image, like the featured image.

141
00:07:31.640 --> 00:07:34.160
And then if it's a YouTube video,

142
00:07:34.160 --> 00:07:36.160
we show the YouTube player.

143
00:07:36.160 --> 00:07:39.200
If it's just a video, like an MP4, we show this.

144
00:07:39.200 --> 00:07:43.560
And we have this, see the little eye icon there?

145
00:07:43.560 --> 00:07:47.560
If I hover over it, it even says content type equals video.

146
00:07:47.560 --> 00:07:50.920
And if I go hover over here, it says content type

147
00:07:50.920 --> 00:07:52.280
equals video embed.

148
00:07:52.280 --> 00:07:54.720
If I go over here, it says content type is live streaming.

149
00:07:54.720 --> 00:07:56.440
So you can actually see that.

150
00:07:56.440 --> 00:08:00.240
And the way you would change it is you would go into this.

151
00:08:00.240 --> 00:08:03.920
And you see it says conditional visibility at the top here.

152
00:08:03.920 --> 00:08:05.120
And then you can choose this.

153
00:08:05.120 --> 00:08:10.560
So you can say like content type equal to this value

154
00:08:10.560 --> 00:08:11.360
is a specific.

155
00:08:11.360 --> 00:08:14.640
And we just wrote the words live streaming in there.

156
00:08:14.800 --> 00:08:21.200
This should line up in your brain now to content, right?

157
00:08:21.200 --> 00:08:24.560
The type right in here, that's what that is right there.

158
00:08:24.560 --> 00:08:29.280
It's just getting that piece right there.

159
00:08:29.280 --> 00:08:31.680
This is where it's going to be a huge help that you

160
00:08:31.680 --> 00:08:35.840
are familiar with in some ways, like the tribe API.

161
00:08:35.840 --> 00:08:40.320
Because this is exactly how we, if you go to the content page,

162
00:08:40.320 --> 00:08:44.200
we have a bunch of conditionals, right?

163
00:08:44.560 --> 00:08:45.880
It's like, is this a YouTube video?

164
00:08:45.880 --> 00:08:46.840
Like use this page.

165
00:08:46.840 --> 00:08:48.520
Is this, this isn't, you know.

166
00:08:48.520 --> 00:08:51.160
I'm working on this one today, actually.

167
00:08:51.160 --> 00:08:51.760
Yeah.

168
00:08:51.760 --> 00:08:53.240
On this page.

169
00:08:53.240 --> 00:08:55.600
And you can see like how that works.

170
00:08:55.600 --> 00:08:59.000
And now we don't account for all of those versions.

171
00:08:59.000 --> 00:09:02.560
Like, for example, we don't have an article type built

172
00:09:02.560 --> 00:09:04.520
into this page right now.

173
00:09:04.520 --> 00:09:05.160
OK, why?

174
00:09:05.160 --> 00:09:08.400
Just you don't need it?

175
00:09:08.400 --> 00:09:10.760
So yeah, we just we didn't have needed it yet.

176
00:09:10.760 --> 00:09:12.440
So it's not full.

177
00:09:12.440 --> 00:09:14.560
So if you see something like that, like, well,

178
00:09:14.560 --> 00:09:18.200
there's obviously more than three types here.

179
00:09:18.200 --> 00:09:21.040
Basically, what would happen is if it was just an image

180
00:09:21.040 --> 00:09:24.120
and it was set to article, it would, this would fail,

181
00:09:24.120 --> 00:09:25.480
this would fail, this would fail.

182
00:09:25.480 --> 00:09:28.600
And then it would just end up with the image being shown.

183
00:09:28.600 --> 00:09:30.240
So you would have an image at the top,

184
00:09:30.240 --> 00:09:36.360
and then you would have the chat below would be how that works.

185
00:09:36.360 --> 00:09:41.160
So OK, cool.

186
00:09:41.200 --> 00:09:44.200
And there's a lot in here, like.

187
00:09:44.200 --> 00:09:47.080
I'm not going to get into this, because what I want to fix

188
00:09:47.080 --> 00:09:50.320
is actually for raising royalty on the next kind of section

189
00:09:50.320 --> 00:09:52.440
here.

190
00:09:52.440 --> 00:09:59.720
But this just gets into when you see the little orange kind

191
00:09:59.720 --> 00:10:01.280
of data.

192
00:10:00.000 --> 00:10:03.000
the database icon, that's where it's actually querying

193
00:10:03.000 --> 00:10:05.680
the Firebase database.

194
00:10:05.680 --> 00:10:08.840
And it can also, you can also run that as an API

195
00:10:08.840 --> 00:10:10.820
request back to tribe.

196
00:10:10.820 --> 00:10:14.680
So in this case, like it's getting comments.

197
00:10:15.840 --> 00:10:18.120
If I clicked on here, sorry, I didn't even click on it.

198
00:10:18.120 --> 00:10:21.320
I click on here, and you can see there's a query

199
00:10:21.320 --> 00:10:23.840
and it's going and getting the collection,

200
00:10:23.840 --> 00:10:25.960
which is called chat messages.

201
00:10:25.960 --> 00:10:29.720
And it's bringing back 100 as the first scroll

202
00:10:29.720 --> 00:10:31.960
and then it filters it and says, okay,

203
00:10:31.960 --> 00:10:34.360
make sure that the content ID is equal

204
00:10:34.360 --> 00:10:37.760
to the current content ID, and make sure that

205
00:10:37.760 --> 00:10:40.700
the status of the message is not set to deleted.

206
00:10:41.760 --> 00:10:45.720
This is identical to how chat messages work in here,

207
00:10:45.720 --> 00:10:50.720
get chat, you know, we have deleted is false, true.

208
00:10:52.120 --> 00:10:55.560
There's an ID, there's a content ID here.

209
00:10:55.560 --> 00:10:57.600
I'm sorry, there, content ID.

210
00:10:58.560 --> 00:11:00.440
I actually don't know, there's an ID there,

211
00:11:00.440 --> 00:11:01.520
there's an ID there.

212
00:11:01.520 --> 00:11:03.960
Oh, user, sorry, that's user.

213
00:11:03.960 --> 00:11:05.380
It's just the formatting is wrong.

214
00:11:05.380 --> 00:11:07.200
I think if you, there you go.

215
00:11:07.200 --> 00:11:10.800
If you hit refresh a second time, it pulls the,

216
00:11:11.880 --> 00:11:13.600
it's just the formatting is off.

217
00:11:15.480 --> 00:11:20.020
Invent, it's actually the user ID of the comment.

218
00:11:20.020 --> 00:11:22.760
Whoever wrote the author of the comment is there.

219
00:11:23.800 --> 00:11:26.340
The content ID, and then is deleted.

220
00:11:26.340 --> 00:11:28.800
So we've basically filtered for those two things.

221
00:11:30.260 --> 00:11:33.780
The differences here is we're actually writing this

222
00:11:33.780 --> 00:11:38.780
to a thing called chat messages, which has, you know,

223
00:11:40.020 --> 00:11:42.460
likes, replies, is it deleted?

224
00:11:42.460 --> 00:11:43.780
Here's the message.

225
00:11:43.780 --> 00:11:46.140
What was the user that wrote it?

226
00:11:46.140 --> 00:11:49.100
So we actually make zero calls back to the tribe API

227
00:11:49.100 --> 00:11:50.460
for this particular one.

228
00:11:52.020 --> 00:11:55.560
It won't always be this way, but that's how it's working.

229
00:11:56.860 --> 00:12:01.540
In here, and the reason we do it through Firebase

230
00:12:01.540 --> 00:12:05.460
is one very simple reason, speed.

231
00:12:05.460 --> 00:12:08.660
Oh, okay, really, is that, is that it?

232
00:12:08.660 --> 00:12:11.540
Firebase is a streamed data source.

233
00:12:11.540 --> 00:12:16.060
So it streams content in dynamically to everybody's screen.

234
00:12:16.060 --> 00:12:17.780
So when you post a comment,

235
00:12:18.900 --> 00:12:21.140
let's say there's a thousand people watching.

236
00:12:21.140 --> 00:12:23.740
If you post a comment, the database has to basically

237
00:12:23.740 --> 00:12:26.420
be queried a thousand times and repopulated

238
00:12:26.420 --> 00:12:29.140
on every single person's device.

239
00:12:29.140 --> 00:12:31.460
You know, every single time a message comes in.

240
00:12:31.460 --> 00:12:33.860
And if there's, you know, hundreds of messages

241
00:12:33.860 --> 00:12:36.300
coming in every minute,

242
00:12:36.300 --> 00:12:37.980
that can get very, very complicated

243
00:12:37.980 --> 00:12:40.860
to keep refreshing this query.

244
00:12:40.860 --> 00:12:42.360
Be like, is there new messages?

245
00:12:42.360 --> 00:12:43.200
Display messages.

246
00:12:43.200 --> 00:12:44.020
Is there new messages?

247
00:12:44.020 --> 00:12:44.860
Display that.

248
00:12:44.860 --> 00:12:48.140
So Firebase is like a streamed data source

249
00:12:48.140 --> 00:12:50.620
so that it just instantly shows it on everybody's screen

250
00:12:50.620 --> 00:12:51.580
within half a second.

251
00:12:51.620 --> 00:12:53.380
It's just like instantly shows up.

252
00:12:54.260 --> 00:12:56.140
So when I write the message and I hit post,

253
00:12:56.140 --> 00:12:57.940
it just immediately shows up.

254
00:12:57.940 --> 00:13:00.900
And everybody who is on this page would see my new message.

255
00:13:02.300 --> 00:13:03.380
It's just really smart.

256
00:13:03.380 --> 00:13:07.580
But it handles all of the UI

257
00:13:07.580 --> 00:13:09.620
and the complexities of the refreshing,

258
00:13:09.620 --> 00:13:12.100
all that for you.

259
00:13:13.300 --> 00:13:15.900
Now you have to set it up a very specific way.

260
00:13:15.900 --> 00:13:18.900
So maybe in a different video or something,

261
00:13:18.940 --> 00:13:22.620
I'll go through and explain exactly how this is set up.

262
00:13:22.620 --> 00:13:25.020
But it has to be done at a certain level.

263
00:13:25.020 --> 00:13:26.340
It has to be a certain,

264
00:13:26.340 --> 00:13:28.900
you have to use this list view, for example.

265
00:13:30.460 --> 00:13:35.380
If you use the wrong components here,

266
00:13:35.380 --> 00:13:37.100
it won't work at all.

267
00:13:37.100 --> 00:13:39.540
Like it won't refresh instantly this way.

268
00:13:39.540 --> 00:13:41.900
So you have to kind of line it up exactly right

269
00:13:41.900 --> 00:13:44.340
in Flutter flow, and then it will work.

270
00:13:44.340 --> 00:13:46.340
And that actually took us,

271
00:13:46.340 --> 00:13:48.820
or took me a few weeks to figure out

272
00:13:49.620 --> 00:13:50.940
because I built it the wrong way.

273
00:13:50.940 --> 00:13:51.780
All the time.

274
00:13:51.780 --> 00:13:53.380
Okay, good to know.

275
00:13:53.380 --> 00:13:55.820
Yeah, so, and it's just simple,

276
00:13:55.820 --> 00:13:58.860
because what you do is when you create a query,

277
00:13:58.860 --> 00:14:01.540
it creates children of everything below it.

278
00:14:01.540 --> 00:14:05.180
So for example, I was using a column here to say like,

279
00:14:05.180 --> 00:14:08.300
hey, just take this container or take this column

280
00:14:08.300 --> 00:14:10.700
and just repeat it over and over again for everyone.

281
00:14:10.700 --> 00:14:13.500
But if you don't use this list view component,

282
00:14:15.260 --> 00:14:18.340
and then one other little trick that Robert showed us,

283
00:14:18.780 --> 00:14:19.620
so Robert's on the team,

284
00:14:19.620 --> 00:14:22.340
he's like an outside consultant.

285
00:14:22.340 --> 00:14:25.140
He's like a Flutter flow expert.

286
00:14:25.140 --> 00:14:30.140
And he's been doing development for 15 years plus.

287
00:14:30.420 --> 00:14:33.540
He's basically a coder that's also knows Flutter flow.

288
00:14:35.300 --> 00:14:39.820
So he's basically showed us how this actually should work.

289
00:14:39.820 --> 00:14:41.980
And there's no documentation on Flutter flow

290
00:14:41.980 --> 00:14:44.460
that I've seen anywhere that tells you

291
00:14:44.460 --> 00:14:46.340
this is the way to do it,

292
00:14:46.340 --> 00:14:47.860
other than what he told us.

293
00:14:48.940 --> 00:14:49.860
Wow.

294
00:14:49.860 --> 00:14:52.780
So what you do is you make the query on a container.

295
00:14:52.780 --> 00:14:54.580
So it's querying in this container,

296
00:14:54.580 --> 00:14:57.860
and then below it is where you actually grab the children

297
00:14:57.860 --> 00:15:00.060
and you link this back into.

298
00:15:00.000 --> 00:15:02.360
to that query.

299
00:15:02.360 --> 00:15:04.040
So you get the results of it,

300
00:15:04.040 --> 00:15:06.280
and then it will duplicate whatever is below.

301
00:15:06.280 --> 00:15:08.880
So in this case, it's a thing called comment,

302
00:15:08.880 --> 00:15:11.940
and it will just duplicate that over and over again

303
00:15:11.940 --> 00:15:13.360
with every comment that comes in

304
00:15:13.360 --> 00:15:15.740
and then all the replies as well.

305
00:15:15.740 --> 00:15:18.400
So this thing to get this right,

306
00:15:18.400 --> 00:15:21.320
like probably took us at least a week or two

307
00:15:21.320 --> 00:15:22.560
to get this dialed in.

308
00:15:24.200 --> 00:15:26.360
Like we don't need to rebuild it, right?

309
00:15:26.360 --> 00:15:28.960
So like this is where I would come in here,

310
00:15:28.960 --> 00:15:32.560
we'd copy this entire page in one click.

311
00:15:32.560 --> 00:15:35.360
I'd right click on this, hit copy, right?

312
00:15:35.360 --> 00:15:37.560
Go over to my other project and hit paste.

313
00:15:37.560 --> 00:15:39.400
There we go, wow, okay.

314
00:15:39.400 --> 00:15:40.720
So now, and then when you do that,

315
00:15:40.720 --> 00:15:42.360
you're gonna get like a million errors

316
00:15:42.360 --> 00:15:43.920
because you gotta reconnect a bunch of stuff,

317
00:15:43.920 --> 00:15:46.320
but it is, you know, you can kind of do it

318
00:15:46.320 --> 00:15:48.560
with like in under 30 minutes or so,

319
00:15:48.560 --> 00:15:52.000
you could reconnect it and do that.

320
00:15:52.000 --> 00:15:55.600
So I'm gonna go ahead and stop it again here,

321
00:15:55.600 --> 00:15:57.560
and then we'll jump into,

322
00:15:57.560 --> 00:16:01.360
I think we'll do just some basic like error stuff

323
00:16:01.360 --> 00:16:04.360
and then maybe changing some local state updates here.
