Àtúnkọ DevFest Avatar fún 2026: Ohun Èlò Ìṣẹ̀dá Fọ́tò Tí Ó Yára Tí Ó Sì Rọrùn Fún Àwùjọ Wa

Ìfáàrà

DevFest Avatar bẹ̀rẹ̀ pẹ̀lú ìṣòro kékeré kan: àwọn ènìyàn fẹ́ láti kópa nínú DevFest pẹ̀lú fọ́tò ojú-òpó (profile picture) tí ó mọ́ tónítóní, ṣùgbọ́n lílo àwọn férémù (frames) lẹ́sẹẹsẹ pẹ̀lú ọwọ́ ń gba àkókò, àwọn irinṣẹ́ àwòrán, àti ẹnìkan tí ó mọ ọwọ́ kọ̀ǹpútà dáadáa lórí àwòrán.

Ìyẹn ni iná àkọ́kọ́ ní ọdún 2019. Àtẹ̀jáde àkọ́kọ́ sọ iṣẹ́ àwòrán tí a fi ọwọ́ ṣe di ohun èlò wẹ́ẹ̀bù kékeré kan: gbé fọ́tò wọlé, yan férémù, kí o sì gba àwòrán tí ó jáde sílẹ̀.

Láti ìgbà yẹn wá, iṣẹ́ àkànṣe yìí ti gbilẹ̀ kọjá ọ̀pọ̀lọpọ̀ àkókò DevFest. A ti tún un kọ, jẹ́ kí ó rọrùn, ṣe àtúnṣe sí ìrísí rẹ̀, àwọn ọmọ ẹgbẹ́ àwùjọ ti dán an wò, a ti pín in káàkiri GDG, a sì ti fi ìmọ̀-ẹ̀rọ àtúnṣe àwòrán Gemini kún un. Gẹ́gẹ́ bí mo ti ṣe àlàyé nínú àkọsílẹ̀ àkọ́kọ́ mi fún 2025, Prompt Engineering with Gemini: Crafting DevFest 2025 Avatar Assets, lílo AI nínú àwọn irinṣẹ́ àwùjọ ń béèrè ìwọ́ntúnwọ̀nsì líle koko láàárín ìrísí dídára, ìyára, àti ìdúróṣinṣin.

Fún ọdún 2026, mo tún DevFest Avatar kọ lórí àwọn ẹ̀kọ́ pàtàkì wọ̀nyí.

Ète wa kì í ṣe láti sọ ojú-òpó náà di nǹkan títóbi tí ó nira. Ète wa ni láti sọ ọ́ di ohun tí ó mú, tí ó yára, tí ó sì fẹsẹ̀ múlẹ̀ ṣinṣin—tí ó ń ṣiṣẹ́ bí iwe-ìranti DevFest gidi pẹ̀lú agbára awọsánmọ̀ (cloud resilience) tó dájú.

Dán an wò níbí: goo.gle/devfest-avatar

DevFest Avatar 2026 wide logo

Ohun Tí DevFest Avatar Ń Ṣe

DevFest Avatar jẹ́ ohun èlò ìṣẹ̀dá fọ́tò fún àwọn àwùjọ DevFest káàkiri àgbáyé. Ìgbésẹ̀ rẹ̀ kéré gidigidi ní ìmọ̀ọ́mọ̀:

  1. Gbé fọ́tò wọlé.
  2. Yan férémù (frame).
  3. Gba àwòrán rẹ sílẹ̀ tàbí pín in fún àwọn ẹlòmíràn.

Ìyẹn ni ohun pàtàkì tí ohun èlò yìí ń ṣe. Gbogbo nǹkan mìíràn gbọ́dọ̀ ní ìdí tó dánmọ́rán láti wà níbẹ̀.

Àwọn ènìyàn ń lo ojú-òpó yìí lórí fóònù alágbèéká, tábílẹ́ẹ̀tì, kọ̀ǹpútà àlọ̀wọ́gbà (laptops), àti lórí àwọn ẹ̀rọ kéékèèké. Wọ́n ń lò ó ní àwọn àkókò kánjúkánjú: ṣáájú ìpàdé, nígbà ìpolongo, nínú àwùjọ iwiregbe (group chat), lẹ́yìn tí wọ́n rí ẹlòmíràn tí ó pín tiẹ̀, tàbí nígbà tí wọ́n ń múra ìwé ìkédè tiwọn sílẹ̀.

Àkókò yẹn ṣe pàtàkì. Èyí kì í ṣe pẹpẹ ìṣàkóso títóbi. Kì í ṣe ibùdó iṣẹ́ ọnà tí ó díjú. Ó jẹ́ ohun èlò àwùjọ kékeré tí ó gbọ́dọ̀ yára, rọrùn, kí ó sì wuyì ní ojú.

Àwọn Ẹ̀kọ́ Tí A Kọ́ Ní Ọdún 2025

Ìpolongo ti ọdún 2025 fún wa ní ẹ̀rí tó ṣe kedere: àwọn ènìyàn ṣì fẹ́ ìgbésẹ̀ férémù tó rọrùn, ṣùgbọ́n inú wọn tún dùn púpọ̀ sí ọ̀nà AI tó kún fún iṣẹ́ ọnà.

Àwọn iye tí a gbà sílẹ̀ lákòókò ìpolongo lágbára gidigidi:

Ìwọ̀n (Metric)Iye (Count)
Àpapọ̀ Àwòrán Tí A Ṣẹ̀dá14,071
Ìbẹ̀wò Sí Ojú-Òpó8,314
Fọ́tò Tí A Gbé Wọlé5,975
Àwòrán AI Gemini Tí A Ṣe3,351

Àfikún Gemini jẹ́ ọ̀kan lára àwọn ohun tó fani mọ́ra jùlọ. Ó gba àwọn olùlò láàyè láti yí fọ́tò wọn padà sí àwòrán DevFest tí a yà lọ́ṣọ̀ọ́ ṣáájú kí wọ́n tó fi férémù sí i.

