Compare commits
	
		
			1 Commits
		
	
	
		
			4f44974c58
			...
			main
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 5470ba1298 | 
							
								
								
									
										293
									
								
								frontend/assets/bg.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										293
									
								
								frontend/assets/bg.svg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,293 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||||
|  | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||||||
|  |  | ||||||
|  | <svg | ||||||
|  |    width="350mm" | ||||||
|  |    height="250mm" | ||||||
|  |    viewBox="0 0 350 250" | ||||||
|  |    version="1.1" | ||||||
|  |    id="svg1" | ||||||
|  |    inkscape:version="1.4 (e7c3feb100, 2024-10-09)" | ||||||
|  |    sodipodi:docname="bg.svg" | ||||||
|  |    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||||
|  |    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||||
|  |    xmlns="http://www.w3.org/2000/svg" | ||||||
|  |    xmlns:svg="http://www.w3.org/2000/svg"> | ||||||
|  |   <sodipodi:namedview | ||||||
|  |      id="namedview1" | ||||||
|  |      pagecolor="#000000" | ||||||
|  |      bordercolor="#000000" | ||||||
|  |      borderopacity="0.25" | ||||||
|  |      inkscape:showpageshadow="2" | ||||||
|  |      inkscape:pageopacity="0.0" | ||||||
|  |      inkscape:pagecheckerboard="0" | ||||||
|  |      inkscape:deskcolor="#d1d1d1" | ||||||
|  |      inkscape:document-units="mm" | ||||||
|  |      inkscape:export-bgcolor="#00000000" | ||||||
|  |      inkscape:zoom="0.48315491" | ||||||
|  |      inkscape:cx="734.75399" | ||||||
|  |      inkscape:cy="595.04724" | ||||||
|  |      inkscape:window-width="1672" | ||||||
|  |      inkscape:window-height="957" | ||||||
|  |      inkscape:window-x="816" | ||||||
|  |      inkscape:window-y="1259" | ||||||
|  |      inkscape:window-maximized="0" | ||||||
|  |      inkscape:current-layer="layer1" /> | ||||||
|  |   <defs | ||||||
|  |      id="defs1"> | ||||||
|  |     <rect | ||||||
|  |        x="1105.2356" | ||||||
|  |        y="300.11078" | ||||||
|  |        width="161.4389" | ||||||
|  |        height="53.812968" | ||||||
|  |        id="rect4" /> | ||||||
|  |     <rect | ||||||
|  |        x="203.42924" | ||||||
|  |        y="897.13763" | ||||||
|  |        width="220.99149" | ||||||
|  |        height="62.931351" | ||||||
|  |        id="rect3" /> | ||||||
|  |     <rect | ||||||
|  |        x="140.49789" | ||||||
|  |        y="166.84126" | ||||||
|  |        width="339.53659" | ||||||
|  |        height="86.347672" | ||||||
|  |        id="rect2" /> | ||||||
|  |     <rect | ||||||
|  |        x="125.8627" | ||||||
|  |        y="753.71271" | ||||||
|  |        width="357.09882" | ||||||
|  |        height="87.811188" | ||||||
|  |        id="rect1" /> | ||||||
|  |     <rect | ||||||
|  |        x="125.8627" | ||||||
|  |        y="753.71271" | ||||||
|  |        width="357.09882" | ||||||
|  |        height="87.811188" | ||||||
|  |        id="rect1-7" /> | ||||||
|  |     <rect | ||||||
|  |        x="125.8627" | ||||||
|  |        y="753.71271" | ||||||
|  |        width="357.09882" | ||||||
|  |        height="87.811188" | ||||||
|  |        id="rect1-2" /> | ||||||
|  |     <rect | ||||||
|  |        x="125.8627" | ||||||
|  |        y="753.71271" | ||||||
|  |        width="357.09882" | ||||||
|  |        height="87.811188" | ||||||
|  |        id="rect1-9" /> | ||||||
|  |     <rect | ||||||
|  |        x="125.8627" | ||||||
|  |        y="753.71271" | ||||||
|  |        width="357.09882" | ||||||
|  |        height="87.811188" | ||||||
|  |        id="rect1-6" /> | ||||||
|  |     <rect | ||||||
|  |        x="140.49789" | ||||||
|  |        y="166.84126" | ||||||
|  |        width="339.53659" | ||||||
|  |        height="86.347672" | ||||||
|  |        id="rect2-0" /> | ||||||
|  |     <rect | ||||||
|  |        x="140.49789" | ||||||
|  |        y="166.84126" | ||||||
|  |        width="339.53659" | ||||||
|  |        height="86.347672" | ||||||
|  |        id="rect2-2" /> | ||||||
|  |     <rect | ||||||
|  |        x="140.49789" | ||||||
|  |        y="166.84126" | ||||||
|  |        width="339.53659" | ||||||
|  |        height="86.347672" | ||||||
|  |        id="rect2-2-6" /> | ||||||
|  |     <rect | ||||||
|  |        x="1105.2356" | ||||||
|  |        y="300.11078" | ||||||
|  |        width="161.4389" | ||||||
|  |        height="53.812969" | ||||||
|  |        id="rect4-4" /> | ||||||
|  |     <rect | ||||||
|  |        x="1105.2356" | ||||||
|  |        y="300.11078" | ||||||
|  |        width="161.4389" | ||||||
|  |        height="53.812969" | ||||||
|  |        id="rect4-3" /> | ||||||
|  |     <rect | ||||||
|  |        x="1105.2356" | ||||||
|  |        y="300.11078" | ||||||
|  |        width="161.4389" | ||||||
|  |        height="53.812969" | ||||||
|  |        id="rect4-3-2" /> | ||||||
|  |     <rect | ||||||
|  |        x="125.8627" | ||||||
|  |        y="753.71271" | ||||||
|  |        width="357.09882" | ||||||
|  |        height="87.811188" | ||||||
|  |        id="rect1-2-4" /> | ||||||
|  |     <rect | ||||||
|  |        x="1105.2356" | ||||||
|  |        y="300.11078" | ||||||
|  |        width="161.4389" | ||||||
|  |        height="53.812969" | ||||||
|  |        id="rect4-3-3" /> | ||||||
|  |     <rect | ||||||
|  |        x="1105.2356" | ||||||
|  |        y="300.11078" | ||||||
|  |        width="161.4389" | ||||||
|  |        height="53.812969" | ||||||
|  |        id="rect6" /> | ||||||
|  |     <rect | ||||||
|  |        x="140.49789" | ||||||
|  |        y="166.84126" | ||||||
|  |        width="339.53659" | ||||||
|  |        height="86.347672" | ||||||
|  |        id="rect2-2-6-7" /> | ||||||
|  |   </defs> | ||||||
|  |   <g | ||||||
|  |      inkscape:label="Layer 1" | ||||||
|  |      inkscape:groupmode="layer" | ||||||
|  |      id="layer1"> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.26273149,-0.03124901,0.03124901,0.26273149,9.6318685,1.010781)" | ||||||
|  |        id="text1" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="125.86328" | ||||||
|  |          y="784.2323" | ||||||
|  |          id="tspan7">Meow</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.26223034,0.03520772,-0.03520772,0.26223034,181.67491,-73.913601)" | ||||||
|  |        id="text1-3" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1-7);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="125.86328" | ||||||
|  |          y="784.2323" | ||||||
|  |          id="tspan8">Meow</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.2637851,0.02053679,-0.02053679,0.2637851,9.5700315,-96.792778)" | ||||||
|  |        id="text1-1" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1-2);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="125.86328" | ||||||
|  |          y="784.2323" | ||||||
|  |          id="tspan9">Meow</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.26279038,-0.03074987,0.03074987,0.26279038,54.519132,-87.602003)" | ||||||
|  |        id="text1-1-6" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1-2-4);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="125.86328" | ||||||
|  |          y="784.2323" | ||||||
|  |          id="tspan10">Meow</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.26273149,-0.03124901,0.03124901,0.26273149,160.00124,-138.94545)" | ||||||
|  |        id="text1-6" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1-9);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="125.86328" | ||||||
|  |          y="784.2323" | ||||||
|  |          id="tspan11">Meow</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.26430785,-0.01207042,0.01207042,0.26430785,123.83488,0.36913542)" | ||||||
|  |        id="text1-8" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1-6);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="125.86328" | ||||||
|  |          y="784.2323" | ||||||
|  |          id="tspan12">Meow</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.26458333,0,0,0.26458333,-21.357022,-13.142783)" | ||||||
|  |        id="text2" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect2);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="140.49805" | ||||||
|  |          y="197.36121" | ||||||
|  |          id="tspan13">gock <333</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.26309895,-0.02798714,0.02798714,0.26309895,43.481131,24.812837)" | ||||||
|  |        id="text2-3" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect2-0);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="140.49805" | ||||||
|  |          y="197.36121" | ||||||
|  |          id="tspan14">gock <333</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.26094671,-0.04371676,0.04371676,0.26094671,222.97079,141.94755)" | ||||||
|  |        id="text2-8" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect2-2);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="140.49805" | ||||||
|  |          y="197.36121" | ||||||
|  |          id="tspan15">gock <333</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.26260965,-0.03225692,0.03225692,0.26260965,163.16927,187.98351)" | ||||||
|  |        id="text2-8-2" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect2-2-6);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="140.49805" | ||||||
|  |          y="197.36121" | ||||||
|  |          id="tspan16">gock <333</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.26261141,0.03224256,-0.03224256,0.26261141,-26.436727,169.44502)" | ||||||
|  |        id="text2-8-2-4" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect2-2-6-7);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="140.49805" | ||||||
|  |          y="197.36121" | ||||||
|  |          id="tspan17">gock <333</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="scale(0.26458333)" | ||||||
|  |        id="text3" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect3);display:inline;fill:#ffffff;stroke-width:4.91339" /> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.26458333,0,0,0.26458333,20.26179,-16.976094)" | ||||||
|  |        id="text4" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="1105.2363" | ||||||
|  |          y="330.63074" | ||||||
|  |          id="tspan18">Gay :3</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.25941349,0.05204788,-0.05204788,0.25941349,14.622996,-20.113934)" | ||||||
|  |        id="text4-8" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4-4);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="1105.2363" | ||||||
|  |          y="330.63074" | ||||||
|  |          id="tspan19">Gay :3</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.26458333,0,0,0.26458333,-185.03108,79.899068)" | ||||||
|  |        id="text4-1" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4-3);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="1105.2363" | ||||||
|  |          y="330.63074" | ||||||
|  |          id="tspan20">Gay :3</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.26300551,-0.02885206,0.02885206,0.26300551,-153.43986,-14.753595)" | ||||||
|  |        id="text4-1-6" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4-3-2);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="1105.2363" | ||||||
|  |          y="330.63074" | ||||||
|  |          id="tspan21">Gay :3</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.25999838,0.04904269,-0.04904269,0.25999838,-255.80374,45.596021)" | ||||||
|  |        id="text4-1-4" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4-3-3);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="1105.2363" | ||||||
|  |          y="330.63074" | ||||||
|  |          id="tspan22">Gay :3</tspan></text> | ||||||
|  |     <text | ||||||
|  |        xml:space="preserve" | ||||||
|  |        transform="matrix(0.25999838,0.04904269,-0.04904269,0.25999838,-255.80374,45.596021)" | ||||||
|  |        id="text6" | ||||||
|  |        style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect6);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan | ||||||
|  |          x="1105.2363" | ||||||
|  |          y="330.63074" | ||||||
|  |          id="tspan23">Gay :3</tspan></text> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 12 KiB | 
							
								
								
									
										
											BIN
										
									
								
								frontend/assets/girl_juice.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								frontend/assets/girl_juice.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 26 KiB | 
