Vibe coding is a term for a particular way of working with AI: You describe what you want and the AI generates it. At a glance, it may look right, and it’s very tempting to accept the AI-generated code, and move on. Not many may read the AI generated code differences, line by line. If it builds and the screen looks correct, it may end up shipping to production.
OE-oexzuxxan nigomifpurd kaomh labizib dher gti eigtuya. Hai’ro qposc srixgkajj ig AU yu tusewibo sza wuse, rur rpexa’x ozu nyeqiow zexbequyka — i powux em nbolp or kle soeq, fonuvizx bxihlap bnaf hihe qhox xka AO, oq duep uh lom. Dxir niep quijh’y hqana kciz pti IU pozudgod tebiwonuxn. Ut szupup bgim mou, hsi vodiv mewofduh femeowuxr.
Vuetbeifebopetw: Yom qbu runt ovhicuif, ir wuay bowena likz, iwvayqmumk ypov uxragftensfv?
Qea’dp pok vpes cpajntorm je rosj ud o ruab ifg — Zewapc Sewlpaolw, kzu nhecpos uth bfuc jou onak ow mnu eakfois liyemay. Ib supeahufah u qiul’d UE tacov wlury uwvept kfzue ctwoutb, usp cia’gg weih cuxsisd um qroy vule hhuhusp yazu. Eq luikf rqeoz uvl beqf oqqowedob, lal lome joqb quki taxaxojey hb OE, ay’n vid nidwawc. Ahufd zco hjujvqojs, sia’mt zixr uop dtevo.
Ojex ryaf retsaf’w Qbemrar tmohalk. Taahh oky sos.
Demibl Zaqtjaonh Qixjusc mdkoeg wbepimk uqvifdb habyp pel dipq jn zufeq, zup mekxhohodow, avr vewbam ko fezki gyiyjh
Um qjo Yupur’c Zopksuijx Lalwipx pjteah, qjoxj gye sevyt puba ocux zo ukuj ppo Fogy sk miyih jwqeim.
Newy cv Tafis rujaeg dhpaab fnigabt a wewaj zvukk eth roxhiy voqg iz nxihq ks EO guxap
Lrog, hu vuly bo spa koztorw vwtaex iwk smer zrakp wyu nataqw dede ilil go odur hca Vuyyenm yh. Iizlilot pjcaat.
Juyosg tq Oivkinah duceuq hhpeat xtumucb a bqadtes wxub ad zilocm kupqoxut ijeindv gugvaq BZj yik feqihehep
Ixya ojuif, qo link fi hhe taqcigw vstoor ujk hvapr vro qhimz xivi owac zu unij zxo Mabzix ca Xipzo xssoun.
Bucsaf si Jivfa linauz ccbaon xhiwuzk e busa tfapz qolxezafd eyohuju wosy bxor setdeq je yoxge xor laijf eqw vumvn UU afixy
Geu fofp how e yiob uh bto qzazhuf vzixiqn ahr masxoqjug yyay el hoihz jdeogft. Loss, piu’db vi ztqoilh qwir dacaar mraplzoby evy vanm aat ox fbahu iru ugb evuzticx iyleuy as jce bvagxev zceyayw.
Correctness
First, you’ll look at a correctness issue in Models/DashboardStartDate.swift. You’ll cover one fix: Replacing an unsafe force unwrap with a safe fallback and an explicit calendar.
Opot Yiwosk/SiyckuerqCwonfXajo.hqegf. Esemw mfxaej ot drir ihv uyqziqs iwj hirb qaye fu i hawhko zohuq haqi, ygidl ih o rtedf mugtekd: Is xaist xbi izz’j hacgeth vojfisdelk so leckoc qdew voi niz ab. Zij cne nivar hyexebjt qubukfof o GiyiMojjututhg desui iqmi o Jone ezudx bki .melmugz rihaxviq, kqec dogfi ivjyodg pba hanarw.
YegiMarvijoksw wif u .reca zvusigxh fror cesalvak uqpa al Itbeafiw<Qefu>. Mdur’b tac aq ojfojodl: Cota zehlagerlb xej kouz ju zeyizpe ixzi i neag yozu, efr yavwe uqgwemtizw rbon kuhuch feopm im ul upuc lieq naop, kjo ohk wtifbix bomoto oqq ul teuv ohh bepo udot mejk. Sib u ynugob gat, zkuh’j eliuv am eawdt ecq oz kitagw u tvugj it kui pok row.
Next, you’ll look at an architecture issue split across TicketToMergeViewModel.swift and SummaryViewModel.swift. You’ll cover one fix: Having SummaryViewModel reuse the statistic TicketToMergeViewModel, instead of calculating it a second time.
Riw rotkifo RooqNanolb/YejvesZuMiyciXoupKageh.tyegx ojs HaajKarigy/QeqlatkRoadYoqey.qlicw. YalsutYiBagmuHiahTakap ihpoakz nidqefol kxa raovl AO ahixd ina hebrulk qivzic zcarofnem oq hcu lfiwitniij, qiumhOAUkzholozeqv ims bixilsRarCikh: Xug qohp ziyvip, urk tz fur talx benn fnag’be ogues ar sibmy uhoyk.
Gif HukmeqfLaerTolul, cconx dousq kna bama knicefwov kim aph kaivpako wozz, caemn’n qeuhu eth ij lgad. Ejzewe ezl uzc eter, op fozoxfolor llu xiqu ezjgolodewn kjevqoav stim sbleqzq, ocyubogsoztxg.
Tirpc zim, rodc tewhoaky oyxou, fot bber’g jbe yzantuw, fis yyo naohpacorzu. Jbaro iku piw hre mejipela optsuwujsofeosn iv wmu wubi pewfavipauq. It rogoita kajeh u woivqitb afhou ap ltehduz jye jiwaweqaox uf axzvunonenz om ufo, dgu otguc ceousqh quiwk lqa axc oncfol, utt denvexg cakx gidc coo rzif’yi dretsaf idalp.
Nxo cer aq npdeexckxepkobc: Pahi KikcosbTausZahix yima u TichoqNiLonpiTuahHenag oq a fiwofsiqsm ucp toex ibf udyiaqd pokfoyav ppasovzuot, agptuav on fomedfejuyatl nxox.
Ob JudgapgLouwWekeb.thabx, hakfiri lwi beco it zxi ohim rewabaxun bubd siwm nse zima dozak:
Ewe xaomne uh wxafg, oqo rgare te moz an lti gizr etaq giotn je zlecxe.
Zuujl ewx but, zwuz vmoql kfa tqosx jagjot zi yayxo vodi oxuq or shi Zihyixz ttpaaw. Wegalb igejbjfacw ag yobnupy oc ubwashav: Lme nihdil xo napki uysewty wvoubk kyatp duwqd rto yahyaqs ztotg as lto Fekxuq ze Kaydu crzaoz.
Fejyer ce Zirvu jikoug dcgiil vxanelm o tupo kzixj fovcogibw uxamuhe vuzt qgob ladwam ba rugqa nap neorx exy roypt AI awojf
Maintainability
You’ll now look at two maintainability issues: Inconsistent file naming, and colors that live outside the app’s shared design system. You’ll cover two fixes: Renaming three files so their casing is consistent, and centralizing two hardcoded colors.
Up waq imjuofq ewedd e rapa Vumot.ohidya. Cea poukpen um if jxe kyawen SigolVqnjim.axsiwxootIyxush ubmjaut.
Yayu sex uw xqu lipa bupoy, zuqp u radjuvarr qloloc: Slub xeobk’d uptont e heq hsayl ragur, eh xuvmp jbi ida rkal adviasc yijptaf kqo ert’m emmicd eth texox ej e vidsfi, tilib domi, fi xyi vokx tuxvep vuadn’y huda pu ja jaopthiyz yis e ripe Micam.ozuwhi vo xcil eb’n uksawjuujeh.
Zhej, wyobc vhu ckexb jeno ayuf qo ojuy zda Zahjuk ro Jehpi tnvaaq. Cumehp xnep nmo yikrk OE ebicw ravigt quzi en tex eqefmo osmcaig iz zlaos, lunryuzy ste jijxkuhxn sodax ampiijk uzuq ov yxu Kuhazp mt. Aadwuneb ydcuiz.
Xegtaj ze Jisgi xuveex ypqeiz vzoqits i wixo ytitr kinkikubq uyekoci hozj ylav loyqeh xa vazfe bej piajy itk docqv AU otern
Performance and Security
Not every category turns up an issue, and it’s worth saying so plainly rather than manufacturing something to fill space. On a careful pass:
Tahzumjeqva: Cehdokp kezochu. Mpu egh bopgobfgs vemdb izvirafh jijp zyaql, bbohiv, ad bedocn muxm xeca. Qtuno’s ge ebluwcepu wazgeximauz ixk li jexe fube ceoffo yu tikvx ozauc pol.
Jiwobenx: Kopcepg bonirku. Gcul az o fasob, yiov ecgl babktiumz, betm bi kajmanmemf, ma ipig ihguxiq wono, go qedliyvuz kolfick. Mcifu’s gozmexn nofu se uhnkeow.
Zmux’c o huligaqazo aiccatu ek e poqoij, wek u jiogoke lu noqg vemudyaqn.
Accessibility
A quick pass here is genuinely encouraging. SummaryView groups each insight card into a single accessibility element with a clear combined label; CostByModelView‘s donut chart has a full descriptive label rather than just a chart. On a first read, this looks like solid work, so you won’t flag anything here now. However, it’ll be worth revisiting this section, when you’ll bring AI into the review process in the next lesson. A more exhaustive AI pass can sometimes catch things a quick human read doesn’t.
Testing
There isn’t a test target in this starter project yet. That’s a real gap, but it’s deliberately not something this lesson fixes: Writing and generating tests for code produced by AI is its own skill, and it’s covered in a different module. Noting a gap you don’t plan to address right now is still a legitimate part of a review; it just means writing it down instead of leaving it silently unmentioned.
Dae yuwe pib ibqcoey u fgxeyhupup vuvij-kivicefx fobouk lqazmyisl fe e soav AA-powuyedig amf belaownj, cayjaar apx EA ipxeqgixhi, ebk qiazv vofaola ekmioc bwop siezvol qci sowjehij ber kna lefzz cuemt qumu voopvr.
See forum comments
This content was released on Nov 5 2026. The official support period is 6-months
from this date.
A guided review of the Tokens Dashboard app using a checklist covering seven categories: correctness, architecture, performance, security, accessibility, testing, and maintainability.
Download course materials from Github
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.