Ṣùgbọ́n àwọn nọ́ńbà náà tún fìdí nǹkan pàtàkì kan múlẹ̀: ìgbésẹ̀ tí kò lo AI (crop-and-frame) ṣì ṣe pàtàkì gidigidi. Ọ̀nà AI lágbára, ṣùgbọ́n ohun èlò náà kò gbọ́dọ̀ gbẹ́kẹ̀ lé e pátápátá. Ojú-òpó náà gbọ́dọ̀ pa ìyára àti ìrọ̀rùn rẹ̀ mọ́ nínú àwárí-ayélujára (browser), kí ó sì fi Gemini sílẹ̀ gẹ́gẹ́ bí àṣàyàn ìmọ̀ràn tó tayọ.

Ìpìlẹ̀ yẹn ló tọ́ka sí àtúnkọ ọdún 2026.

Ìtọ́sọ́nà Ọjà Ti Ọdún 2026

Àtẹ̀jáde ọdún 2026 dá lórí àwọn èrò mẹ́rin:

  • Jẹ́ kí ojú-òpó àkọ́kọ́ jẹ́ ohun èlò ìṣẹ̀dá fọ́tò gan-an, kì í ṣe ojú-ewé ìpolongo lásán.
  • Jẹ́ kí ìrísí náà gbé èdè àwòrán DevFest jáde láìlo àwọn àwòrán tó wúwo jù.
  • Pa ìyára àti ìdúróṣinṣin ìlànà férémù mọ́.
  • Jẹ́ kí àtúnṣe Gemini bọ̀wọ̀ fún àwòrán tí olùlò gbé wọlé.

Gbólóhùn tí ó tọ́ka sí àtúnṣe náà ni:

Ṣe ojú-òpó náà kí ó dàbí àkọsílẹ̀ títẹ̀ DevFest gidi, kì í ṣe fọ́ọ̀mù ìgbé-nǹkan-wọlé lásán.

Èyí túmọ̀ sí pé ojú-òpó náà ń ya àwọn ànímọ́ láti ara àwọn àkọsílẹ̀ ìpàdé, báàjì (badges), àwọn àmì ìlà, àwọn ààlà funfun, àwọn àmì orúkọ kéékèèké, àti àwọn àwọ̀ DevFest gidi. Ó gbọ́dọ̀ jẹ́ ohun èlò tí ó gbéṣẹ́, tí ó sì jẹ́ mọ́ ètò DevFest pátápátá.

Àtúnṣe ìrísí DevFest Avatar 2026

Mú Ìfàsẹ́yìn Kúrò Nínú Ìgbésẹ̀

Àtúnṣe pàtàkì kan nínú ìmọ̀-ẹ̀rọ ti ọdún 2026 ni pé àwọn àṣàyàn férémù kò ní hàn títí tí olùlò yóò fi gbé fọ́tò gidi wọlé.

Ní àwọn àtẹ̀jáde tẹ́lẹ̀, àlejò lè dé orí ojú-òpó kí ó sì bẹ̀rẹ̀ sí ní tẹ àwọn férémù lórí àwòrán àpẹẹrẹ tí a fi síbẹ̀. Ìyẹn ń fa ariwo nínú ìlànà, ó sì ń darú àkọsílẹ̀ ìṣirò (analytics events).

Àtẹ̀jáde ọdún 2026 gbé ìgbésẹ̀ mẹ́ta tí ó tò lẹ́sẹẹsẹ kalẹ̀:

  1. Ìgbésẹ̀ 1 (Gbé Wọlé): Olùlò dé orí ohun èlò, ó rí ibi àwòtẹ́lẹ̀ tó mọ́ àti bọ́tìnnì ìgbé-fọ́tò-wọlé tó hàn kedere.
  2. Ìgbésẹ̀ 2 (Férémù & Àwòtẹ́lẹ̀): Ní kété tí fọ́tò bá wọlé, àwọn àwọ̀ àti àṣàyàn Gemini AI yóò ṣí sílẹ̀. Yíyan férémù yóò fi àbájáde hàn lẹ́sẹ̀kẹsẹ̀ nínú àwárí-ayélujára láìsí fífipá gba àwòrán sílẹ̀ láìròtẹ́lẹ̀.
  3. Ìgbésẹ̀ 3 (Tí Ṣe & Pín): Ojú-òpó yóò rọra yí lọ sí ibi àwòrán tí ó parí, pẹ̀lú bọ́tìnnì títóbi fún gbígba àwòrán sílẹ̀ (Download) àti àwọn ọ̀nà ìpín fún àwùjọ.

Ohun èlò náà kò nílò ìwé ìtọ́sọ́nà gígùn nítorí pé ìlànà ìgbésẹ̀ náà fúnra rẹ̀ ló ń darí olùlò láìsí ìṣòro.

Pípa Ìyára Àti Ìrọ̀rùn Mọ́

Apá pàtàkì nínú àtúnkọ yìí ni pípinnu ohun tí a kò gbọ́dọ̀ fi kún un.

Ìtọ́sọ́nà àwòrán ìbá ti gba ọ̀nà tí kò tọ́: àwọn àwòrán ńláńlá lórí pẹpẹ, ọ̀rọ̀ ìpolongo tó pọ̀ jù, àwọn ohun ẹ̀ṣọ́ tí ó wúwo, àti ìṣe àwòrán tí ó pọ̀ lórí ohun èlò gidi. Ìyẹn ìbá jẹ́ kí ojú-òpó dára nínú àwòrán ṣùgbọ́n kí ó nira láti lò ní ayé gidi.

Dípò ìyẹn, àtúnṣe náà lo CSS fúyẹ́ àti àwọn ẹ̀ṣọ́ SVG níbi tí ó bá ti ṣeé ṣe. Ohun èlò náà yẹra fún kíkó àwọn àwòrán tó wúwo sí ojú-ewé àkọ́kọ́. Ohun èlò ìṣẹ̀dá náà wà lókè pátápátá. Ojú-ewé náà jẹ́ irinṣẹ́ ní àkọ́kọ́.