| @@ -49,16 +49,6 @@ body { | |||||||
|     color: black; |     color: black; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @media (max-height: 300px) { |  | ||||||
|     .search-grid { |  | ||||||
|         grid-template-rows: 4em; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     .search-logo { |  | ||||||
|         display: none; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .cards { | .cards { | ||||||
|     height: 100%; |     height: 100%; | ||||||
|     width: 100%; |     width: 100%; | ||||||
| @@ -70,6 +60,20 @@ body { | |||||||
|     overflow: auto; |     overflow: auto; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @media (max-height: 500px) { | ||||||
|  |     .search-grid { | ||||||
|  |         grid-template-rows: 4em; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     .search-logo { | ||||||
|  |         display: none; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     .cards { | ||||||
|  |         display: none; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| .card { | .card { | ||||||
|     background-color: rgba(255, 255, 255, 0.5); |     background-color: rgba(255, 255, 255, 0.5); | ||||||
|     width: 10em; |     width: 10em; | ||||||
| @@ -97,7 +101,6 @@ body { | |||||||
|     margin: 0; |     margin: 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| .card-image { | .card-image { | ||||||
|     height: 100%; |     height: 100%; | ||||||
|     aspect-ratio: 1/1; |     aspect-ratio: 1/1; | ||||||
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @@ -6,8 +6,6 @@ require github.com/labstack/echo/v4 v4.13.4 | |||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/TwiN/go-color v1.4.1 // indirect | 	github.com/TwiN/go-color v1.4.1 // indirect | ||||||
| 	github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect |  | ||||||
| 	github.com/labstack/echo v3.3.10+incompatible // indirect |  | ||||||
| 	github.com/labstack/gommon v0.4.2 // indirect | 	github.com/labstack/gommon v0.4.2 // indirect | ||||||
| 	github.com/mattn/go-colorable v0.1.14 // indirect | 	github.com/mattn/go-colorable v0.1.14 // indirect | ||||||
| 	github.com/mattn/go-isatty v0.0.20 // indirect | 	github.com/mattn/go-isatty v0.0.20 // indirect | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.sum
									
									
									
									
									
								
							| @@ -4,12 +4,8 @@ github.com/TwiN/go-color v1.4.1 h1:mqG0P/KBgHKVqmtL5ye7K0/Gr4l6hTksPgTgMk3mUzc= | |||||||
| github.com/TwiN/go-color v1.4.1/go.mod h1:WcPf/jtiW95WBIsEeY1Lc/b8aaWoiqQpu5cf8WFxu+s= | github.com/TwiN/go-color v1.4.1/go.mod h1:WcPf/jtiW95WBIsEeY1Lc/b8aaWoiqQpu5cf8WFxu+s= | ||||||
| github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||||
| github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= |  | ||||||
| github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= |  | ||||||
| github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f h1:dKccXx7xA56UNqOcFIbuqFjAWPVtP688j5QMgmo6OHU= | github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f h1:dKccXx7xA56UNqOcFIbuqFjAWPVtP688j5QMgmo6OHU= | ||||||
| github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f/go.mod h1:4rEELDSfUAlBSyUjPG0JnaNGjf13JySHFeRdD/3dLP0= | github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f/go.mod h1:4rEELDSfUAlBSyUjPG0JnaNGjf13JySHFeRdD/3dLP0= | ||||||
| github.com/labstack/echo v3.3.10+incompatible h1:pGRcYk231ExFAyoAjAfD85kQzRJCRI8bbnE7CX5OEgg= |  | ||||||
| github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= |  | ||||||
| github.com/labstack/echo/v4 v4.13.4 h1:oTZZW+T3s9gAu5L8vmzihV7/lkXGZuITzTQkTEhcXEA= | github.com/labstack/echo/v4 v4.13.4 h1:oTZZW+T3s9gAu5L8vmzihV7/lkXGZuITzTQkTEhcXEA= | ||||||
| github.com/labstack/echo/v4 v4.13.4/go.mod h1:g63b33BZ5vZzcIUF8AtRH40DrTlXnx4UMC8rBdndmjQ= | github.com/labstack/echo/v4 v4.13.4/go.mod h1:g63b33BZ5vZzcIUF8AtRH40DrTlXnx4UMC8rBdndmjQ= | ||||||
| github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= | github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= | ||||||
|   | |||||||
							
								
								
									
										42
									
								
								internal/server/embed.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								internal/server/embed.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | |||||||
|  | package server | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"bytes" | ||||||
|  | 	"embed" | ||||||
|  | 	"io/fs" | ||||||
|  | 	"log" | ||||||
|  | 	"net/http" | ||||||
|  | 	"text/template" | ||||||
|  |  | ||||||
|  | 	"github.com/labstack/echo/v4" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | var FrontendFiles embed.FS | ||||||
|  |  | ||||||
|  | func getFileContent() string { | ||||||
|  | 	content, err := FrontendFiles.ReadFile("frontend/index.html") | ||||||
|  |  | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return string(content) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func getIndex(c echo.Context) error { | ||||||
|  | 	IndexTemplate := template.Must(template.New("index").Parse(getFileContent())) | ||||||
|  |  | ||||||
|  | 	var tpl bytes.Buffer | ||||||
|  | 	IndexTemplate.Execute(&tpl, Config.Template) | ||||||
|  |  | ||||||
|  | 	return c.HTML(http.StatusOK, tpl.String()) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func getFileSystem() http.FileSystem { | ||||||
|  | 	fsys, err := fs.Sub(FrontendFiles, "frontend") | ||||||
|  | 	if err != nil { | ||||||
|  | 		panic(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return http.FS(fsys) | ||||||
|  | } | ||||||
| @@ -3,11 +3,12 @@ package server | |||||||
| import ( | import ( | ||||||
| 	"log" | 	"log" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"path/filepath" |  | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
|  | 	"gitea.elara.ws/Hazel/transfem-startpage/internal/cache" | ||||||
| 	"gitea.elara.ws/Hazel/transfem-startpage/internal/rendering" | 	"gitea.elara.ws/Hazel/transfem-startpage/internal/rendering" | ||||||
|  | 	"github.com/labstack/echo/v4" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var Config = rendering.NewConfig() | var Config = rendering.NewConfig() | ||||||
| @@ -24,16 +25,6 @@ func StartFetching() { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func GetFilepath(u string) string { |  | ||||||
| 	return filepath.Join("frontend", u) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func staticHandler(w http.ResponseWriter, r *http.Request) { |  | ||||||
| 	filepath := GetFilepath(r.URL.Path) |  | ||||||
| 	log.Println("serving file:", filepath) |  | ||||||
| 	http.ServeFileFS(w, r, FrontendFiles, filepath) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func Start(profile string) error { | func Start(profile string) error { | ||||||
| 	err := Config.ScanForConfigFile(profile) | 	err := Config.ScanForConfigFile(profile) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -47,36 +38,30 @@ func Start(profile string) error { | |||||||
| 		log.Println(err) | 		log.Println(err) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	http.HandleFunc("/static", staticHandler) | 	e := echo.New() | ||||||
| 	http.ListenAndServe(":"+strconv.Itoa(Config.Server.Port), nil) |  | ||||||
|  |  | ||||||
| 	/* | 	// statically serve the file | ||||||
| 		e := echo.New() | 	cache := cache.NewCache(profile) | ||||||
|  | 	if !cache.Disabled { | ||||||
|  | 		cache.StartStaticServer(e) | ||||||
|  |  | ||||||
| 		// statically serve the file | 		log.Println("downloading website icons...") | ||||||
| 		cache := cache.NewCache(profile) | 		for i, w := range Config.Template.Websites { | ||||||
| 		if !cache.Disabled { | 			u, err := cache.CacheUrl(w.ImageUrl) | ||||||
| 			cache.StartStaticServer(e) | 			if err != nil { | ||||||
|  | 				log.Println(err) | ||||||
| 			log.Println("downloading website icons...") |  | ||||||
| 			for i, w := range Config.Template.Websites { |  | ||||||
| 				u, err := cache.CacheUrl(w.ImageUrl) |  | ||||||
| 				if err != nil { |  | ||||||
| 					log.Println(err) |  | ||||||
| 				} |  | ||||||
| 				Config.Template.Websites[i].ImageUrl = u |  | ||||||
| 				Config.Template.Websites[i].IsFetched = true |  | ||||||
| 			} | 			} | ||||||
|  | 			Config.Template.Websites[i].ImageUrl = u | ||||||
|  | 			Config.Template.Websites[i].IsFetched = true | ||||||
| 		} | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 		// https://echo.labstack.com/docs/cookbook/embed-resources | 	// https://echo.labstack.com/docs/cookbook/embed-resources | ||||||
| 			staticHandler := http.FileServer(getFileSystem()) | 	staticHandler := http.FileServer(getFileSystem()) | ||||||
| 			e.GET("/assets/*", echo.WrapHandler(http.StripPrefix("/", staticHandler))) | 	e.GET("/assets/*", echo.WrapHandler(http.StripPrefix("/", staticHandler))) | ||||||
| 			e.GET("/scripts/*", echo.WrapHandler(http.StripPrefix("/", staticHandler))) | 	e.GET("/scripts/*", echo.WrapHandler(http.StripPrefix("/", staticHandler))) | ||||||
| 			e.GET("/", getIndex) | 	e.GET("/", getIndex) | ||||||
| 		StartTemplating(e) |  | ||||||
|  |  | ||||||
| 		e.Logger.Fatal(e.Start(":" + strconv.Itoa(Config.Server.Port))) | 	e.Logger.Fatal(e.Start(":" + strconv.Itoa(Config.Server.Port))) | ||||||
| 	*/ |  | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,80 +0,0 @@ | |||||||
| package server |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"embed" |  | ||||||
| 	"fmt" |  | ||||||
| 	"io" |  | ||||||
| 	"io/fs" |  | ||||||
| 	"log" |  | ||||||
| 	"net/http" |  | ||||||
| 	"path/filepath" |  | ||||||
| 	"text/template" |  | ||||||
|  |  | ||||||
| 	"github.com/labstack/echo/v4" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var FrontendFiles embed.FS |  | ||||||
|  |  | ||||||
| func getFileContent() string { |  | ||||||
| 	content, err := FrontendFiles.ReadFile("frontend/index.html") |  | ||||||
|  |  | ||||||
| 	if err != nil { |  | ||||||
| 		log.Fatal(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return string(content) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func getIndex(c echo.Context) error { |  | ||||||
| 	IndexTemplate := template.Must(template.New("index").Parse(getFileContent())) |  | ||||||
|  |  | ||||||
| 	var tpl bytes.Buffer |  | ||||||
| 	IndexTemplate.Execute(&tpl, Config.Template) |  | ||||||
|  |  | ||||||
| 	return c.HTML(http.StatusOK, tpl.String()) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func getFileSystem() http.FileSystem { |  | ||||||
| 	fsys, err := fs.Sub(FrontendFiles, "frontend") |  | ||||||
| 	if err != nil { |  | ||||||
| 		panic(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return http.FS(fsys) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type Template struct { |  | ||||||
| 	templates *template.Template |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error { |  | ||||||
| 	return t.templates.ExecuteTemplate(w, name, data) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var t *template.Template |  | ||||||
|  |  | ||||||
| func ServeTemplate(c echo.Context) error { |  | ||||||
| 	filename := filepath.Base(c.Request().URL.Path) |  | ||||||
| 	if filename == "/" { |  | ||||||
| 		filename = "index.html" |  | ||||||
| 	} |  | ||||||
| 	fmt.Println(filename) |  | ||||||
|  |  | ||||||
| 	var tpl bytes.Buffer |  | ||||||
| 	t.ExecuteTemplate(&tpl, filename, Config.Template) |  | ||||||
| 	return c.HTML(http.StatusOK, tpl.String()) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func StartTemplating(e *echo.Echo) { |  | ||||||
| 	// register templates as renderer |  | ||||||
| 	t = template.Must(template.ParseFS( |  | ||||||
| 		FrontendFiles, |  | ||||||
| 		"frontend/templates/*", |  | ||||||
| 	)) |  | ||||||
| 	fmt.Println(t.ParseName) |  | ||||||
|  |  | ||||||
| 	e.GET("/*", ServeTemplate) |  | ||||||
| 	staticHandler := http.FileServer(getFileSystem()) |  | ||||||
| 	e.GET("/static/*", echo.WrapHandler(http.StripPrefix("/", staticHandler))) |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user