Building the official Dutch Covid Dashboard with Sanity and Next.js - Sanity.io Meetup

Building the official Dutch Covid Dashboard with Sanity and Next.js - Sanity.io Meetup


Building the official Dutch Covid Dashboard with Sanity and Next.js - Sanity.io Meetup

Jan Hoogeveen

Jan was involved since the start with building the official Dutch Corona Dashboard. He’ll share how the project evolved over time and how Sanity has helped them build a maintainable and reliable dashboard.

Join us at our monthly meetups: https://www.meetup.com/meetup-group-d


Content

5.359 -> yeah i'll be talking about the official
7.04 -> dutch
8.08 -> kovit 19 dashboard
10.4 -> and give a little bit of a background uh
13.04 -> i'm young i work at clever franca and we
16.24 -> are a data design and technology
18.88 -> consultancy
20.56 -> and we were
22.72 -> two years ago the the dutch government
25.199 -> the ministry of health reached out to us
27.68 -> and asked for
29.199 -> help
30.4 -> building a dashboard about
32.8 -> kovit
34 -> and obviously we said yes because
37.12 -> one it's a cool topic to
39.6 -> we're very glad to help out
42.84 -> um but it was an interesting
46.48 -> it's a bit of an interesting dynamic
48.16 -> because
49.84 -> we are a studio we don't work
53.039 -> for the government so we were a little
55.12 -> bit under the radar
56.96 -> and another interesting thing is i think
60.16 -> for the first
62.32 -> 12 18 months we were fully anonymous
66.479 -> which was great actually we could just
68.08 -> work
69.52 -> do our best work
71.76 -> give the ministry all the credits
75.84 -> and just do our thing
77.84 -> and that actually led to us using
80.72 -> dare i say a quite modern stack
83.28 -> especially when you consider that it is
85.439 -> an official
86.56 -> government project
88.88 -> so let's just dig in
90.96 -> and this is how it looks in one of the
94.4 -> latest versions
96.24 -> uh before i actually start i want to
97.84 -> make a small
100.4 -> disclaimer that
102.24 -> after a certain point about two years in
104.479 -> the project a year and a half
108.32 -> us and the government
110 -> well we didn't really split ways but we
112.88 -> transferred maintenance of the project
114.799 -> and further development of the project
116.479 -> to a different party
120.24 -> so so whatever is live now
123.2 -> we did a big part of it but we can't
125.36 -> take credits for all the latest changes
128.16 -> and the latest enhancements
132.239 -> um and what was interesting about this
134.8 -> is
136.16 -> in a way this was a true agile project
138.239 -> like we really started with a really
139.84 -> small v1
141.44 -> because
142.4 -> you know it's a crisis like it's
145.12 -> definitely the first time that i
146.64 -> encountered a pandemic or lift through a
148.959 -> pandemic
150.319 -> so we needed to get something
152.72 -> online as quick as possible there was
156.16 -> not a lot of time
157.519 -> i wanted to have a lot of value
159.92 -> and that way we slowly build it up so
161.84 -> first a v1 then a v2
164.879 -> a v3
166.239 -> and the interesting part is v1 we
168 -> started really
169.68 -> on a macro level
171.76 -> like very factual these are the big
174.48 -> numbers
175.68 -> about the netherlands you know this is
178 -> how we're doing
179.68 -> and the more time we had the more
181.36 -> refinements we could make and after a
182.959 -> while we could shift focus a little bit
185.04 -> more to
186.239 -> like a local micro level like how is
188.4 -> your
189.36 -> municipality doing
191.519 -> um and we could also shift a little bit
193.68 -> more to
195.12 -> a narrative style so add articles
199.76 -> and timeline
202.08 -> so the first release was in june 2020
204.959 -> which i think covet first started
207.12 -> appearing in europe around march
210.48 -> and we started working on this project
212.56 -> somewhere in
213.92 -> may if i remember correctly
216.159 -> so there was a really short turnover
217.68 -> time
218.959 -> and then a couple of months later we
220.4 -> released version 2 with a couple of big
222.48 -> nice enhancements better navigation
225.599 -> and
226.56 -> sometime later we released version 3
229.2 -> way more refined but
231.36 -> i'll show those later
234.4 -> so
235.519 -> this in essence is is version one it's
238.56 -> it was a really simple almost a
240.72 -> one-pager website
243.04 -> a couple of tiles with the most
245.84 -> important information we needed at the
248.08 -> time
250 -> and nothing more than that
254 -> there were a couple of things that we
256.239 -> could say about regional um numbers
261.199 -> but only two thousand you know it was
263.12 -> very small
265.52 -> and these are some components we built
267.12 -> at the time
272.24 -> and
275.28 -> one of the design principles that this
277.36 -> is important for the rest of the talk
279.28 -> and for the full context
281.68 -> is
283.36 -> yes it's a crisis and we needed to get
285.28 -> something live fast but at the same time
287.919 -> it's the government and
290.32 -> you know the information we present
292 -> needs to be
293.199 -> reliable it needs to be
294.84 -> accessible it's important that it's not
297.759 -> easy to
299.12 -> to be hacked or be changed by a third
301.44 -> party
302.72 -> so what we did at the start is make a
304.96 -> decision
306.24 -> everything we do
307.759 -> is static static html static css
313.039 -> static web server no node.js just get
315.919 -> something live
317.84 -> in its basic form so you we're using
319.84 -> next export
323.36 -> and we publish those things with a
325.68 -> docker container where you can see i'm
327.52 -> not going through the whole
329.28 -> image container thing
331.039 -> but we're serving a very simple static
333.36 -> nginx server
335.36 -> as basic as could be
338.72 -> something that was a little bit less
340.56 -> basic is from the start we also decided
343.52 -> that at some point maybe not the first
346 -> release
348.72 -> but we want to have a multi-language
350.32 -> environment so what we did very naively
353.12 -> build the nl.json file
355.36 -> english json file
357.36 -> import those and based on
360.08 -> the process environment variable public
362.96 -> locally
364.16 -> we would switch json file and that's it
366.16 -> you know that's multi-language done
368.8 -> and in the beginning what we actually
370.16 -> did was
371.28 -> just run the docker container twice once
373.36 -> in dutch once in english you've got two
376 -> containers
377.36 -> put them on different servers
379.68 -> load balance turned on
383.44 -> and
385.84 -> yeah so we started on may 29th which was
388.479 -> a friday i believe
390.96 -> worked through the weekend
392.8 -> my colleagues went through the ministry
394.72 -> of health and
396.319 -> you know they did designs there and
398.16 -> workshops
399.759 -> and we went live on june 4 which i think
402.639 -> is six or seven
404.56 -> days total
406.24 -> probably four work days officially
409.68 -> but it was insane how fast we could have
411.28 -> something live
414.24 -> then
415.36 -> version two became a bit bigger
417.759 -> as you can see there's a bit more
420.16 -> copy here there's some updates going on
423.28 -> there's more information
427.12 -> and you know remember those those those
430.16 -> english json files dutch json files
433.44 -> they grew a little
434.88 -> um at a certain point we started adding
438.08 -> these
439.44 -> icu syntax like variables in the in the
443.199 -> text which worked but
445.52 -> became a bit cumbersome
447.759 -> and even worse some configuration values
450.72 -> started to be added to these files
454.319 -> and
457.28 -> you know it works it's great and the
460 -> awesome thing about it is it's all in
461.84 -> the repo all the configuration all the
463.759 -> data was in the repo everything was open
465.68 -> sourced everything could be verified but
468.56 -> maintenance wise
470.479 -> not the easiest thing to do
474.72 -> at some point we switched to localize
480.96 -> which worked for a while you know to
483.199 -> manage translations through a
485.599 -> ui
486.8 -> but we found out it had a couple of
488.24 -> downsides and the things it's actually
491.12 -> great at is like verifying that the
493.68 -> changes you made are right you know have
496.08 -> a nice qa step
498 -> merge them in your repo and
500.72 -> take your time slowly to do that
504.8 -> but we found out that that wasn't really
506.479 -> the workflow we needed the workflow we
508.479 -> needed was
510.319 -> maybe five minutes before
512.8 -> we do a daily update with new data we
514.959 -> need to change a couple of words
517.12 -> that was
518.32 -> somewhat difficult to do with localize
521.12 -> and at some point what we also did was
525.68 -> questions came in can we have
528.56 -> both text can we have hyperlinks in our
532.24 -> copy
534.48 -> well you know the the quick answer is
536.8 -> yes we can we just add some markdown
539.04 -> syntax to it
540.56 -> add snark down to uh to the front end
543.6 -> and we can show it that way but what we
545.6 -> essentially did was we basically abused
549.44 -> localize as a cms
552 -> which you shouldn't do
554.72 -> and another thing is this is what i just
556.32 -> was talking about you know the workflow
559.12 -> every time we wanted to do
560.88 -> an update of of the dictionary files we
564.24 -> had to make a pr sometimes that went
566.24 -> wrong
567.519 -> depending on which user was logged in it
569.44 -> would use different export settings
571.6 -> and it was really difficult to uh
574.16 -> to destroy settings to all of the users
576.24 -> that should have access
578 -> to to localize
580.08 -> so that's when we started thinking about
582.24 -> alternatives
586.08 -> talking about alternatives so version
588.48 -> three
590.56 -> all the most important work was
593.279 -> done this was the the part of the
597.04 -> the the crisis where the vaccines became
601.279 -> a topic
602.399 -> so here's
603.6 -> a chart we made with with vaccine data
606.88 -> there's a nice little
608.88 -> ticker on the right that showed how many
610.88 -> people get vaccinated every day or per
613.12 -> minute
615.519 -> and
616.959 -> like i said a big topic of feed free was
620.399 -> storytelling so
622.32 -> we want to write articles
624.399 -> and we want to
626 -> share those articles and put some
629.519 -> metadata in there that's good for seo
632.24 -> bigger micro copy
635.6 -> and thus we introduced
638.16 -> sanity
642.56 -> because i knew we wanted to to move away
644.48 -> from localized to make things a bit
646.079 -> easier to use anyway
647.839 -> and we wanted to add that block to the
649.92 -> front end
651.36 -> so this is one of the first things we
652.88 -> did just how do we move away from
655.92 -> localized to something more
658.32 -> scalable maintainable for the project
660.32 -> we're building
662.079 -> and
663.279 -> well one of the the easy things is
665.6 -> you know make a schema locally string
668.24 -> um supported languages is an airaid
670.399 -> which at the time was just uh
672.72 -> dutch in english
675.2 -> and then
676.48 -> you have a string but in two languages
680 -> and you can use that
681.92 -> so one of the first things we built with
683.6 -> it was the frequently asked questions
685.92 -> section which needed to be in dutch and
688.079 -> english
689.839 -> i needed a little bit more
692.16 -> formatting you know like a couple of
694.079 -> paragraphs some bold text some titles
697.519 -> so this was a relatively quick way of
699.92 -> doing that
701.279 -> multi-language
702.399 -> and done
704.399 -> and
706.24 -> the great thing about using sanity for
708.88 -> this for us
710.72 -> was how
712.24 -> flexible it was you know like
715.839 -> i wish i could say i made a really
717.2 -> refined studio like
719.68 -> the previous talk had a really nice
721.2 -> looking studio and i'm a bit jealous of
722.959 -> it ours is a bit more there i say
725.76 -> functional
726.88 -> um
728.32 -> but we just needed something to work
730.48 -> and
731.839 -> we did have a great api though with
733.76 -> sanity
734.959 -> and one of the things like i said at the
736.8 -> beginning is we wanted static exports
739.839 -> so
740.8 -> what we could do and what we have done
743.12 -> is create all these helper files to help
745.279 -> us manage translations
747.44 -> and
749.2 -> this is one of the most important ones
750.8 -> for developers so we've made a little
753.92 -> command line interface to
757.04 -> get the most current or the most
760.32 -> uh fitting
761.76 -> translations into your local environment
764.959 -> like you would need these when you're
766.88 -> working on the front end
771.44 -> for static export oh wait yeah this is
773.92 -> um
775.04 -> like one of our queries where we say we
777.44 -> want to get all the localized texts
780.8 -> but don't give us the drafts because
782.32 -> those are for tomorrow probably because
785.04 -> we had daily updates
788 -> and what we also did was you know if you
789.839 -> combine those things together like get
792 -> me all of the documents that are
794.56 -> of type dictionary
796.959 -> flatten them or unflatten them
799.04 -> and you can see here here's the dnl json
801.92 -> and the english json we did add a
804.639 -> underscore export to it
807.04 -> but we would write out these dictionary
809.04 -> files
810.16 -> statically
811.6 -> in the docker container
813.68 -> so there was no api connection between
816.56 -> sanity
817.839 -> and the dashboard once we went live
820.24 -> every day
821.44 -> so there was a database connection
823.519 -> while developing it or when previewing
826.16 -> it on a special preview server but not
828.72 -> once you exploit it you know
830.959 -> so that made it very resilient
834.32 -> um
835.76 -> another interesting thing is
838.56 -> i mean once you have that data
840.88 -> once you have those json files once you
843.199 -> have those things already in
845.6 -> in a node.js environment
847.839 -> um what you can do is some clever tricks
850.72 -> like this where we
852.959 -> write a
854.24 -> typescript definition
856.639 -> um
858 -> i had a bit of trouble getting this
859.6 -> started locally and and could i can't
862.72 -> show everything working at the moment
864.959 -> but this would give you really nice
866.959 -> feedback in your editor and vs code like
870.399 -> you know you're trying to access this
873.12 -> translation
874.72 -> but that key doesn't exist so either add
876.88 -> that key insanity
878.8 -> or i don't know import the texts again
882.24 -> so you get some really nice feedback
883.6 -> that way
886 -> um
887.6 -> yeah and and this is then
890 -> the studio where we've transferred all
892.639 -> of the the locality files from localize
896.72 -> into sanity um we decided to keep the
899.92 -> term localized because
901.839 -> the content managers were already used
903.76 -> to it
904.8 -> um even though i would probably name it
907.04 -> something
908.16 -> else now
909.6 -> but they were used to it so they knew
910.959 -> where to find it
912.48 -> they could update all of their strings
914.959 -> here
916.16 -> they knew that they could keep it in
918 -> draft mode if they wanted to publish it
919.76 -> later or they could publish it if they
921.76 -> wanted it to be live for the next
925.279 -> release
929.519 -> yeah so frequently asked questions i
931.199 -> just showed those as well
934.079 -> those are
935.199 -> just documents and we added them to
937.199 -> groups
939.36 -> and this is using the um
942.88 -> the multi-language string configuration
945.839 -> we also built this
947.759 -> language switcher you can see in the top
949.44 -> right where we can switch between
951.6 -> dutch and english
953.44 -> we found out that
955.279 -> after a while the the studio just has a
957.68 -> lot of information if you show
959.759 -> dutch and english for every field you
962.16 -> need to fill in so we made it as a
963.6 -> filter so
964.8 -> you just fill in dutch first and then
966.48 -> you switch to english
968.8 -> so this is the english view
975.44 -> and then it became time to
978.24 -> refine more you know like all of the
979.68 -> essential features are done and now we
981.6 -> could really spend some time on
984.32 -> making sure the ux was top notch
987.199 -> and we worked a lot on accessibility
991.68 -> so here are some more charts
994.959 -> i'm actually going to show a video
997.759 -> where we show some of these
998.959 -> accessibility features and ux features
1000.959 -> in action so i'm just going to let it
1002.8 -> play for a while
1012.48 -> oh
1014.639 -> i have my slides confused this is
1016.32 -> actually a different video this video is
1018.24 -> about the articles
1019.92 -> and i remember kitty showing something
1022.16 -> like this in a previous talk
1024.72 -> um
1025.839 -> so you can write an article
1028.24 -> in the article you can actually add
1030.959 -> a chart
1032.319 -> and then there is the chart
1033.52 -> configuration on the right here
1035.839 -> and that allowed people to make these
1038.24 -> really cool
1039.679 -> engaging articles they could share on
1041.439 -> social media with specific charts in
1044 -> them
1045.039 -> that showed the relevant topic at the
1046.64 -> time
1047.76 -> um
1049.52 -> i'll be honest there was some developer
1051.28 -> capacity needed here because you know
1052.96 -> like source key title key difference key
1056.16 -> you need to know which keys to use
1058.48 -> so it's not completely foolproof but it
1060.64 -> was really easy for us to use and to
1063.52 -> to to generate new articles quickly with
1065.919 -> these nice interactive charts in them
1070.16 -> so this is the video
1072.08 -> for accessibility optimizations
1074.93 -> [Music]
1087.44 -> [Music]
1097.24 -> [Music]
1099.36 -> the current situation in the netherlands
1101.12 -> view all figures for the netherlands
1102.799 -> jump to the menu for data points
1104.559 -> measures there are national measures
1106.32 -> vaccinations
1107.679 -> administer 10 million 900 7977266
1113.36 -> average number over the past seven days
1115.76 -> 235.6
1117.43 -> [Music]
1127.83 -> [Music]
1138.559 -> so
1142.65 -> [Music]
1153.679 -> cool
1154.96 -> um
1159.52 -> where's my mom's yeah
1162.32 -> so here's the studio and i'll make the
1164.16 -> screen a little bit bigger so you can
1166.24 -> everybody can see it
1169.52 -> it's
1171.44 -> not the prettiest studio uh we really
1173.52 -> focused on functionality first instead
1175.679 -> of making it the most easy to use
1178.64 -> straightforward cms
1181.6 -> but it does the job and once you know
1183.52 -> where to find things
1185.679 -> no this is quite easy to update
1188.08 -> um
1192.64 -> one of the interesting things we found
1195.2 -> or one of the most useful things at the
1196.96 -> time
1197.919 -> was in the dashboard
1200.16 -> where we added these sections that say
1203.28 -> hey there's documents you didn't publish
1205.039 -> yet or
1211.039 -> this one
1212.08 -> which says hey there's actually
1215.36 -> these multi-language texts these
1217.2 -> localized strings
1219.36 -> that you didn't translate into english
1221.039 -> yet so this was really helpful um for
1224.48 -> the content managers to see okay what do
1227.12 -> i still need to translate because
1228.559 -> otherwise the english
1230.48 -> version is
1232.24 -> out of sync with the dutch version
1234.799 -> uh and the new ones
1236.799 -> that were recently published
1239.2 -> which is also quite useful because
1241.039 -> usually
1242.08 -> when updating these dashboards um
1245.36 -> you're working on like one very
1247.36 -> important topic in a couple of weeks
1249.84 -> and
1250.72 -> there's a lot of focus on these recent
1252.96 -> localized texts for a little bit
1255.28 -> and then they just you know
1257.44 -> they sink to the bottom and they don't
1258.88 -> get updated as much anymore
1262.72 -> one thing that
1264.24 -> we also
1269.52 -> just saw
1274.559 -> what i want to show
1276.559 -> is
1279.28 -> the charts
1282.48 -> and i know it's not really uh
1286.799 -> well it is partly related to sanity so
1289.52 -> these charts you can hover over them and
1291.2 -> you see the values per day
1293.36 -> but one of the things you can also do is
1295.84 -> use your cursor keys
1299.84 -> and like we just saw in the video this
1301.36 -> will also
1302.64 -> announce it to a screen reader what's
1304.559 -> happening
1305.6 -> um
1306.559 -> and if this doesn't go fast enough
1309.12 -> you know
1310.48 -> shift
1312.4 -> you can make bigger jumps and go through
1314.64 -> it
1315.44 -> and if we get to this little bit darker
1318.96 -> blue area here
1321.52 -> yeah it says test because i'm working
1323.679 -> from a test data set here
1326.64 -> or actually this is this is when they
1328.4 -> started testing the sewage data
1333.52 -> these annotations in the charts
1336.88 -> these are actually coming from sanity so
1338.88 -> this is part of the whole
1341.6 -> chart builder configuration thing where
1344 -> they could update tasks uh texts add
1346.88 -> annotations to the charts
1349.039 -> and make it all a bit more
1350.72 -> dynamic and lively
1352.96 -> um
1354.559 -> we can go back to the keynote but
1356.159 -> actually
1357.84 -> yeah no that was it cap so
1360.4 -> feel free to jump back
1362.64 -> and i'm ready for questions
1364.72 -> right on thank you so much for that
1366.159 -> presentation i loved
1369.76 -> oh
1370.559 -> we lost cap
1372.48 -> newscap
1374.24 -> for a second
1375.679 -> i i'll just say thanks so much for uh
1378.72 -> i mean
1379.679 -> it's really cool to see uh uh what was
1382.08 -> going on there with uh with the keyboard
1384.48 -> uh stuff that you just yeah it was
1386.72 -> really cool that we had
1388.48 -> the time to do that actually you know
1390.159 -> working for the government accessibility
1392.64 -> is
1393.919 -> important i mean it's important it's an
1395.76 -> important topic anyway but but
1398.24 -> i think the government is one of the few
1400.08 -> clients that actually pays you to do
1402.08 -> accessibility audits and
1404.4 -> yeah time to actually focus on it so we
1406.96 -> also really enjoyed it as a studio too
1410 -> to build these little enhancements you
1411.919 -> know it's
1413.44 -> it's kind of imagine you've gone through
1414.96 -> a lot of like accessibility audit
1416.72 -> process there too right absolutely we
1418.799 -> did uh we did multiple um user
1422.4 -> interviews and focus sessions there were
1424.96 -> a lot of ux research
1427.36 -> sessions happening and we also had
1430.159 -> specific sessions with people with a
1432.72 -> disability
1434.32 -> uh and we could see how they were using
1436.32 -> the dashboard you know not just in
1437.76 -> general but like
1439.679 -> what the things were that they were
1440.88 -> struggling with
1442.88 -> right like the user journeys and stuff
1444.799 -> that they were taking or the
1446.799 -> yeah yeah so that was uh it was really
1449.12 -> enlightening to see the the things they
1451.2 -> had difficulty with and the great news
1453.36 -> is we could fix that
1454.88 -> immediately
1456.64 -> um and yeah historically i would say
1460.799 -> database is a difficult topic
1462.96 -> with
1463.919 -> accessibility anyway you know like
1467.44 -> there's so much data like if you saw
1469.279 -> those line charts what is it 300 400
1472 -> data points how do you make
1475.36 -> accessible because accessible
1478.559 -> um
1479.6 -> i mean it has multiple meanings right
1481.76 -> like i can give you all of the
1483.2 -> information
1484.88 -> but that doesn't mean that it's easy to
1486.559 -> use or that it
1488.08 -> that it's accessible to you to get that
1490.08 -> information
1491.919 -> yeah exactly it's maybe hard to see what
1494.4 -> you're uh what you're doing i have your
1496.4 -> back hey welcome back
1499.44 -> my
1500.4 -> house just like lost power and came back
1502.64 -> anyway
1503.679 -> wow we were just having uh accessibility
1506.48 -> for a bit
1508.64 -> awesome uh i have one last question that
1511.44 -> came from the community uh from martin
1514.08 -> uh there he wonder about these uh
1516.4 -> different languages that you have
1518.159 -> because there's english and and dutch
1520.64 -> would you have you chose like a
1522.159 -> different strategy and you have had more
1524.64 -> languages like if you had a lot more
1526.64 -> languages would you have chosen a
1528.32 -> different strategy
1530.72 -> no not at all um
1533.919 -> no i mean we could we could have changed
1535.52 -> the filter to be
1537.36 -> easier to use
1541.2 -> no i think this is just how it how it's
1543.2 -> organically
1544.4 -> true you know like we started with a
1546.4 -> really small app with
1549.6 -> you know the dictionary found the
1550.88 -> beginning was like 50 lines
1553.039 -> you know you just copy paste that rename
1555.039 -> it to english json and you're done
1558.4 -> and that works but then it slowly grew
1560.799 -> to be bigger and bigger
1562.88 -> uh and that that's actually one of the
1564.559 -> points that i wanted to make and i i
1566.4 -> completely forgot about it
1568.24 -> so so it's good that that question came
1570.32 -> up
1571.36 -> yeah
1573.12 -> the thing about sanity that
1576 -> was most appealing to me while building
1578.08 -> this thing
1579.6 -> was
1580.799 -> i felt completely okay with making
1584.24 -> mistakes
1586.24 -> if i would make a mistake in the schema
1588.559 -> i knew i could always do a migration you
1590.799 -> know or
1592.799 -> i could change things
1594.48 -> along the way as we went
1596.48 -> and
1597.279 -> that happened actually you know like
1599.84 -> if we make mistakes it was fine we could
1601.6 -> just change the configuration and and
1603.84 -> solve it
1604.88 -> so
1606.08 -> yeah it seemed like you've gone through
1607.279 -> a lot of inspirations like
1609.52 -> different versions and then changing
1611.36 -> things based on how the world changed
1613.52 -> and the world changed a lot in that this
1616.559 -> yeah yeah and also the the technical
1620.24 -> um considerations they also slowly
1622.799 -> evolve over time because you start with
1624.72 -> this concept of
1627.12 -> it needs to be fully static at all times
1629.6 -> you know like because it's the most
1630.96 -> resilient way to build an app
1633.2 -> and then very very slowly we've got a
1635.36 -> bit more leeway to do things differently
1639.84 -> yeah so we could have built a different
1642.08 -> api
1643.76 -> from the start knowing what we know now
1645.919 -> but um
1647.52 -> no i'm actually very happy with sanity
1649.6 -> for for
1650.96 -> managing translations the only thing we
1654.799 -> um
1656.96 -> i'm not going to say we should have done
1658.159 -> it better but you know like i said these
1660 -> things grow over time
1662.24 -> the only thing
1664.24 -> i would want to see different
1666.32 -> is we should have made a clearer
1669.12 -> distinction maybe between what's content
1671.36 -> and what's copy
1673.44 -> you know like putting the markdown in in
1676.08 -> the language string files that that that
1678.48 -> was the the part where it went wrong for
1680.84 -> me temporary solution right we recovered
1684.559 -> because we went to portable text after
1686.32 -> that
1687.039 -> yeah
1688.159 -> wow this was uh this was really cool uh
1691.52 -> yeah thank you so much for uh for your
1693.76 -> talk
1694.84 -> um for everyone you can find me on in
1697.44 -> community slack and uh also on twitter i
1700.88 -> will share the twitter handle in in the
1703.279 -> chat so you can ask more questions even
1706.88 -> after this i'm sure people will have
1708.24 -> more questions uh as well
1711.12 -> um
1712.72 -> yeah thanks so much again for uh for
1715.12 -> joining us today
1716.88 -> thank you jan thanks for the invite
1719.2 -> thank you all right cheers
1726.399 -> you

Source: https://www.youtube.com/watch?v=08tpeV0tnFQ