Àwọn ìpinnu lórí ìyára tún kan àwọn àwòtẹ́lẹ̀ àṣà. Àwọn àwòrán àwòtẹ́lẹ̀ tí a ṣẹ̀dá jẹ́ àkójọpọ̀ fáìlì WebP 500x500 pẹ̀lú orúkọ tí a kò fi àwọn orúkọ àṣà sí. Èyí jẹ́ kí fáìlì kéré nígbà tí ó sì ń mú kí ojú-òpó dùn-ún wò láìsí sísọ àwọn àṣà di àmì ìpolongo lásán.

Ìmísí Àwòrán Àṣà

Ọ̀kan lára àwọn èrò tó lágbára jùlọ láti ọdún 2025 ni lílo àwọn àwòtẹ́lẹ̀ tí ó ní ìmísí àṣà káàkiri ayé.

DevFest jẹ́ ti gbogbo àgbáyé. Àwọn àwùjọ sì jẹ́ ti ibùdó kọ̀ọ̀kan. Ohun èlò kan náà lè rin ìrìn-àjò kọjá àwọn orílẹ̀-èdè, ṣùgbọ́n àwọn àwòrán kò gbọ́dọ̀ dàbí pé ti ibì kan ṣoṣo ni wọ́n jẹ́. Ní ọdún 2025, mo ṣàwárí èyí nípa ṣíṣẹ̀dá àwọn àwòrán àṣà tí ó lè jókòó sínú ìrírí avatar.

Fún ọdún 2026, ìtọ́sọ́nà yẹn ń tẹ̀síwájú ní àwọn ibi méjì:

  • Àwọn àwòrán àwòtẹ́lẹ̀ tí a ń fi hàn nígbà tí ènìyàn bá dé orí ojú-òpó.
  • Àwọn àlàyé àyíká tí Gemini ń lò nígbà tí ó bá ń yí fọ́tò padà.

Ìyàtọ̀ pàtàkì ni pé a ń wo àwọn àwòrán wọ̀nyí gẹ́gẹ́ bí ìmísí, kì í ṣe sísọ irú ẹni tí ẹnìkan jẹ́. Àwòtẹ́lẹ̀ lè fi ilé, aṣọ, ojú-ọ̀nà, àgbàlá, àjọyọ̀, tàbí àyíká kan hàn, ṣùgbọ́n ohun èlò náà kì í béèrè lọ́wọ́ olùlò láti yan àṣà tàbí sọ irú ẹ̀yà tí ó jẹ́.

Ìyẹn jẹ́ ìlà tẹ́ẹ́rẹ́ kan tó gba ìṣọ́ra. Ohun èlò náà gbọ́dọ̀ ṣe ayẹyẹ oríṣiríṣi àwòrán láìsọ àṣà di eré lásán.

Gemini Gẹ́gẹ́ Bí Àṣàyàn Iṣẹ́ Ọnà

Àtẹ̀jáde 2026 pa àtúnṣe àwòrán Gemini mọ́ gẹ́gẹ́ bí àṣàyàn férémù tó wà fún olùlò tí ó bá fẹ́.

Olùlò yóò gbé fọ́tò wọlé. Tí wọ́n bá yan àṣàyàn Gemini, ẹ̀rọ abẹ́lé (backend) yóò fi àwòrán náà àti àkọsílẹ̀ ìtọ́sọ́nà ránṣẹ́ sí Gemini. Ète náà ni láti tún fọ́tò náà ṣe sí àwòrán DevFest tí a yà lọ́ṣọ̀ọ́, nígbà tí ó sì ń pa àwọn ànímọ́ pàtàkì ti fọ́tò àkọ́kọ́ mọ́.

Apá ìkẹyìn yẹn ni àyípadà ńlá náà.

Àwọn ìdánwò AI tẹ́lẹ̀ sábà máa ń ṣiṣẹ́ dáadáa nígbà tí àbájáde bá jẹ́ onígun mẹ́rin (square) láti ìbẹ̀rẹ̀. Ṣùgbọ́n àwọn fọ́tò tí ènìyàn ń gbé wọlé kì í ṣe onígun mẹ́rin nígbà gbogbo. Olùlò lè gbé fọ́tò gígùn, fọ́tò fífẹ̀, fọ́tò ojú pọ́ńbélé (selfie), tàbí fọ́tò ìpàdé títóbi wọlé. Tí AI bá yí ìrísí fọ́tò padà jù, olùlò kò ní ní àkóso lórí rẹ̀ mọ́.

Fún ọdún 2026, ìtọ́sọ́nà Gemini ti ń béèrè láti dáàbò bo:

  • ìrísí àwòrán àkọ́kọ́,
  • ìtọ́sọ́nà pápá àwòrán (canvas orientation),
  • ìdánimọ̀ olùlò,
  • ìdúró rẹ̀ nínú fọ́tò (pose),
  • bí a ṣe yà á (framing),
  • àti àkópọ̀ àwòrán náà.

Ohun èlò náà yóò wá gba olùlò láàyè láti gé fọ́tò náà (crop) lẹ́yìn náà. Èyí ń dá àkóso padà fún olùlò.

Ìtòlẹ́sẹẹsẹ Ìmọ̀-Ẹ̀rọ: Ìpínyà Awọsánmọ̀ & Ẹ̀rọ Agbègbè

Láti rí i dájú pé ohun èlò náà yára, pa àṣírí mọ́, tí ó sì ń lo agbára AI ní ẹ̀kúnrẹ́rẹ́, DevFest Avatar pín àwọn iṣẹ́ orí àwárí-ayélujára ní agbègbè olùlò (edge) kúrò lára àwọn iṣẹ́ orí awọsánmọ̀ Google Cloud (serverless).

