Skip to content

Commit 6c64f9d

Browse files
authored
Merge pull request #55 from zorexsalvo/feat/merchandise-catalog
Feat/merchandise catalog
2 parents 352140a + d49a930 commit 6c64f9d

19 files changed

+4807
-1
lines changed
Lines changed: 270 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,270 @@
1+
{% load static %}
2+
3+
<div class="max-w-6xl mx-auto px-[4%] pt-40 pb-18">
4+
<h2 class="text-5xl my-10 font-bold font-td_pinoy text-orange-2">
5+
Merchandise
6+
</h2>
7+
8+
<div class="font-nunito text-brown-2 text-lg mb-12 space-y-4">
9+
<p>
10+
Thank you for your interest in PythonAsia 2026 merchandise! Browse our exclusive collection
11+
below — from apparel and accessories to Filipino-inspired keepsakes.
12+
</p>
13+
<p>
14+
This order form is <strong>exclusive to confirmed attendees</strong> of PythonAsia 2026.
15+
Fill it out to reserve your items. Our organizing team will contact you to confirm
16+
your order and provide payment instructions.
17+
</p>
18+
<div class="flex flex-col items-center gap-4 pt-2">
19+
<a
20+
href="https://forms.gle/RRdGLFGUV6sbJtey5"
21+
target="_blank"
22+
rel="noopener noreferrer"
23+
class="inline-block bg-orange-2 text-white font-bold font-bantayog px-8 py-3 rounded-xl hover:opacity-90 transition-opacity"
24+
>
25+
Reserve Your Merch
26+
</a>
27+
<div class="flex flex-col items-center gap-2 pt-2">
28+
<p class="font-nunito text-brown-2 text-sm">or scan to reserve</p>
29+
<img
30+
src="{% static 'img/merchandise/order-form-qr.png' %}"
31+
alt="QR code for merchandise order form"
32+
class="w-28 h-28 rounded-lg shadow-sm"
33+
>
34+
</div>
35+
</div>
36+
</div>
37+
38+
<div class="grid grid-cols-3 sm:grid-cols-4 gap-4">
39+
40+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
41+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
42+
<img
43+
src="{% static 'img/merchandise/tshirt-kalinga-maroon.png' %}"
44+
alt="Kalinga T-Shirt (Maroon)"
45+
class="w-full h-full object-contain"
46+
loading="lazy"
47+
>
48+
</div>
49+
<div class="p-4 flex flex-col flex-1">
50+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">Kalinga T-Shirt</h3>
51+
<p class="font-nunito text-brown-2 text-sm mt-1">Maroon · XS–2XL</p>
52+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 500.00</p>
53+
</div>
54+
</div>
55+
56+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
57+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
58+
<img
59+
src="{% static 'img/merchandise/tshirt-pythonasia-2026-white-generic.png' %}"
60+
alt="PythonAsia 2026 T-Shirt (White)"
61+
class="w-full h-full object-contain"
62+
loading="lazy"
63+
>
64+
</div>
65+
<div class="p-4 flex flex-col flex-1">
66+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">PythonAsia 2026 T-Shirt</h3>
67+
<p class="font-nunito text-brown-2 text-sm mt-1">Conference Type · White · XS–2XL</p>
68+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 500.00</p>
69+
</div>
70+
</div>
71+
72+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
73+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
74+
<img
75+
src="{% static 'img/merchandise/leather-tray.png' %}"
76+
alt="Leather Tray"
77+
class="w-full h-full object-contain"
78+
loading="lazy"
79+
>
80+
</div>
81+
<div class="p-4 flex flex-col flex-1">
82+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">Leather Tray</h3>
83+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 450.00</p>
84+
</div>
85+
</div>
86+
87+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
88+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
89+
<img
90+
src="{% static 'img/merchandise/notepad-large.png' %}"
91+
alt="Notepad (80 Sheets, 4×4)"
92+
class="w-full h-full object-contain"
93+
loading="lazy"
94+
>
95+
</div>
96+
<div class="p-4 flex flex-col flex-1">
97+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">Notepad</h3>
98+
<p class="font-nunito text-brown-2 text-sm mt-1">80 Sheets · 4×4</p>
99+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 100.00</p>
100+
</div>
101+
</div>
102+
103+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
104+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
105+
<img
106+
src="{% static 'img/merchandise/notepad-design1-small.png' %}"
107+
alt="Notepad Design 1 (40 Sheets, 3×3)"
108+
class="w-full h-full object-contain"
109+
loading="lazy"
110+
>
111+
</div>
112+
<div class="p-4 flex flex-col flex-1">
113+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">Notepad Design 1</h3>
114+
<p class="font-nunito text-brown-2 text-sm mt-1">40 Sheets · 3×3</p>
115+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 80.00</p>
116+
</div>
117+
</div>
118+
119+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
120+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
121+
<img
122+
src="{% static 'img/merchandise/notepad-design2-small.png' %}"
123+
alt="Notepad Design 2 (40 Sheets, 3×3)"
124+
class="w-full h-full object-contain"
125+
loading="lazy"
126+
>
127+
</div>
128+
<div class="p-4 flex flex-col flex-1">
129+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">Notepad Design 2</h3>
130+
<p class="font-nunito text-brown-2 text-sm mt-1">40 Sheets · 3×3</p>
131+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 80.00</p>
132+
</div>
133+
</div>
134+
135+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
136+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
137+
<img
138+
src="{% static 'img/merchandise/pythonasia-2026-acrylic.png' %}"
139+
alt="Acrylic Keychain PythonAsia 2026"
140+
class="w-full h-full object-contain"
141+
loading="lazy"
142+
>
143+
</div>
144+
<div class="p-4 flex flex-col flex-1">
145+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">Acrylic Keychain PythonAsia 2026</h3>
146+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 100.00</p>
147+
</div>
148+
</div>
149+
150+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
151+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
152+
<img
153+
src="{% static 'img/merchandise/palayok-acrylic.png' %}"
154+
alt="Acrylic Keychain Palayok"
155+
class="w-full h-full object-contain"
156+
loading="lazy"
157+
>
158+
</div>
159+
<div class="p-4 flex flex-col flex-1">
160+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">Acrylic Keychain Palayok</h3>
161+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 100.00</p>
162+
</div>
163+
</div>
164+
165+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
166+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
167+
<img
168+
src="{% static 'img/merchandise/fridge-magnet.jpg' %}"
169+
alt="Refrigerator Magnet"
170+
class="w-full h-full object-contain"
171+
loading="lazy"
172+
>
173+
</div>
174+
<div class="p-4 flex flex-col flex-1">
175+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">Refrigerator Magnet</h3>
176+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 150.00</p>
177+
</div>
178+
</div>
179+
180+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
181+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
182+
<img
183+
src="{% static 'img/merchandise/pythonph-fidget.jpg' %}"
184+
alt="3D PythonPH Clicker Fidget"
185+
class="w-full h-full object-contain"
186+
loading="lazy"
187+
>
188+
</div>
189+
<div class="p-4 flex flex-col flex-1">
190+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">3D PythonPH Clicker Fidget</h3>
191+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 250.00</p>
192+
</div>
193+
</div>
194+
195+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
196+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
197+
<img
198+
src="{% static 'img/merchandise/palayok-clicker.png' %}"
199+
alt="3D Palayok Clicker Fidget (Large)"
200+
class="w-full h-full object-contain"
201+
loading="lazy"
202+
>
203+
</div>
204+
<div class="p-4 flex flex-col flex-1">
205+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">3D Palayok Clicker Fidget</h3>
206+
<p class="font-nunito text-brown-2 text-sm mt-1">Large</p>
207+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 350.00</p>
208+
</div>
209+
</div>
210+
211+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
212+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
213+
<img
214+
src="{% static 'img/merchandise/palayok-clicker.png' %}"
215+
alt="3D Palayok Clicker Fidget (Small)"
216+
class="w-full h-full object-contain"
217+
loading="lazy"
218+
>
219+
</div>
220+
<div class="p-4 flex flex-col flex-1">
221+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">3D Palayok Clicker Fidget</h3>
222+
<p class="font-nunito text-brown-2 text-sm mt-1">Small</p>
223+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 300.00</p>
224+
</div>
225+
</div>
226+
227+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
228+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
229+
<img
230+
src="{% static 'img/merchandise/pythonasia-2026-socks.png' %}"
231+
alt="PythonAsia Pattern Style Customized Socks (Beige)"
232+
class="w-full h-full object-contain"
233+
loading="lazy"
234+
>
235+
</div>
236+
<div class="p-4 flex flex-col flex-1">
237+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">PythonAsia Pattern Style Customized Socks</h3>
238+
<p class="font-nunito text-brown-2 text-sm mt-1">Beige</p>
239+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 350.00</p>
240+
</div>
241+
</div>
242+
243+
<div class="bg-offwhite-2 rounded-2xl overflow-hidden shadow-sm flex flex-col">
244+
<div class="aspect-square bg-cream-1 flex items-center justify-center p-4">
245+
<img
246+
src="{% static 'img/merchandise/socks-pattern-pythonph.png' %}"
247+
alt="PythonPH Logo Pattern Style Customized Socks (Black)"
248+
class="w-full h-full object-contain"
249+
loading="lazy"
250+
>
251+
</div>
252+
<div class="p-4 flex flex-col flex-1">
253+
<h3 class="font-bantayog font-bold text-brown-1 text-lg leading-snug">PythonPH Logo Pattern Style Customized Socks</h3>
254+
<p class="font-nunito text-brown-2 text-sm mt-1">Black</p>
255+
<p class="font-nunito font-bold text-orange-2 text-base mt-auto pt-3">Php 320.00</p>
256+
</div>
257+
</div>
258+
259+
</div>
260+
261+
<div class="mt-16 flex flex-col items-center">
262+
<h3 class="font-bantayog font-bold text-brown-1 text-2xl mb-6">Size Chart</h3>
263+
<img
264+
src="{% static 'img/merchandise/size-chart.png' %}"
265+
alt="Merchandise size chart"
266+
class="w-full max-w-lg rounded-2xl shadow-sm"
267+
>
268+
</div>
269+
270+
</div>

app/home/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
path("", views.HomeView.as_view(), name="home"),
77
path("schedule/", views.ScheduleView.as_view(), name="schedule"),
88
path("volunteers/", views.VolunteersView.as_view(), name="volunteers"),
9+
path("merchandise/", views.MerchandiseView.as_view(), name="merchandise"),
910
]

app/home/views.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,8 @@ class ScheduleView(InternalPageView):
9797
class VolunteersView(InternalPageView):
9898
build_path = "volunteers/index.html"
9999
page_template = "internal/pages/volunteers.html"
100+
101+
102+
class MerchandiseView(InternalPageView):
103+
build_path = "merchandise/index.html"
104+
page_template = "internal/pages/merchandise.html"

static/css/app.css

Lines changed: 4531 additions & 1 deletion
Large diffs are not rendered by default.
247 KB
Loading
91.1 KB
Loading
189 KB
Loading
205 KB
Loading
283 KB
Loading
84.9 KB
Loading

0 commit comments

Comments
 (0)