From fd1d5c4f315338fc5232d3c8c8ca509890bc299a Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Sun, 30 Nov 2025 18:01:12 +0100 Subject: [PATCH] icons --- apps/ui/main.py | 40 +++++++++++++++++- apps/ui/static/apple-touch-icon-114x114.png | Bin 0 -> 5619 bytes apps/ui/static/apple-touch-icon-120x120.png | Bin 0 -> 6078 bytes apps/ui/static/apple-touch-icon-144x144.png | Bin 0 -> 8195 bytes apps/ui/static/apple-touch-icon-152x152.png | Bin 0 -> 8894 bytes apps/ui/static/apple-touch-icon-16x16.png | Bin 0 -> 449 bytes apps/ui/static/apple-touch-icon-180x180.png | Bin 0 -> 10962 bytes apps/ui/static/apple-touch-icon-32x32.png | Bin 0 -> 933 bytes apps/ui/static/apple-touch-icon-57x57.png | Bin 0 -> 1957 bytes apps/ui/static/apple-touch-icon-60x60.png | Bin 0 -> 2085 bytes apps/ui/static/apple-touch-icon-72x72.png | Bin 0 -> 2728 bytes apps/ui/static/apple-touch-icon-76x76.png | Bin 0 -> 2968 bytes apps/ui/static/garage-icon-114x114.png | Bin 0 -> 4934 bytes apps/ui/static/garage-icon-120x120.png | Bin 0 -> 5320 bytes apps/ui/static/garage-icon-144x144.png | Bin 0 -> 7209 bytes apps/ui/static/garage-icon-152x152.png | Bin 0 -> 7783 bytes apps/ui/static/garage-icon-16x16.png | Bin 0 -> 447 bytes apps/ui/static/garage-icon-180x180.png | Bin 0 -> 9160 bytes apps/ui/static/garage-icon-32x32.png | Bin 0 -> 897 bytes apps/ui/static/garage-icon-57x57.png | Bin 0 -> 1851 bytes apps/ui/static/garage-icon-60x60.png | Bin 0 -> 1959 bytes apps/ui/static/garage-icon-72x72.png | Bin 0 -> 2529 bytes apps/ui/static/garage-icon-76x76.png | Bin 0 -> 2705 bytes apps/ui/static/manifest.json | 43 ++++++++++++++++++++ apps/ui/templates/dashboard.html | 12 ++++++ apps/ui/templates/device.html | 12 ++++++ apps/ui/templates/garage.html | 10 ++++- apps/ui/templates/index.html | 13 ++++++ apps/ui/templates/room.html | 12 ++++++ apps/ui/templates/rooms.html | 12 ++++-- create_icons.py | 30 ++++++++++++++ test-icons.sh | 29 +++++++++++++ 32 files changed, 207 insertions(+), 6 deletions(-) create mode 100644 apps/ui/static/apple-touch-icon-114x114.png create mode 100644 apps/ui/static/apple-touch-icon-120x120.png create mode 100644 apps/ui/static/apple-touch-icon-144x144.png create mode 100644 apps/ui/static/apple-touch-icon-152x152.png create mode 100644 apps/ui/static/apple-touch-icon-16x16.png create mode 100644 apps/ui/static/apple-touch-icon-180x180.png create mode 100644 apps/ui/static/apple-touch-icon-32x32.png create mode 100644 apps/ui/static/apple-touch-icon-57x57.png create mode 100644 apps/ui/static/apple-touch-icon-60x60.png create mode 100644 apps/ui/static/apple-touch-icon-72x72.png create mode 100644 apps/ui/static/apple-touch-icon-76x76.png create mode 100644 apps/ui/static/garage-icon-114x114.png create mode 100644 apps/ui/static/garage-icon-120x120.png create mode 100644 apps/ui/static/garage-icon-144x144.png create mode 100644 apps/ui/static/garage-icon-152x152.png create mode 100644 apps/ui/static/garage-icon-16x16.png create mode 100644 apps/ui/static/garage-icon-180x180.png create mode 100644 apps/ui/static/garage-icon-32x32.png create mode 100644 apps/ui/static/garage-icon-57x57.png create mode 100644 apps/ui/static/garage-icon-60x60.png create mode 100644 apps/ui/static/garage-icon-72x72.png create mode 100644 apps/ui/static/garage-icon-76x76.png create mode 100644 apps/ui/static/manifest.json create mode 100644 create_icons.py create mode 100755 test-icons.sh diff --git a/apps/ui/main.py b/apps/ui/main.py index 84126bd..5d19fc1 100644 --- a/apps/ui/main.py +++ b/apps/ui/main.py @@ -5,7 +5,7 @@ import os from pathlib import Path from fastapi import FastAPI, Request -from fastapi.responses import HTMLResponse, JSONResponse +from fastapi.responses import HTMLResponse, JSONResponse, FileResponse from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates @@ -49,6 +49,44 @@ static_dir.mkdir(exist_ok=True) app.mount("/static", StaticFiles(directory=str(static_dir)), name="static") +@app.get("/apple-touch-icon.png") +async def apple_touch_icon(): + """Serve Apple Touch Icon with proper headers.""" + icon_path = static_dir / "apple-touch-icon.png" + return FileResponse( + path=icon_path, + media_type="image/png", + headers={ + "Cache-Control": "public, max-age=31536000", + "Content-Type": "image/png" + } + ) + + +@app.get("/favicon.ico") +async def favicon(): + """Serve favicon.""" + icon_path = static_dir / "apple-touch-icon.png" + return FileResponse( + path=icon_path, + media_type="image/png" + ) + + +@app.get("/manifest.json") +async def manifest(): + """Serve Web App Manifest with proper headers.""" + manifest_path = static_dir / "manifest.json" + return FileResponse( + path=manifest_path, + media_type="application/manifest+json", + headers={ + "Cache-Control": "public, max-age=86400", + "Content-Type": "application/manifest+json" + } + ) + + @app.get("/health") async def health() -> JSONResponse: """Health check endpoint for Kubernetes/Docker. diff --git a/apps/ui/static/apple-touch-icon-114x114.png b/apps/ui/static/apple-touch-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..2bcbeea765beb5d7ebabcd1fc976e89cd923220e GIT binary patch literal 5619 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 literal 0 HcmV?d00001 diff --git a/apps/ui/static/apple-touch-icon-152x152.png b/apps/ui/static/apple-touch-icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..9ae3461ff6b075486698281d4079ff952cbf850a GIT binary patch literal 8894 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 rQUW9;KvDuEB|uUFGQID literal 0 HcmV?d00001 diff --git a/apps/ui/static/apple-touch-icon-60x60.png b/apps/ui/static/apple-touch-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..48d5967f1c59ae51cd4e038a5f6caff2a1db557c GIT binary patch literal 2085 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 I1Lvs!0n>y78vphE{|N`%KkZ8G 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 P5hxSL#?cyM`7rh04FXQc literal 0 HcmV?d00001 diff --git a/apps/ui/static/apple-touch-icon-76x76.png b/apps/ui/static/apple-touch-icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..36a3503271e04514542f128effe7c76a6b80aa98 GIT binary patch literal 2968 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 N4)~2G2&rTl_CM4gLGJ(n literal 0 HcmV?d00001 diff --git a/apps/ui/static/garage-icon-144x144.png b/apps/ui/static/garage-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..58b8f5df019749857b0adf7482e5fc891293709e GIT binary patch literal 7209 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 X#rH~R^X|9)00000NkvXXu0mjf>pQDb literal 0 HcmV?d00001 diff --git a/apps/ui/static/garage-icon-57x57.png b/apps/ui/static/garage-icon-57x57.png new file mode 100644 index 0000000000000000000000000000000000000000..9d55312fec305499220cf77bdfefeddc6a80f976 GIT binary patch literal 1851 zcma*oi9Ztz0|)T&JkA^mS(Yn`)zXk-wz+AdsZl6T#(HvW9xZuzCp?5UN4bYwIVQ@a zhcR=HEhfs6yBxV5$6P5ZJiULx`~E(k-}m}h`@cg;Fh-5c+HLm5t1U&4vUv{Jsi-+UUZDPa@)nki;Pn6eQ9Z&rx z!Qkj}fFKY~vGmDGd z+*;q@ppd*a7*DdybzJLfS@^is(zbwP`p(KL<{gCSh*%u~{2%l!wH8}xSAhg2XNo9D z(#*$Y`65(|1O5`_uqx%+(7~53i(l+fdd>keV2QXNcPN>9grF1E(5>IouN$C8+<=Pa zUN$-tl8z0O261^Grrev5;LgxQNn&MB4JPe~y;M@J!o$!}?+n80^xz~MP&`2?4oOXT zxcutoF)rjS^<` zUk&%?qAU00-wKl=;BxjfwM^3f|>6#incC=eCr?3z(#O=3v*fIMmM0sA)cWD`zS5I zS9<-TzG=0GG|vK4ndj?Iu4&$odE76A6plW6yVGql(@R$JPrNDVWCqFh^8~8h&I*mq zz7QQlBI&xcyrj-)jchP))Dl4K8rh3iRwXB@;MqYQEiYaL2#+#4@2_kd`~ho8nRIG( zdVj_nmL{qfAFxu1vMZ zuQw<9FYW3(mpf$VErU%U9O2^dV$^|vj(r9~4AE|eGAF#1zL5mj=Xp7w(SK<{HyJtL& zg&k!nL%6qY(=PD@kFH%uGVaGmcO%DLJWnH7WSgnPK=Ycq=~mTGe@WVTDimI^{nl^% znql&uqL?Y)hW4<19_$lvqOMhRtxB1$P(r_#JTDRLoMAcZ5}m&CLccFhwS=dlWop?o zl50(1tCa3Zd*;q}H_d^D23}kWy%MkS>GUY3m{kg{bE9<}lIN<(O7fAm^EYP{E`>D#hWBpUnc(_z)!X z$zmeE@$6O_S^+7A&&%LHdrril49w5B?|US>8vWC_Iwm&pcNB8&Ztm(hgLs*_t@Dtn zb)y)n@L2Hi6!h0db;4?neRFF}grM<3)^m%FR_e~?cgt133$FR|F(MG%$J#X3vBOaX zA;l)>DxyitlJ!4$Jf)$2t2gGCoP?g{el&XfE8ma0gn{m#vlFVgfWujCSWkD|(p(u9 zX~#{yW1jJ5=0}fdIGivYziiFquhK;kD#`&$@@ zyh)t|QQ~Be-U}rz4j}VEz-dkdBlSs(sI+5FEGrS*w)YfK7T_~3_DF-2pVr}iCdF!@ zgvI=GH`0H&k`a7B>)QP?C^LZdpHe10COkE>aK7gNAFkd%m14vqu6mu^uZV3tUeowZ zF>A10dZ0Zts7y)H2TKhRK(6jBY$T>C+X|CB3R8R%HYPT^R0rM{iN66CJ)L0=<$0bi zJDpKQll)CV_-Q+DAIMcN0%{WrZ0e7A)0E*EyacP)ffH^{Uk}WLN34gQgzTpN3UCDc f58O$j{0>V1JZ49YloVC?^ArJ&_Gml04L0^)?i_zw literal 0 HcmV?d00001 diff --git a/apps/ui/static/garage-icon-60x60.png b/apps/ui/static/garage-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..6641b2b71181ab9a8b4e9bb4ec055339e42a192a GIT binary patch literal 1959 zcma*o`9Bkm1IKZZK5T@XA0H|4WlMgfQuTBi z$-?qmprNj|HM(Fm50fHjcYQ!>ok9s`bd!eXNgvvQcZ##wUl{aqm>6+O=oMEg(^{o{ zO?(3!15SsJ5*!2E`Q1~bQ_o#}Yn9tX`Q+GTt%U%$&H1u(V9}n>T}znFq{Ftu`8+kH z0SdDsO4{UOpwQq;q)f2%bMbXG@-C)8X{qTS9uRAsl#2mt{Qt#wm5p9jtcc&ssJHdq zDQ9KA2j)bg%PW|Tp?}3PqL%)(LEydhcd$1Bw`t7>neU0gB7etQ5c;l;xaH>Bei{{k z0N}zyx@gAuV2!l=-lkMc`41d^YJ$ee-=Or$4F=7y2~jLN;`y1MS&bGj0dU=Pv+?dk zzaeqO2AdM>WFVM8vR3oml8o<-8E&d~~Jez%$W} zlV}cE1y=Wge5GK>E%gJcLwxs{bK?mM&-pQD=^6&?IDSKd7>yNdPc#=+9av)1T3h|? zh9vD?DzJ*AO+Kd$q4+9f*C=Vh(|F^0kXz@S7PIc5=!!42*9wc?#15AcTaT|2Jl8bZEKwyPL zeW!BS4}oNAkkoWr&fQuv)Dx`V?w$T6e+8ILUIhqEcNxZ-wG(5VO0_W}$c!-2r99+qz=+ zt!3SMv4+vW1}s*%V3a17x!Ux#u46ZRO{%&7)#Hz4cT__X8DeUNT>1J#I-}0p z0%}tx@a=4skJ^cE-4AilX9Pt>6_O7oRq3DnaP*E#s(O!nB zmOM8HJUi>aTG%Fp#Qm!gaVj}hBZ#*%T9a#np?#)X=JBe3F6Fp{;@x(Q`!g)>1~HDR z=>u{iH6=zb#2v@J#9)M68Zdxkx;)t|g1jUl#+izk;bYb32bqvnt+uJ6C#jrw9gZZG z>m=3v5_Al7MiG=27|>$>Wu(~L#6Z~u@IiLs{j$b9I!w6Zbo+~eUGR3YS4k76DvxW= zDWC$*S6ewkrY0}7Ax;$j&Cfi37qvnV^xmNBNO8%K8qfFazU{K{@|3lXPJLcBuTwIG zJ6%&KDF5rPBHsK7%)=Cg3k(vD4HD* z{9J5nspgv}-2|4Is{!=Pdw3E?{hQll@lRtBRity#PJW_x?v{^3dAf0%A* zVsJ^@z8f>c@1>s@-WSS^oKlS?<||UnyaqkS3N$gzp1hvH#R3e?!#d`@d>iB$<@7E4YHHb-k~ZKe`i$Ak7Dk&kDjLw~w+jeCBV z! zQL)i)F3ia*8%)HGjV%4*9UQ%%*YNuaGyxP4o?+BEm}Lyq(9n3GV&=7QDqr`$GemQT zwc@93tFI3{*!}+2m}MtOGJazwr0YP>ZRbIe)7c|R(q}EkOj4q}%cpf`NL&VJ@*w;q z@|jc4Q*bYBPHUCYyYA4v7NM9|(?yC@sG`D`l>Uf-S#1~xawMCXO>(uIE)nA4Zous0j)a=)%zykQXkf^kmApIxF6we9MD2B;(_cNDL5q zj3b*~WOSb# zC@a-L6gt>M4IibYiF(9+*g@6{^J4q=X1@(3qf2d1Cvkxv7!BP|N+-+Nj%)O;-IKbc i^S_yAUNu&}U{`OyEJsl~4*eBi7DGK#-3EwD%zpqtOTY2} literal 0 HcmV?d00001 diff --git a/apps/ui/static/garage-icon-72x72.png b/apps/ui/static/garage-icon-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..e9948246725029d647e53509012d39c4346b4896 GIT binary patch literal 2529 zcmb8x_dgVj0|)TSc1B$2GRh_nS1v0VXWY>l$zG4WIu~b;%Q_@FJF+gbc*@AUB3T*d zv30m}va%J5(8Ke5fB60Z&kvu^=k@sy-YMp$2ri%?5C8yh86ov8{$1q%!p8D%TkSL= z008z^M*6yz;YB-zIJDKzEB)G?2iQL%sZ^?ky|aTo6A)?&tu!|cq%M;nCyMza}HZNT04~1Xa}bX zYdP^`mVSlS+II*3W+T*&PTInn*62Z0$y(FWgQFu^1}Dq8zK6^}01m(`uu=}lNN3Q| z0s@X@0sryb1bc(>+FqWm4*&gV`kYmC(bO{Tsg7Kn#W|QVdn0@HpcJEwCDbyaFx<#yn^Jfs0LD3y*kTJX=deN<9Ys2$UIUPj2 zmD-0piq`ViiT^wf$o8*nz|$p8&c?1UW$yOU|oy{=l*ota@dG#U<`?W#XxP z20`*>zL(FU8yyEWc)ct4RMS zWxNT@qSt^`TQ!IGYD4X9=!Drk$yuV8PeA_EM`(2y2ldMro{cGJ!XV!j4#HnkJ^QUlVsBFkA5M9@=_;ThyRtWUuFEDz>VsIzU3lDK$lzDJ*z6{vOm zOO3HYEYoKOTyb}(TK%UuN9f;)cT)VWKH9#pxy)Nqax?wq1I2PfdvH~fs~{f5DBQgPue#RVP;b2;u9h8N8|Pr$78PbC&!Bv>BQoih#PVNn{0T0nUR&qR=8$#`aGDs2;vnmBq+uc|NDZcn2<1Eh` zHAi<4*wtzC0lvS;X*c2|P|{7j1A6%A3WI-(w7Kf zi^5t-q4ZnrOzY9L>+jN3BJC#IgN|6G5EGS$n76!7r`n(UU>*BK6Q@w{9$a+w2HU~s z*Ig%c4siN8!%0$x;6N7J&|M}m#h~8yU*fW0jRG5`Gy$$}N>?SZe9kJ#^@eE(eG^Mr zeKE8JaR{m>_l~Af`#2GC?}G2{noZW$iag3Wki$va+3e@&X9*!8*I7%;NVbk$IHk&?Z&E)}NOe9*mv^jx&syKE?& z8TCffkB4+%ZQH>zVOQ_pwio$pnK*!Cu*Q08H=tnDf@I;lo=zX&}i9l@?e|rH(D;``vK{Im$`6GUurMB zh)!?h1Z!x&bGwk)p#Tdj`rtvoJr@$XsHGVKj49SAmLr!v+Lyez{(SP=xP?Q%Ucr|x z0(aGFNw3d4R({0<@i$(5K{rapUPBmXVg0b;rfn8PmUsU-* z^-R=0)`V;F9OdfRRTZ63*Au<)x|EF^ZV}VCCvPpPDAPAIbE=w~`Kc{FZD@g)^qIeIAST=| z^Ed;R%3^6$gb8?H%@4*~_ka=i1aI?xxB5x4tq8>c0)TLthWGY66A|MWbsicka zdX+jcVUaYUw~Y%TQasW5c4iQ3V?WWs*&20Whk9-qP=A1fm_bed6K`F(p1gUL#HXu?QPN0 zg}SfBdaSnZcTIzp@mO;1W=eZokPz>kPaj1_-K}6QEB6ijmr~2lZ|4MS+K|^K+fTN4 zUeR2wY4rsKM%fV$&b1DAXN`7fqvP$^4pk#Z^7~#qje-{sG!>=~6Y_SwJ`Zm|-iNBU zcs7QR7u0bogG;&T(DFcq77m0wCeS=ur)>{eCd7;F=@6bdmYv_B4tQqaCD^~h-joN9 z+wj5>gLiu(&cnTA4Uba%n>zO7St8S2?ChkchD&`nRP$jy%%OpIg~MV;^d{z$Q~ zbb+Bs=CVn=atG4NS=uoHHsHh+xx9@dfpcWjgu|VF;KCiSl~_coTNuCo z{e?96+dHruH_B!U?UACN`coCGX^3%miv2Yzp)BCQY5w$Z-hX8xrjs*0{=4Jk?M`z# xAy=!SqzSyX?Bv+B!1~`Y^M3&Gcai@MAJ4x{ zDsfcf;NW*dSeQBAtz0jU4w0UaA(?IrGjK4wML)mQmLmO41^SRziKSMnB6Yg61*v8+*Nd^Pacng<(3?CaufhgeI`?*9N@apcjSnJL)X7 zWb6LhLf)ZzBlLxpzamtHOKqb2|F0`vIT5=<<53=^%D22h>e3hdSRQ|RLA}Cbl05H@ zSK7;vasZtxW^h)XHPYOVFR{g)&jHj{eAyi&uf&rjXAtA@8s*j|FfM5ULz{B;pUW!T zJFEP3t@#;&V@9<%xi;kfzXE#uE%DR8Zjs!uoi!ec$Llel z&OBm`dU5x=M8I^-jqHIi`TC=-w=t6+<5tUcXUcvkKn}h>1&^vEl~RZ(2@fn`-MM5!E1V{D z98G|&1H`h0`$l@w=afzXMm^gL=Yqsn{C{)Dv5rg*%}h=DGJyiVS29&~i1}imqvolO zzfQ29-~Yqa*;6Gb`(?D}0Qf`FD5LBbudkP3e+u(zf%1JQcYWCz?e^6U!`F`jPJ;d7 zaH4NQ?-lj^SrQ!c284PQF8|4C;)9$7ZmtfF-I93y62E#pva)q2U#F4=R!{X73L30? z+?aUhc!t`@I`6NbjfZGI?H!Vy>~yeE_l4S5FLsgv#Y2qRyII05^V2+ z=CT7sIPwXn6Wov;>^-a+`aFa*InB+9*xs$BFA36fBk2qajF?&q0zy}GP7ra4(z%I} z$r)-nL;&*aH>oR!MD)w2)UG0m#K-@K2ipYYjB!sjai`qHS&sxL6owld&lyDd_%N zH>SYupNz>SYYjGhhqbT$lTL^RXf*fE)CzQT%DJGHnrjyn9O(g@S_MCr3uzps=@tL8 zb%t}CigXZg9PdqKIPnau!&FoNioHkL%M1et2d>{Hp9?C;INJNiTxvcSa)pM@*2%;u zCiiS!vo;HJ6+1THgRh5^>zLX7e~jynH^H}~qyym3AHOTB_nUP;la4P$Z;OT)5($#K zW-hAN7ewrgk3|HldRU*l+>Hz9Nzp7*{WRJaOX?}=P+Je%TKsMz?#?$F7N){5KgBxK zbxY3;V@=wRYw24w&W{jNbuEGe^BIlcrjVDCcOY4SszEN0&3>ujCrUo$I{lHQjg6H3 zujiPnb)_cb>GEhwo^t5Hj);ZZNG=cXKi)L5ZuaTk>>+q zR|JU3$t+vZdNJGr)ZR*R^w?KsekLL#Y&I{>(fIJeG1o<{5SXHjou|?6+f)K~a>^JG z^FBa5yFke)y1V%SiZp~h~2a#G9a0#e56)i zr0S%1g3Q|Oa@LpHNavqz*} zr>7^rt^fh@)7-V&ZT-SkD)>jG%3Mtld*u(G`?)jGA6Od(?hT+jra+dgH*e+5#*%){G^W0#yfu44u zjiPBFIuhoIkbOH_krDM89_|$M2^iep$$e`y`jwm*56f^>Z$PiV)E8H|+%!X?a{aA- zVt}tb+O3DkH+q9 zMmf6{id0?9DQ?GLaX-$6@vsiZt2`6hizCf5dAVS6Lh)Zvo-fn#}YFZ}AXW8Eib zXK$Nf;tp4m6L}>+!``UnP%C&JPSC+EAqPF*#ZpDG#2j_^0t2buu$fOSxRwr`J*8K! zREb{SscDuSllJ=;ZAk7)fOr4?h6dbv9N=;Q+~%Oz%fbUhlEw)+KX#ErsAjU-fR<3`fU$oKL)TP8Zy=Ye{B6PqRp($s}4K& U8I7y>{!2{`gr%Lu3phIIKi7&LK>z>% literal 0 HcmV?d00001 diff --git a/apps/ui/static/manifest.json b/apps/ui/static/manifest.json new file mode 100644 index 0000000..8e3c766 --- /dev/null +++ b/apps/ui/static/manifest.json @@ -0,0 +1,43 @@ +{ + "name": "Home Automation", + "short_name": "Home", + "description": "Smart Home Automation System", + "start_url": "/", + "display": "standalone", + "background_color": "#667eea", + "theme_color": "#667eea", + "orientation": "portrait", + "icons": [ + { + "src": "/static/apple-touch-icon-180x180.png", + "sizes": "180x180", + "type": "image/png", + "purpose": "any maskable" + }, + { + "src": "/static/apple-touch-icon-152x152.png", + "sizes": "152x152", + "type": "image/png" + }, + { + "src": "/static/apple-touch-icon-120x120.png", + "sizes": "120x120", + "type": "image/png" + }, + { + "src": "/static/apple-touch-icon-76x76.png", + "sizes": "76x76", + "type": "image/png" + }, + { + "src": "/static/apple-touch-icon-32x32.png", + "sizes": "32x32", + "type": "image/png" + }, + { + "src": "/static/apple-touch-icon-16x16.png", + "sizes": "16x16", + "type": "image/png" + } + ] +} \ No newline at end of file diff --git a/apps/ui/templates/dashboard.html b/apps/ui/templates/dashboard.html index 27effd6..033d4a5 100644 --- a/apps/ui/templates/dashboard.html +++ b/apps/ui/templates/dashboard.html @@ -4,7 +4,19 @@ Home Automation + + + + + + + + + + + +