+-----------------------------------------------------------------------------------+
|                           ÀWÁRÍ-AYÉLUJÁRA OLÙLÒ (EDGE)                            |
|  +------------------------------------+  +-------------------------------------+  |
|  |    Ọ̀nà Dédé Tí Ó Yára (100% Local) |  |       Ìlànà Àtúnṣe AI Gemini        |  |
|  |  - HTML5 Canvas & Gígé Fọ́tò        |  |  - Àyẹ̀wò requestIdleCallback       |  |
|  |  - Ìṣètò Férémù Lẹ́sẹ̀kẹsẹ̀           |  |  - Ìgbéjáde Payload Base64          |  |
|  |  - Gbígba Fọ́tò Sílẹ̀ Láìsí Network   |  |  - Ìpamọ́ sessionStorage fún 5 mins  |  |
|  +------------------+-----------------+  +------------------+------------------+  |
+---------------------|---------------------------------------|---------------------+
                      |                                       |
                      | 1. Ìṣirò Monotonic                    | 2. POST /gemini-image
                      v                                       v
+-----------------------------------------------------------------------------------+
|                      Ẹ̀RỌ ABẸ́LÉ FIREBASE & GOOGLE CLOUD                            |
|  +------------------------------------+  +-------------------------------------+  |
|  | Firebase Realtime Database         |  | Firebase Cloud Functions (v2 HTTPS) |  |
|  | - Òfin database.rules.json         |  | - Ìwádìí Ìwọ̀n Buffer Lẹ́sẹ̀kẹsẹ̀       |  |
|  | - Ìṣirò Tí Ń Bọ̀ Síwájú Nìkan       |  | - Yíyan Ìwọ̀n 1K Tó Bára Mu          |  |
|  | - Pípa Àkọsílẹ̀ Àtijọ́ Mọ́ fún Kíkà  |  | - Àkójọpọ̀ Àyíká Àṣà Oríṣiríṣi      |  |
|  +------------------------------------+  +------------------+------------------+  |
+-------------------------------------------------------------|---------------------+
                                                              |
                                                              | 3. Ìtọ́sọ́nà Tó Létò
                                                              v
+-----------------------------------------------------------------------------------+
|                       GOOGLE GENERATIVE AI (GEMINI ENGINE)                        |
|  - Àwòṣe: gemini-3.1-flash-image                                                  |
|  - Ojú-òpó: https://generativelanguage.googleapis.com/v1beta/interactions         |
|  - Ìgbésẹ̀ Mẹ́ta Fún Ìtọ́jú Ìdánimọ̀ & Ìṣẹ̀dá Àyíká DevFest                         |
+-----------------------------------------------------------------------------------+

Ṣíṣe Àtúnṣe Sí Ọ̀nà Àwòrán Gemini

Fún ọdún 2026, mo tún gbé ẹ̀rọ abẹ́lé àtúnṣe àwòrán láti gemini-2.5-flash-image-preview lọ sí gemini-3.1-flash-image.

Àyípadà àwòṣe yẹn ṣe pàtàkì, ṣùgbọ́n n kò fẹ́ kí ìtàn ọjà náà jẹ́ nípa orúkọ àwòṣe nìkan. Àyípadà tó ṣe pàtàkì jùlọ ni gbogbo ẹ̀rọ tó yí i ká: ìbéèrè abẹ́lé tó mọ́, orúkọ àwòṣe tí a lè yí padà, ààlà ìtọ́sọ́nà tó dájú, àwọn àlàyé àyíká tí a fọ̀ mọ́, dídáàbò bo ìrísí fọ́tò, àti yíyan ìwọ̀n àbájáde tó bá a mu.

Àkọsílẹ̀ ìmọ̀ Gemini lónìí ṣe àpèjúwe Gemini 3.1 Flash Image gẹ́gẹ́ bí àwòṣe tó wúlò púpọ̀ tí ó ń darapọ̀ ìyára pẹ̀lú agbára ìṣẹ̀dá àti àtúnṣe àwòrán tí ó ga jùlọ, títí kan àwọn àṣàyàn ìwọ̀n tó ga àti àtìlẹyìn tó dára fún lílo fọ́tò ìtọ́kasí. Èyí bá DevFest Avatar mu dáadáa nítorí pé ọ̀nà AI gbọ́dọ̀ fani mọ́ra, ṣùgbọ́n kí ó tún yára tó fún ohun èlò àwùjọ.

Nítorí náà, àtúnṣe náà ń ṣe iṣẹ́ méjì ní ẹ̀ẹ̀kan:

  • fífún ọ̀nà Gemini ní àwòṣe àtúnṣe àwòrán tó lágbára jù,
  • pípa ìmọ̀-ẹ̀rọ ohun èlò náà mọ́ ní ọ̀nà tí ó lè gba àyípadà míràn nígbà tí àwòṣe tuntun bá dé.

Ìlànà férémù dédé kò gbẹ́kẹ̀ lé Gemini. Ìpínyà yẹn jẹ́ ní ìmọ̀ọ́mọ̀. AI gbọ́dọ̀ mú ayọ̀ wá, kì í ṣe láti di orísun ìkùnà fún gbogbo ọjà náà.

Àwọn Àyẹ̀wò Ìlera Awọsánmọ̀ & Ìdúróṣinṣin (GET /gemini-status)

Ní àwọn àkókò ìpàdé ńlá pẹ̀lú ọ̀pọ̀lọpọ̀ ènìyàn, àwọn àyè àṣẹ (API quotas) lè tán ní kíá. Láti rí i dájú pé àwọn olùlò kò dojú kọ àṣìṣe kankan, mo gbé ètò àyẹ̀wò ìlera àti ìdúróṣinṣin kalẹ̀:

  1. Àyẹ̀wò Abẹ́lé Awọsánmọ̀: Ojú-òpó GET /gemini-status lórí Firebase Cloud Functions ń ṣe àyẹ̀wò tààrà sí Google Gemini Interactions API (generativelanguage.googleapis.com/v1beta/interactions) láti rí i dájú pé kọ́kọ́rọ́ API àti àyè ìṣe wà lárọ̀ọ́wọ́tó.
  2. Àyẹ̀wò Àìfòròkẹ̀kẹ́ Ní Ìwájú: Nígbà tí ojú-òpó bá ń gbéra, ó ń pe window.checkGeminiStatus() pẹ̀lú requestIdleCallback, àkókò ìdádúró AbortController ti ìṣẹ́jú-àáyá 2.5, àti ìpamọ́ sessionStorage fún ìṣẹ́jú 5.
  3. Ìfarapamọ́ Tí Kò Lófin: Tí Gemini kò bá sí tàbí tí àyè rẹ̀ bá ti tán, ojú-òpó náà yóò rọra fi bọ́tìnnì “Gemini AI Edit” pamọ́ láìsí ariwo, kí olùlò lè tẹ̀síwájú láti lo férémù dédé nínú àwárí-ayélujára láìsí ìdíwọ́.

