{"id":2210,"date":"2026-02-09T12:42:12","date_gmt":"2026-02-09T12:42:12","guid":{"rendered":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2210"},"modified":"2026-04-27T07:02:18","modified_gmt":"2026-04-27T07:02:18","slug":"integracio-amb-millores-funcionals-i-estetiques-del-frontend","status":"publish","type":"page","link":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2210","title":{"rendered":"Integraci\u00f3 amb millores funcionals i est\u00e8tiques del FrontEnd"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">QU\u00c8 HEM FET<\/h3>\n\n\n\n<p>Hem millorat la web de la LAN Party perqu\u00e8 es vegi millor i funcioni millor. Aquests s\u00f3n els canvis principals:<\/p>\n\n\n\n<p><strong>Coses noves que hem afegit:<\/strong><\/p>\n\n\n\n<p>Un compte enrere que mostra els dies, hores i minuts que falten per a la LAN Party. S&#8217;actualitza sol cada segon.<\/p>\n\n\n\n<p>Un mapa de la sala fet amb codi, on es veu on \u00e9s la zona de PC, les consoles, el bar i el WC.<\/p>\n\n\n\n<p>Una secci\u00f3 de preguntes freq\u00fcents on pots clicar cada pregunta per veure la resposta. Les altres es tanquen soles.<\/p>\n\n\n\n<p>Un Xatbot amb intel\u00b7lig\u00e8ncia artificial on pots preguntar qualsevol cosa de l&#8217;event i et respon en catal\u00e0.<\/p>\n\n\n\n<p>Un men\u00fa que sempre es veu a dalt de la p\u00e0gina encara que baixes amb el ratol\u00ed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">PER QU\u00c8 HO HEM FET AIX\u00cd<\/h3>\n\n\n\n<p>El fons \u00e9s fosc i els colors s\u00f3n ne\u00f3n perqu\u00e8 les LAN Parties es fan amb poca llum i un fons blanc faria mal als ulls.<\/p>\n\n\n\n<p>Hem posat el compte enrere perqu\u00e8 quan la gent veu els segons passar t\u00e9 m\u00e9s ganes d&#8217;apuntar-se.<\/p>\n\n\n\n<p>Hem posat el men\u00fa fix perqu\u00e8 la p\u00e0gina \u00e9s llarga i sin\u00f3 hauries de pujar fins a dalt cada vegada per canviar de secci\u00f3.<\/p>\n\n\n\n<p>Hem posat la FAQ perqu\u00e8 la gent sempre pregunta el mateix i aix\u00ed troben la resposta sols sense haver d&#8217;escriure al Xatbot.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td># ==========================================<br># 1. INSTAL\u00b7LACI\u00d3<br># ==========================================<br>import subprocess<br>subprocess.run([&#8220;pip&#8221;, &#8220;install&#8221;, &#8220;-q&#8221;, &#8220;-U&#8221;, &#8220;google-genai&#8221;, &#8220;flask-cors&#8221;, &#8220;pyngrok&#8221;, &#8220;beautifulsoup4&#8221;, &#8220;requests&#8221;], check=False)<br>subprocess.run([&#8220;pip&#8221;, &#8220;install&#8221;, &#8220;requests==2.32.4&#8221;], check=False)<br><br># ==========================================<br># 2. NETEJA I DEPEND\u00c8NCIES<br># ==========================================<br>import os, time, json, threading<br>os.system(&#8220;pkill -f ngrok&#8221;)<br><br>from flask import Flask, request, jsonify<br>from flask_cors import CORS<br>from google import genai<br>from google.colab import userdata<br>from pyngrok import ngrok<br><br># ==========================================<br># 3. C\u00c0RREGA DE CONTEXT<br># ==========================================<br>def carregar_dades():<br>docs = [&#8216;Lanparty.json&#8217;, &#8216;Faq.json&#8217;, &#8216;Normativa.json&#8217;, &#8216;dades_party.json&#8217;]<br>resum = &#8220;&#8221;<br>for d in docs:<br>if os.path.exists(d):<br>with open(d, &#8216;r&#8217;, encoding=&#8217;utf-8&#8242;) as f:<br>resum += f.read()[:500]<br>return resum<br><br># ==========================================<br># 4. CONFIGURACI\u00d3 GEMINI<br># ==========================================<br>API_KEY = userdata.get(&#8220;GOOGLE_API_KEY&#8221;)<br>client = genai.Client(api_key=API_KEY)<br><br>def init_xatbot():<br>return client.chats.create(<br>model=&#8221;gemini-2.5-flash&#8221;,<br>config=genai.types.GenerateContentConfig(<br>system_instruction=(<br>f&#8221;Ets Xatbot de la LAN Party Castellbisbal. &#8220;<br>f&#8221;Context: {carregar_dades()}. &#8220;<br>f&#8221;Estil gamer, catal\u00e0, breu i divertit.&#8221;<br>)<br>)<br>)<br><br>chat_session = init_xatbot()<br><br># ==========================================<br># 5. FLASK<br># ==========================================<br>app = Flask(__name__)<br>CORS(app) # \u2190 Permet que el teu HTML extern pugui connectar<br><br>@app.route(&#8216;\/chat&#8217;, methods=[&#8216;POST&#8217;])<br>def handle_chat():<br>global chat_session<br>try:<br>user_msg = request.json.get(&#8220;message&#8221;, &#8220;&#8221;)<br>if not user_msg.strip():<br>return jsonify({&#8220;reply&#8221;: &#8220;Escriu alguna cosa! \ud83d\udc7e&#8221;})<br>response = chat_session.send_message(user_msg)<br>return jsonify({&#8220;reply&#8221;: response.text.strip()})<br>except Exception as e:<br>print(f&#8221;Error: {e}&#8221;)<br>chat_session = init_xatbot()<br>return jsonify({&#8220;reply&#8221;: &#8220;S&#8217;ha reiniciat la connexi\u00f3. Torna a provar! \ud83d\udd0c&#8221;})<br><br># Ruta de comprovaci\u00f3 \u2014 el frontend la usa per saber si el servidor est\u00e0 actiu<br>@app.route(&#8216;\/chat&#8217;, methods=[&#8216;GET&#8217;])<br>def health_check():<br>return jsonify({&#8220;status&#8221;: &#8220;online&#8221;}), 200<br><br># ==========================================<br># 6. NGROK<br># ==========================================<br>NGROK_TOKEN = userdata.get(&#8220;NGROK_TOKEN&#8221;)<br>ngrok.set_auth_token(NGROK_TOKEN)<br>ngrok.kill()<br>time.sleep(1)<br><br>public_url = ngrok.connect(5000).public_url<br><br>print(&#8220;=&#8221; * 55)<br>print(&#8220;\u2705 SERVIDOR ACTIU&#8221;)<br>print(f&#8221;\ud83c\udf10 URL: {public_url}&#8221;)<br>print(&#8220;=&#8221; * 55)<br>print(&#8220;\ud83d\udccb Copia aquesta l\u00ednia al teu fitxer HTML:&#8221;)<br>print(f&#8217; const NGROK_URL = &#8220;{public_url}&#8221;;&#8217;)<br>print(&#8220;=&#8221; * 55)<br>print(&#8220;\u26a0\ufe0f No tanquis aquesta cel\u00b7la de Colab!&#8221;)<br><br># ==========================================<br># 7. ARRANCAR FLASK EN SEGON PLA<br># ==========================================<br>def run_flask():<br>app.run(port=5000, use_reloader=False, debug=False)<br><br>t = threading.Thread(target=run_flask, daemon=True)<br>t.start()<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">QU\u00c8 HE APR\u00c8S JO<\/h3>\n\n\n\n<p>El que m\u00e9s em va costar va ser el compte enrere, perqu\u00e8 al principi sortien n\u00fameros negatius. Ho vaig arreglar posant una condici\u00f3 que comprova si la data ja ha passat.<\/p>\n\n\n\n<p>Tamb\u00e9 em feia por fer el mapa, per\u00f2 vaig descobrir que SVG \u00e9s molt semblant a HTML i no era tan dif\u00edcil com semblava.<\/p>\n\n\n\n<p>He apr\u00e8s a canviar colors de tota una p\u00e0gina tocant un sol lloc del codi, a fer animacions sense JavaScript i a connectar una intel\u00b7lig\u00e8ncia artificial a una web real.<\/p>\n\n\n\n<p><strong>Resultat<\/strong><\/p>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/FireShot-Capture-202-Lan-Party-Xaboot-Lan-Party-sites.google.com_.pdf\" type=\"application\/pdf\" style=\"width:100%;height:440px\" aria-label=\"Incrustaci\u00f3 del fitxer FireShot Capture 202 - Lan Party - Xaboot Lan Party - sites.google.com.\"><\/object><a id=\"wp-block-file--media-81522b96-91d7-42da-bd62-7fe04683e184\" href=\"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/FireShot-Capture-202-Lan-Party-Xaboot-Lan-Party-sites.google.com_.pdf\">FireShot Capture 202 &#8211; Lan Party &#8211; Xaboot Lan Party &#8211; sites.google.com<\/a><a href=\"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/FireShot-Capture-202-Lan-Party-Xaboot-Lan-Party-sites.google.com_.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-81522b96-91d7-42da-bd62-7fe04683e184\">Baixa<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>QU\u00c8 HEM FET Hem millorat la web de la LAN Party perqu\u00e8 es vegi millor i funcioni millor. Aquests s\u00f3n els canvis principals: Coses noves que hem afegit: Un compte enrere que mostra els dies, hores i minuts que falten per a la LAN Party. S&#8217;actualitza sol cada segon. Un mapa de la sala fet [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":2202,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"saved_in_kubio":false,"_dseop_meta":"{\"noFollowLinks\":{\"linkList\":[],\"ignoredGlobalDomains\":[],\"textboxValue\":\"\"},\"schemaMarkup\":{\"schemas\":[{\"templateId\":\"WebpageSchema\",\"name\":\"Webpage\",\"id\":\"WebpageSchema\",\"schemaData\":{\"@type\":\"WebPage\",\"@id\":\"\",\"name\":\"\",\"url\":\"\",\"description\":\"\",\"breadcrumb\":{\"@type\":\"BreadcrumbList\",\"@id\":\"\"},\"datePublished\":\"\",\"dateModified\":\"\",\"inLanguage\":\"\"}}],\"schemaTemplates\":[]},\"metaDescription\":{\"metaData\":[]},\"keywordAppearance\":{\"contentDetails\":[{\"name\":\"Word count\",\"count\":565,\"id\":\"wordCount\",\"status\":\"average\",\"detailStatus\":\"shortAverage\",\"tooltip\":\"words count should be greater then 1500.\"},{\"id\":\"heading1\",\"name\":\"heading 1\",\"count\":1,\"status\":\"excellent\",\"detailStatus\":\"excellent\",\"tooltip\":\"good use of h1 tag.\"},{\"id\":\"heading2\",\"name\":\"heading 2\",\"count\":0,\"status\":\"poor\",\"detailStatus\":\"missing\",\"tooltip\":\"web page should have h2 tags for better SEO\"},{\"id\":\"heading3\",\"name\":\"heading 3\",\"count\":3,\"status\":\"excellent\",\"detailStatus\":\"excellent\",\"tooltip\":\"good use of h3 tags.\"},{\"id\":\"paragraphTags\",\"name\":\"paragraph tags\",\"count\":15,\"status\":\"excellent\",\"detailStatus\":\"excellent\",\"tooltip\":\"good use of paragraph tags.\"},{\"id\":\"boldAndStrongTags\",\"name\":\"bold and strong tags list\",\"count\":2,\"status\":\"success\",\"detailStatus\":\"success\",\"tooltip\":\"web page should have bold and strong tags for better SEO\"},{\"name\":\"Avg. Stopword percentage\",\"count\":7,\"id\":\"averageStopwordPercentage\"},{\"name\":\"Avg. Words per sentence\",\"count\":22,\"id\":\"averageWordsPerSentence\"},{\"name\":\"Stopword count\",\"count\":39,\"id\":\"sentenceCount\"},{\"name\":\"Sentence count\",\"count\":26,\"id\":\"sentenceCount\"},{\"name\":\"Letter count\",\"count\":3010,\"id\":\"letterCount\"},{\"name\":\"Difficult word\",\"count\":106,\"id\":\"difficultWord\"}],\"advanceOptions\":[],\"modifyStopwords\":{\"customStopwords\":[],\"disabledStopwords\":[]}},\"socialMedia\":{\"openGraphData\":[],\"twitterData\":{\"xSummaryCardData\":[],\"xAppCardData\":{\"iphoneAppName\":\"\",\"iphoneAppId\":\"\",\"iphoneAppUrl\":\"\",\"ipadAppName\":\"\",\"ipadAppId\":\"\",\"ipadAppUrl\":\"\",\"googlePlayAppName\":\"\",\"googlePlayAppId\":\"\",\"googlePlayAppUrl\":\"\",\"appCountry\":\"\"},\"xPlayerCardData\":{\"player\":\"\",\"playerWidth\":\"\",\"streamUrl\":\"\",\"streamContentType\":\"\"}}},\"readability\":{\"readabilityFactorList\":[{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Flesch - Kincaid reading ease\",\"score\":35.88,\"description\":\"The Flesch-Kincaid Reading Ease score measures the readability of your text. A higher score indicates easier-to-read content. Aim for a score between 60 and 70 for most web content.\",\"grade\":\"Difficult (College)\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Gunning fog score\",\"score\":10.73,\"description\":\"The Gunning Fog Score estimates the years of formal education needed to understand your text. Lower scores indicate easier readability. Aim for a score of 7 to 8 for general audiences.\",\"grade\":\"High School (Grade 9-12)\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Coleman liau index\",\"score\":11.86,\"description\":\"The Coleman-Liau Index calculates readability based on characters per word and sentence length. It estimates the U.S. school grade level required to comprehend the text. A lower score suggests easier content.\",\"grade\":\"High School (Grade 9-12)\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Flesch - Kincaid grade level\",\"score\":10.26,\"description\":\"The Flesch-Kincaid Grade Level formula evaluates the readability of your text by calculating the U.S. school grade level. A lower grade level indicates easier readability.\",\"grade\":\"High School (Grade 9-12)\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Smog index\",\"score\":10.16,\"description\":\"The SMOG (Simple Measure of Gobbledygook) Index estimates the years of education a person needs to understand a text. A lower score means simpler text, while a higher score suggests more complex content.\",\"grade\":\"High School (Grade 9-12)\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Automated readability index\",\"score\":7.7,\"description\":\"The Automated Readability Index calculates the readability of your content using characters per word and words per sentence. It estimates the U.S. school grade level needed to understand the text.\",\"grade\":\"Middle School (Grade 7-8)\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Dale chall readability score\",\"score\":7,\"description\":\"The Dale-Chall Readability Score evaluates the readability of your text based on familiar words and sentence structure. A lower score indicates that the content is easier to read.\",\"grade\":\"9th-10th grade\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Spache readability score\",\"score\":1.64,\"description\":\"The Spache Readability Score measures the readability of texts for younger readers. It identifies words that are unfamiliar to children and calculates a score accordingly. A lower score indicates easier content.\",\"grade\":\"2nd grade\"}]},\"advanceSetting\":{\"advanceRobotsMeta\":[],\"breadcrumbTitle\":\"\",\"canonicalURL\":\"\",\"criticalOptions\":[]},\"scoring\":{\"subScoring\":{\"metaDescriptionScore\":2.5,\"schemaMarkupScore\":8,\"outwardInterlinkingScore\":0,\"inwardInterlinkingScore\":0,\"socialMediaScore\":0,\"misspelledWordsScore\":0,\"advanceSettingScore\":3,\"noFollowLinksScore\":0,\"keywordAppearanceScore\":2,\"imageAnalyticsScore\":0},\"singlePostScore\":24},\"misspelledWords\":[],\"pointsToImprove\":{\"count\":{\"criticalPointsCount\":0,\"recommendedPointsCount\":0},\"pointsToImproveDetails\":{\"searchEngineAppearance\":[{\"id\":\"critical_meta_title_too_long\",\"name\":{\"label\":\"Meta title is too long\"},\"type\":\"Critical\",\"priority\":\"too_high\"},{\"id\":\"recommended_keyword_missing_meta_title\",\"name\":{\"label\":\"Keyword is missing in meta title.\"},\"type\":\"Critical\",\"priority\":\"too_high\"},{\"id\":\"critical_meta_description_missing\",\"name\":{\"label\":\"Meta Description is missing\"},\"type\":\"Critical\"},{\"id\":\"recommended_keyword_missing_permalink\",\"name\":{\"label\":\"Keyword is missing in permalink.\"},\"type\":\"Critical\"}],\"searchEngineVisibility\":[],\"redirectedLink301\":[],\"socialMedia\":[{\"id\":\"critical_missing_social_media_image\",\"name\":{\"label\":\"Image is missing in social media appearance.\"},\"type\":\"Critical\",\"priority\":\"high\"},{\"id\":\"recommended_keyword_missing_open_graph_title\",\"name\":{\"label\":\"Keyword is missing in social media title.\"},\"type\":\"Recommended\"},{\"id\":\"critical_too_large_social_media_title\",\"name\":{\"label\":\"Title is Too long in social media appearance.\"},\"type\":\"Critical\"},{\"id\":\"critical_missing_social_media_description\",\"name\":{\"label\":\"Description is missing in social media appearance.\"},\"type\":\"Critical\",\"priority\":\"high\"},{\"id\":\"critical_missing_social_media_twitter_image\",\"name\":{\"label\":\"X(Twitter) image is missing in social media appearance.\"},\"type\":\"Critical\",\"priority\":\"high\"},{\"id\":\"recommended_keyword_missing_twitter_title\",\"name\":{\"label\":\"Keyword is missing in X(Twitter) title.\"},\"type\":\"Recommended\"},{\"id\":\"critical_too_large_social_media_twitter_title\",\"name\":{\"label\":\"X(Twitter) title is Too long in social media appearance.\"},\"type\":\"Critical\"},{\"id\":\"critical_missing_social_media_twitter_description\",\"name\":{\"label\":\"X(Twitter) description is missing in social media appearance.\"},\"type\":\"Critical\"}],\"noFollowLink\":[],\"misspelledWords\":[],\"inwardLinks\":[],\"outwardLinks\":[],\"keywordAppearance\":[{\"id\":\"critical_no_selected_keyword\",\"name\":{\"label\":\"Selected keyword missing in keyword appearance.\"},\"type\":\"Critical\",\"priority\":\"too_high\"},{\"id\":\"critical_word_count_is_low\",\"name\":{\"label\":\"Word count is low in your content add more words.\"},\"type\":\"Recommended\"},{\"id\":\"critical_heading2_is_missing\",\"name\":{\"label\":\"Missing H2 tags, which are important for content structure.\"},\"type\":\"Critical\",\"priority\":\"high\"}],\"advanceSettings\":[],\"schemaMarkup\":[],\"imageAnalytics\":[{\"id\":\"critical_no_images_in_your_content\",\"name\":{\"label\":\"There is no images in your content.\"},\"type\":\"Critical\",\"priority\":\"high\"}],\"productGtins\":[]}},\"imageAnalytics\":{\"imageAnalysis\":[{\"id\":\"TotalImages\",\"name\":\"Total images\",\"value\":\"0\"},{\"id\":\"ImagesHasTitle\",\"name\":\"Images has title\",\"value\":\"0\",\"outOff\":\"0\",\"status\":\"disabled\"},{\"id\":\"ImageHasAltAttribute\",\"name\":\"Images has alt\",\"value\":\"0\",\"outOff\":\"0\",\"status\":\"disabled\"},{\"id\":\"ImagesHasProperFileName\",\"name\":\"Images has proper filename format\",\"value\":\"0\",\"outOff\":\"0\",\"status\":\"disabled\"},{\"id\":\"KeywordInTitleAttribute\",\"name\":\"Keyword in image title\",\"value\":\"0\",\"outOff\":\"0\",\"status\":\"disabled\"},{\"id\":\"KeywordInAltAttribute\",\"name\":\"Keyword in image Alt\",\"value\":\"0\",\"outOff\":\"0\",\"status\":\"disabled\"},{\"id\":\"KeywordInFilename\",\"name\":\"Keyword in image filename\",\"value\":\"0\",\"outOff\":\"0\",\"status\":\"disabled\"}]}}","_dseop_selected_keywords":"","footnotes":""},"class_list":["post-2210","page","type-page","status-publish","hentry"],"kubio_ai_page_context":{"short_desc":"","purpose":"general"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Integraci\u00f3 amb millores funcionals i est\u00e8tiques del FrontEnd - Adrian Jaimes<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2210\" \/>\n<meta property=\"og:locale\" content=\"ca_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Integraci\u00f3 amb millores funcionals i est\u00e8tiques del FrontEnd - Adrian Jaimes\" \/>\n<meta property=\"og:description\" content=\"QU\u00c8 HEM FET Hem millorat la web de la LAN Party perqu\u00e8 es vegi millor i funcioni millor. Aquests s\u00f3n els canvis principals: Coses noves que hem afegit: Un compte enrere que mostra els dies, hores i minuts que falten per a la LAN Party. S&#8217;actualitza sol cada segon. Un mapa de la sala fet [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2210\" \/>\n<meta property=\"og:site_name\" content=\"Adrian Jaimes\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-27T07:02:18+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Temps estimat de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minuts\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2210\",\"url\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2210\",\"name\":\"Integraci\u00f3 amb millores funcionals i est\u00e8tiques del FrontEnd - Adrian Jaimes\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/#website\"},\"datePublished\":\"2026-02-09T12:42:12+00:00\",\"dateModified\":\"2026-04-27T07:02:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2210#breadcrumb\"},\"inLanguage\":\"ca\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2210\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2210#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inici\",\"item\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"1r SMX\",\"item\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=1084\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Repte 1.4\",\"item\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=1496\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"2\ufe0f\u20e3 &#8211; \u200b\ud83e\udd16\u200b &#8211; El Xatbot\",\"item\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2202\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Integraci\u00f3 amb millores funcionals i est\u00e8tiques del FrontEnd\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/#website\",\"url\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/\",\"name\":\"Adrian Jaimes\",\"description\":\"S\u00f3c estudiant d&#039;inform\u00e0tica i aqu\u00ed podr\u00e0s veure el meu cam\u00ed acad\u00e8mic, els projectes que he realitzat i els coneixements que he adquirit durant la meva formaci\u00f3. Aquesta p\u00e0gina \u00e9s un reflex de la meva passi\u00f3 per la tecnologia i el meu comprom\u00eds per seguir aprenent i millorant cada dia.  Explora els meus treballs i seguiment acad\u00e8mic!\",\"publisher\":{\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ca\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/#organization\",\"name\":\"Adrian Jaimes\",\"url\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ca\",\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/cropped-cropped-cropped-width_550_009.webp\",\"contentUrl\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/cropped-cropped-cropped-width_550_009.webp\",\"width\":512,\"height\":512,\"caption\":\"Adrian Jaimes\"},\"image\":{\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Integraci\u00f3 amb millores funcionals i est\u00e8tiques del FrontEnd - Adrian Jaimes","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2210","og_locale":"ca_ES","og_type":"article","og_title":"Integraci\u00f3 amb millores funcionals i est\u00e8tiques del FrontEnd - Adrian Jaimes","og_description":"QU\u00c8 HEM FET Hem millorat la web de la LAN Party perqu\u00e8 es vegi millor i funcioni millor. Aquests s\u00f3n els canvis principals: Coses noves que hem afegit: Un compte enrere que mostra els dies, hores i minuts que falten per a la LAN Party. S&#8217;actualitza sol cada segon. Un mapa de la sala fet [&hellip;]","og_url":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2210","og_site_name":"Adrian Jaimes","article_modified_time":"2026-04-27T07:02:18+00:00","twitter_card":"summary_large_image","twitter_misc":{"Temps estimat de lectura":"4 minuts"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2210","url":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2210","name":"Integraci\u00f3 amb millores funcionals i est\u00e8tiques del FrontEnd - Adrian Jaimes","isPartOf":{"@id":"https:\/\/ajaimes.inscastellbisbal.net\/#website"},"datePublished":"2026-02-09T12:42:12+00:00","dateModified":"2026-04-27T07:02:18+00:00","breadcrumb":{"@id":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2210#breadcrumb"},"inLanguage":"ca","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2210"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2210#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inici","item":"https:\/\/ajaimes.inscastellbisbal.net\/"},{"@type":"ListItem","position":2,"name":"1r SMX","item":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=1084"},{"@type":"ListItem","position":3,"name":"Repte 1.4","item":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=1496"},{"@type":"ListItem","position":4,"name":"2\ufe0f\u20e3 &#8211; \u200b\ud83e\udd16\u200b &#8211; El Xatbot","item":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2202"},{"@type":"ListItem","position":5,"name":"Integraci\u00f3 amb millores funcionals i est\u00e8tiques del FrontEnd"}]},{"@type":"WebSite","@id":"https:\/\/ajaimes.inscastellbisbal.net\/#website","url":"https:\/\/ajaimes.inscastellbisbal.net\/","name":"Adrian Jaimes","description":"S\u00f3c estudiant d&#039;inform\u00e0tica i aqu\u00ed podr\u00e0s veure el meu cam\u00ed acad\u00e8mic, els projectes que he realitzat i els coneixements que he adquirit durant la meva formaci\u00f3. Aquesta p\u00e0gina \u00e9s un reflex de la meva passi\u00f3 per la tecnologia i el meu comprom\u00eds per seguir aprenent i millorant cada dia.  Explora els meus treballs i seguiment acad\u00e8mic!","publisher":{"@id":"https:\/\/ajaimes.inscastellbisbal.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ajaimes.inscastellbisbal.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ca"},{"@type":"Organization","@id":"https:\/\/ajaimes.inscastellbisbal.net\/#organization","name":"Adrian Jaimes","url":"https:\/\/ajaimes.inscastellbisbal.net\/","logo":{"@type":"ImageObject","inLanguage":"ca","@id":"https:\/\/ajaimes.inscastellbisbal.net\/#\/schema\/logo\/image\/","url":"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2025\/12\/cropped-cropped-cropped-width_550_009.webp","contentUrl":"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2025\/12\/cropped-cropped-cropped-width_550_009.webp","width":512,"height":512,"caption":"Adrian Jaimes"},"image":{"@id":"https:\/\/ajaimes.inscastellbisbal.net\/#\/schema\/logo\/image\/"}}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/pages\/2210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2210"}],"version-history":[{"count":5,"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/pages\/2210\/revisions"}],"predecessor-version":[{"id":3133,"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/pages\/2210\/revisions\/3133"}],"up":[{"embeddable":true,"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/pages\/2202"}],"wp:attachment":[{"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}