Ètò ìmọ̀-ẹ̀rọ yìí ń pèsè ìdúróṣinṣin tó ga nígbà tí kò sì ní ipa búburú kankan lórí ìyára ìgbéra ojú-òpó náà.

Ìtọ́sọ́nà Ọ̀rọ̀ Tí Ó Dára Jù

Ìtọ́sọ́nà (prompt) fún Gemini ti túbọ̀ wà ní ètò.

Ó ṣì ń béèrè lọ́wọ́ àwòṣe láti wo fọ́tò tí a gbé wọlé kí ó sì tún un ṣe sí àwòrán DevFest dídára. Ṣùgbọ́n ìtọ́sọ́nà náà ti wá ń yẹra fún àwọn àṣìṣe tí ó wọ́pọ̀ nínú ìṣẹ̀dá àwòrán AI.

Ó ń sọ fún àwòṣe náà pé kò gbọ́dọ̀ kọ àwọn nọ́ńbà àwọ̀ tàbí ọ̀rọ̀ ìtọ́sọ́nà sára fọ́tò. Ó ń béèrè pé kí àwọn àwọ̀ DevFest hàn gẹ́gẹ́ bí àwòrán kì í ṣe gẹ́gẹ́ bí ọ̀rọ̀ tí a kọ sílẹ̀. Ó ń pa àwọn àmì ìlà àti glyphs mọ́ sẹ́yìn kí wọn má baà bo olùlò mọ́lẹ̀. Ó ń sọ fún àwòṣe náà láti fi báàjì sí i nígbà tí ó bá bára mu nìkan, kí ó sì yẹra fún kíkọ ọ̀rọ̀ tí a kò lè kà sára báàjì náà.

Ìtọ́sọ́nà náà tún ń lo àkójọpọ̀ àwọn àlàyé àyíká. Àyíká kọ̀ọ̀kan jẹ́ àpèjúwe kúkúrú. Àwọn àyíká wọ̀nyí wá láti ara àwọn ìmísí àṣà àti àyíká, ṣùgbọ́n a ti fọ̀ wọ́n mọ́ kí wọn má baà sọ fún Gemini láti yí ìdánimọ̀, aṣọ, ẹ̀yà, tàbí ara olùlò padà. Fọ́tò olùlò ni òtítọ́ fún ẹni tí ó wà nínú rẹ̀.

Ìpínyà yìí ṣe pàtàkì:

  • Fọ́tò ló ń pèsè ènìyàn náà.
  • Àkójọpọ̀ àyíká ló ń pèsè ibùgbé náà.
  • Ìtọ́sọ́nà DevFest ló ń pèsè ètò àwòrán náà.
  • Ohun èlò náà ló ń pèsè gígé àti férémù ìkẹyìn.

Èyí ni àkójọpọ̀ ìtọ́sọ́nà ìgbésẹ̀ méjì tí a kọ sínú functions/gemini/prompt.js:

function buildAvatarPrompt(backgroundDescription) {
    return `Step 1:
Analyze the uploaded photo and derive a detailed internal description of the person's face, expression, pose, clothing, accessories, framing, lighting, and any notable features. Use that analysis only to preserve the person accurately in the generated image.

Step 2:
Transform the uploaded photo into a DevFest Avatar Creator preview image.

Preserve the uploaded image's original aspect ratio, orientation, canvas shape, and overall framing. Do not crop, zoom, pad, stretch, rotate, square, or recompose the image. Return an edited version of the same image shape so the user can choose the final crop in the app.

Keep the person's recognizable identity, face shape, skin tone, expression, pose, clothing silhouette, accessories, and original framing. Create a polished full-bleed illustrated portrait that reads clearly at social-avatar size after the user crops it. Use a warm nostalgic hand-painted animation look with soft watercolor texture, careful linework, gentle light, and modern editorial polish. Do not imitate any named artist, studio, or copyrighted character style.

Use this background as inspiration, but keep it secondary to the person:
${backgroundDescription}

Atmosphere:
- Primary lighting should feel soft, bright, and human: gentle overcast daylight, tender shadows, and a calm event-day glow rather than harsh contrast.
- Add subtle DevFest thematic light as translucent painterly arcs, ribbons, or soft reflections in blue, green, yellow, and red. These accents should feel woven into the environment, not pasted on top.
- Let the colors interact naturally with nearby surfaces: faint glow on walls, soft reflections on paths, glass, leaves, or clothing edges where appropriate.
- The mood should communicate peaceful engagement, community, curiosity, and wonder: a person present in a creative developer gathering, surrounded by thoughtful visual energy.
- Keep the image rich and vibrant, but avoid visual noise. The face must remain the clearest and most important element.

DevFest 2026 Branding Guidelines:
- Modern, clean, professional aesthetic
- Use Google's core colors visually (do not render color codes, names, or hex values as text anywhere in the image): Blue 500 (#4285f4), Green 500 (#34a853), Yellow 600 (#f9ab00), Red 500 (#ea4335)
- Use Halftone Blue (#57caff), Halftone Green (#5cdb6d), Halftone Yellow (#ffd427), Halftone Red (#ff7daf), pastels, Off White (#f0f0f0), and Black 02 (#1e1e1e) as supporting accents
- Do NOT generate any Google logo, branding, DevFest wordmark, or year in the image
- Use at most two bold rounded DevFest glyph accents near background edges: braces, brackets, hash, plus, equals, colon dots, semicolon, arrow, diagonal slashes, or the heart-like less-than/greater-than mark
- Use at most one faint monoline cluster in the far background: thin single-line arrows, wavy brackets, globe, hash, braces, at sign, parentheses, or parallel slashes
- Keep glyphs and monolines away from the face, hair, hands, badge, and clothing details
- Do not create a repeated wallpaper of symbols
- Keep the face clear, the crop centered, the mood welcoming, and the result suitable for social media and event branding
`;
}

module.exports = { buildAvatarPrompt };

Àti àpẹẹrẹ àlàyé àyíká àṣà láti inú background.json tí a ń fi kún un nígbà tí ètò náà bá ń ṣiṣẹ́:

"Setting: The scene is set in a sunlit Yoruba courtyard with carved wooden doors, patterned textiles, and tropical plants. The environment is rendered as a lush, hand-painted watercolor background, filled with rich but restrained detail and charm. Architecture: Use Yoruba courtyard architecture, carved wood, warm plaster, adire textile geometry, lush plants, and a calm community tech gathering mood. Ground & Details: Add soft natural light, textured paths or flooring, plants or local materials where appropriate, and gentle depth without visual clutter."

Ìwọ̀n Àwòrán Àti Ìnáwó Ìmọ̀-Ẹ̀rọ

Àtúnṣe míràn ní abẹ́lé fún ọdún 2026 ni yíyan ìwọ̀n àbájáde Gemini tó bá fọ́tò mu.

Dípò títì gbogbo àwòrán mọ́ ìwọ̀n 512 pixels, ẹ̀rọ náà ń ka ìwọ̀n fọ́tò tí a gbé wọlé, ó sì ń yan ìwọ̀n tó súnmọ́ jùlọ lára àwọn èyí tí Gemini tì lẹ́yìn. Ìwọ̀n tí ó ga jùlọ tí a gbà láàyè fún ohun èlò yìí jẹ́ 1K (1024px).

Láti mú kí Cloud Functions yára nígbà gbogbo láìsí lílo àwọn ohun èlò tó wúwo, mo kọ ẹ̀rọ kíkà ìwọ̀n buffer fọ́tò sínú functions/gemini/image-size.js láìsí àfikún ẹrù kankan:

function readPngDimensions(buffer) {
    const pngSignature = '89504e470d0a1a0a';
    if (buffer.length < 24 || buffer.subarray(0, 8).toString('hex') !== pngSignature) return null;

    return {
        width: buffer.readUInt32BE(16),
        height: buffer.readUInt32BE(20)
    };
}

Ààlà yẹn wà níbẹ̀ ní ìmọ̀ọ́mọ̀.

Àbájáde 4K lè dára nínú èrò, ṣùgbọ́n ohun èlò yìí kì í ṣe fún títẹ pọ́ńtì ńlá sára ògiri. Ó wà fún àwọn fọ́tò ojú-òpó lórí ayélujára àti àwùjọ. Àwọn àwòrán AI tí ó tóbi jù lè mú kí ìdáhùn pẹ́, kí ó gba data púpọ̀, kí ó sì mú kí àyè iṣẹ́ dínkù. Olùlò ṣì ní láti gé fọ́tò náà nínú àwárí-ayélujára.

Fún ohun èlò yìí, 1K jẹ́ òkè tó tọ́. Ó ń pèsè dídára tó ga nígbà tí fọ́tò bá yẹ lẹ́yìn, láìsọ irinṣẹ́ àwùjọ tó fúyẹ́ di ẹ̀rọ tó ń gba àkókò púpọ̀.

Àtúnṣe Sí Irinṣẹ́ Gígé Fọ́tò (Cropper)

Irinṣẹ́ gígé fọ́tò náà tún nílò àfiyèsí.

Ìṣòro kan wáyé nígbà tí a bá ń yí láàárín àwọn fọ́tò tí ìwọ̀n wọn yàtọ̀ síra gidigidi. Tí ohun èlò náà bá kọ́kọ́ gbé fọ́tò àpẹẹrẹ wọlé, tí olùlò sì wá gbé fọ́tò kékeré wọlé, irinṣẹ́ gígé náà lè bẹ̀rẹ̀ ní fífẹ̀ jù. Tí olùlò bá tún wá gbé fọ́tò ńlá wọlé, fọ́tò tuntun náà lè jogún ìwọ̀n tàbí ipò tí kò dára láti ara èyí tí ó kọjá.

Àtúnṣe náà ni láti tún irinṣẹ́ gígé náà bẹ̀rẹ̀ láti ìbẹ̀rẹ̀ (reset) nígbà tí fọ́tò tuntun bá wọlé. Fọ́tò kọ̀ọ̀kan gbọ́dọ̀ bẹ̀rẹ̀ láti ipò tó tọ́. Ibi àwòtẹ́lẹ̀ gbọ́dọ̀ fi fọ́tò tuntun sí àárín, bọ́tìnnì fífà fún súnmọ́-tàbí-jìnnà (zoom slider) sì gbọ́dọ̀ hàn kedere kí ó sì ṣeé lò lórí kọ̀ǹpútà àti fóònù.

Èyí ni irú kúlẹ̀kúlẹ̀ tí a kì í sábà kọ nínú ìpolongo ìfilọ́lẹ̀, ṣùgbọ́n òun ni ìyàtọ̀ láàárín ohun èlò tí ó dán mọ́rán àti èyí tí ó fẹ́rẹ̀ẹ́ dára.

Ààbò Ẹ̀rọ Awọsánmọ̀ & Ìtumọ̀ Sí Ọ̀pọ̀lọpọ̀ Èdè

Kíkọ ohun èlò fún àwùjọ àwọn olùgbékalẹ̀ kọ̀ǹpútà kárí-ayé túmọ̀ sí pé ààbò, ìdúróṣinṣin àkọsílẹ̀, àti èdè gbọ́dọ̀ jẹ́ apá kan ìmọ̀-ẹ̀rọ awọsánmọ̀ láti ọjọ́ àkọ́kọ́.

1. Àwọn Òfin Ààbò Realtime Database

Láti tọpinpin bí àwùjọ ṣe ń lo ohun èlò náà láìsí ṣíṣí ààyè sílẹ̀ fún àwọn aṣenilọ́ṣẹ́, mo kọ àwọn òfin ààbò Firebase Realtime Database líle (database.rules.json):

  • Ìṣirò Tí Kò Lè Padà Sẹ́yìn (Monotonic Counters): Ó ń rí i dájú pé àwọn nọ́ńbà ìṣirò lè fi 1 kún un nìkan, èyí tí kò gba ẹnikẹ́ni láàyè láti pa àkọsílẹ̀ rẹ́ tàbí darú àwọn nọ́ńbà náà.
  • Ìdáwà Àwọn Àkọsílẹ̀ Àtijọ́: Ó ń dá àwọn àkọsílẹ̀ àkókò tẹ́lẹ̀ (bíi ti ọdún 2025) sílẹ̀ gẹ́gẹ́ bí àkọsílẹ̀ tí a lè kà nìkan láìsí àtúnṣe.
  • Ìfìdímu Àkójọ Ìròyìn (Schema Validation): Ó ń fìdí irú ìròyìn àti gígùn ọ̀rọ̀ múlẹ̀ nínú àkọsílẹ̀ database ṣáájú kí a tó gbà á wọlé.
{
  "rules": {
    ".read": true,
    "$year": {
      "usage": {
        "siteVisits": {
          ".write": "$year >= '2026' && newData.isNumber() && newData.val() >= 0 && (!data.exists() || newData.val() >= data.val())"
        },
        "imageUploads": {
          ".write": "$year >= '2026' && newData.isNumber() && newData.val() >= 0 && (!data.exists() || newData.val() >= data.val())"
        },
        "totalImages": {
          ".write": "$year >= '2026' && newData.isNumber() && newData.val() >= 0 && (!data.exists() || newData.val() >= data.val())"
        },
        "colors": {
          "$color": {
            ".write": "$year >= '2026' && newData.isNumber() && newData.val() >= 0 && (!data.exists() || newData.val() >= data.val())"
          }
        }
      }
    }
  }
}

2. Ìtumọ̀ Sí Èdè 12 Kárí-Ayé

A ń ṣe àjọyọ̀ DevFest ní orílẹ̀-èdè tó ju 100 lọ. Fún ọdún 2026, ohun èlò náà ní ìtumọ̀ tààrà sí àwọn èdè 12 pàtàkì:

  • Èdè Gẹ̀ẹ́sì (en), Èdè Sípáníìṣì (es), Èdè Faransé (fr), Èdè Pọ́túgí (pt), Èdè Yorùbá (yo), Èdè Jámánì (de), Èdè Tọ́kì (tr), Èdè Lárúbáwá (ar pẹ̀lú àtìlẹyìn kíkà láti ọ̀tún sí òsì - RTL), Èdè Híńdì (hi), Èdè Jàpáànù (ja), Èdè Kòríà (ko), àti Èdè Súwáhílì (sw).
  • Ó ní agbára láti dá èdè àwárí-ayélujára mọ̀ fúnra rẹ̀, àwọn àṣẹ URL (?lang=yo), àti ìpamọ́ localStorage láìfi ẹrù wúwo kankan kún fáìlì ojú-òpó náà.

Fóònù Ní Àkọ́kọ́, Ṣùgbọ́n Kì Í Ṣe Fóònù Nìkan

Ohun èlò náà gbọ́dọ̀ ṣiṣẹ́ lórí gbogbo irú ìrísí ojú-kọ̀ǹpútà:

  • Àwọn fóònù iPhone àti Android,
  • Àwọn tábílẹ́ẹ̀tì àti àwọn ẹ̀rọ tó ṣeé ká,
  • Àwọn kọ̀ǹpútà àlọ̀wọ́gbà pẹ̀lú ojú-ìwòye kékeré,
  • Àwọn ojú-ìwòye kọ̀ǹpútà títóbi àti fífẹ̀.

Àtúnṣe ti ọdún 2026 lo ètò CSS Grid àti àwọn ìwọ̀n tó ń rọ́ láti bá gbogbo ojú-ẹ̀rọ mu.

Àwọn Àwọ̀ Ìmọ́lẹ̀ Ìgbésẹ̀ & Ìrọ̀rùn Fún Gbogbo Ènìyàn

Ní àtẹ̀jáde 2026.1.5, ojú-òpó náà mú àwọn àwọ̀ ìmọ́lẹ̀ neon Google conic-gradient wá tí ó ń tàn yí ká àwọn apá tí olùlò wà ní àkókò náà:

  • Ìgbésẹ̀ 1 (Ìbẹ̀wò): Ń tan ìmọ́lẹ̀ sí ibi ìgbé-fọ́tò-wọlé láti darí àfiyèsí olùlò.
  • Ìgbésẹ̀ 2 (Yíyan Férémù): Ń tan ìmọ́lẹ̀ sí ibi àwòtẹ́lẹ̀ fọ́tò tí ó sì ń mú kí àwọn bọ́tìnnì àwọ̀ tàn fẹ́ẹ́rẹ́fẹ́.
  • Ìgbésẹ̀ 3 (Tí Ṣe): Ń tan ìmọ́lẹ̀ sí àwòrán tí a parí àti àwọn ọ̀nà ìgbéjáde.
  • Ààbò Fún Àwọn Tí Kò Fẹ́ Ìmọ́lẹ̀ Tó Ń Yí: Àwọn àwọ̀ ìmọ́lẹ̀ wọ̀nyí ń bọ̀wọ̀ fún @media (prefers-reduced-motion: reduce) láti rí i dájú pé ó rọrùn fún àwọn tí ìmọ́lẹ̀ tó ń yí lè nira fún.
  • Ètò Bọ́tìnnì Lórí Fóònù: A tún apá ìpín àwòrán ṣe sí ọ̀nà ìlà méjì (2-column grid), tí ó fi àwọn bọ́tìnnì àwùjọ 4 sí ìpele 2x2 lókè bọ́tìnnì títóbi fún gbígba àwòrán sílẹ̀ (Download CTA).

Ìtàn Ìfọwọ́sowọ́pọ̀

DevFest Avatar jẹ́ iṣẹ́ àkànṣe orísun-ṣíṣí (open source), ṣùgbọ́n ju gbogbo rẹ̀ lọ, ó jẹ́ ohun èlò àwùjọ gidi.

Apá ìsàlẹ̀ ojú-òpó náà kọ ọ́ pẹ̀lú ìgbéraga pé Olorunfemi Davis àti GDG Ado-Ekiti ló kọ ọ́. Iṣẹ́ náà ti dàgbà kì í ṣe nípa kíkọ kóòdù ní kọ̀rọ̀ nìkan, ṣùgbọ́n nípa ìfọwọ́sowọ́pọ̀ ṣíṣí, ìdánwò àwùjọ, àti ìmọ̀ràn àwọn olùṣètò kọjá ọ̀pọ̀lọpọ̀ àkókò DevFest.

Àwọn olùkópa pàtàkì nínú àwùjọ pẹ̀lú:

  • David Oluwabusayo (@stont, Olórí GDG Ado-Ekiti): Olórí àwùjọ tó ṣe pàtàkì tí ó ṣe àtúnṣe ńlá sí ìrísí 2026.1.5—títí kan àwọn ìmọ́lẹ̀ neon conic-gradient, ètò bọ́tìnnì fún fóònù alágbèéká, àti àtúnṣe sí ìṣòro CSS pẹ̀lú àwọn ohun tí a fi HTML [hidden] pamọ́.
  • Ewuji Oluwaseyi John (@JbravoI): Ń fọwọ́sowọ́pọ̀ ní àkókò yìí láti tún ọ̀nà ìgbéjáde awọsánmọ̀ (cloud deployment pipeline) ṣe àti láti kọ “ilé-ìṣẹ̀ǹbáyé ayélujára” (digital museum) láti gbé gbogbo àwọn àtẹ̀jáde DevFest Avatar àtijọ́ jáde (láti ọdún 2019 dé 2026), láti ṣe ayẹyẹ ìdàgbàsókè ìmọ̀-ẹ̀rọ àti àwòrán iṣẹ́ yìí kọjá àwọn ọdún.
  • Duffigoogle: Ṣe àfikún sí àṣàyàn orúkọ ìlú àti ẹ̀ka (chapter) nínú àkókò ọdún 2025.
  • GDG Ado-Ekiti: Pèsè àyẹ̀wò àdúgbò, ìmọ̀ràn ìpolongo, àti ìfìdímu àwùjọ léraléra.

Ìlànà ìfọwọ́sowọ́pọ̀ ṣíṣí yìí ń fi hàn bí ìmọ̀-ẹ̀rọ àwùjọ ṣe níye lórí tó: olùgbékalẹ̀ lè ṣe àfikún, dán an wò pẹ̀lú àwọn ènìyàn agbègbè rẹ̀, kí ó sì rí i tí ó ń ṣe àǹfààní fún ẹgbẹẹgbẹ̀rún àwọn olùgbékalẹ̀ káàkiri ayé.

Wíwo Ọjọ́ Ọ̀la: Ọ̀nà Sí DevFest 2026

Bí àkókò DevFest 2026 káàkiri àgbáyé ṣe ń súnmọ́lé, pẹpẹ náà yóò tẹ̀síwájú láti gbòòrò síi pẹ̀lú ìmọ̀ràn àwùjọ gidi:

  • Ṣíṣí DevFest Avatar Digital Museum tí ó ṣeé lò láti fi gbogbo àwọn àtẹ̀jáde àtijọ́ láti 2019 hàn.
  • Títẹ̀síwájú nínú àtúnṣe àwòrán àti ìbámu pẹ̀lú àwọn àmì DevFest gidi.
  • Mímú àwọn ìtọ́sọ́nà Gemini sunwọ̀n síi lórí àwọn àyẹ̀wò fọ́tò àwùjọ tó gbòòrò.
  • Mímú ìṣẹ̀dá àwòtẹ́lẹ̀ àṣà àti dídín ìwọ̀n fáìlì kù fún àwọn ibi tí intanẹ́ẹ̀tì wọn kò lágbára púpọ̀.
  • Fífẹ̀ àwọn àṣàyàn orúkọ ẹ̀ka (chapter) síi fún àwọn olùṣètò káàkiri ayé.

A kọ pẹpẹ náà kí ó fúyẹ́, yára, kí ó sì dùn-ún lò—nípa fífi ìfihàn àwùjọ sí ipò àkọ́kọ́.

Àwọn Èrò Ìparí

DevFest Avatar jẹ́ ohun èlò kékeré kan, ṣùgbọ́n àwọn ohun èlò kéékèèké lè gbé ọ̀pọ̀lọpọ̀ iṣẹ́ ọnà dídára dání.

Èrò ọjà wà nínú pípinnu pé ojú-òpó àkọ́kọ́ gbọ́dọ̀ jẹ́ ohun èlò náà gan-an. Èrò ìmọ̀-ẹ̀rọ wà nínú dídá ààlà sí ìwọ̀n àbájáde AI ní 1K. Èrò iṣẹ́ ọnà wà nínú lílo àwọn àwọ̀ DevFest láìbo olùlò mọ́lẹ̀ pẹ̀lú ẹ̀ṣọ́ tó pọ̀ jù. Èrò àwùjọ wà nínú mímú kí ohun èlò náà rọrùn tó fún ẹnikẹ́ni láti lò àti láti pín.

Ìyẹn ni ìtọ́sọ́nà ọdún 2026: ohun èlò DevFest Avatar tí ó yára jù, rọrùn jù, tí ó sì kún fún iṣẹ́ ọnà, tí ó ṣì ń bọ̀wọ̀ fún àdéhùn àkọ́kọ́ rẹ̀.

Gbé fọ́tò wọlé. Yan férémù. Gba àwòrán sílẹ̀ tàbí pín in.

Gbogbo nǹkan mìíràn gbọ́dọ̀ mú kí ìyẹn túbọ̀ dára síi.


Àwọn Ohun Èlò Iṣẹ́ Àkànṣe & Àwùjọ