@@ -23,6 +23,64 @@ const PILLARS = [
2323 } ,
2424] ;
2525
26+ const PHASES = [
27+ {
28+ phase : "Phase 1" ,
29+ title : "Foundation" ,
30+ status : "shipped" ,
31+ statusLabel : "✅ Shipped" ,
32+ items : [
33+ "Loop platform launched" ,
34+ "$BUILD token live on-chain" ,
35+ "Autonomous AI agent active" ,
36+ "Buildtopia landing & identity" ,
37+ ] ,
38+ } ,
39+ {
40+ phase : "Phase 2" ,
41+ title : "City Skeleton" ,
42+ status : "building" ,
43+ statusLabel : "🔨 Building" ,
44+ items : [
45+ "Buildtopia 3D isometric map" ,
46+ "Building slot framework" ,
47+ "xStocks architecture" ,
48+ "Startup onboarding flow" ,
49+ ] ,
50+ } ,
51+ {
52+ phase : "Phase 3" ,
53+ title : "First District" ,
54+ status : "next" ,
55+ statusLabel : "🔜 Next" ,
56+ items : [
57+ "First real startup buildings live" ,
58+ "In-city quests & exploration" ,
59+ "xStock earning mechanics" ,
60+ "Public city map explorer" ,
61+ ] ,
62+ } ,
63+ {
64+ phase : "Phase 4" ,
65+ title : "Open World" ,
66+ status : "future" ,
67+ statusLabel : "🌐 Future" ,
68+ items : [
69+ "Open startup launch portal" ,
70+ "Multiplayer city events" ,
71+ "$BUILD holder governance" ,
72+ "Cross-city Loop network" ,
73+ ] ,
74+ } ,
75+ ] ;
76+
77+ const STATUS_COLORS = {
78+ shipped : { bg : "rgba(72,187,120,0.12)" , border : "rgba(72,187,120,0.3)" , text : "#68d391" } ,
79+ building : { bg : "rgba(99,179,237,0.12)" , border : "rgba(99,179,237,0.3)" , text : "#63b3ed" } ,
80+ next : { bg : "rgba(246,173,85,0.1)" , border : "rgba(246,173,85,0.25)" , text : "#f6ad55" } ,
81+ future : { bg : "rgba(255,255,255,0.05)" , border : "rgba(255,255,255,0.1)" , text : "rgba(240,240,245,0.45)" } ,
82+ } ;
83+
2684const styles = {
2785 root : {
2886 fontFamily : "system-ui, -apple-system, sans-serif" ,
@@ -189,6 +247,58 @@ const styles = {
189247 pillarIcon : { fontSize : "2rem" , marginBottom : "1rem" } ,
190248 pillarTitle : { fontWeight : 700 , fontSize : "1.05rem" , marginBottom : "0.6rem" } ,
191249 pillarBody : { color : "rgba(240,240,245,0.6)" , fontSize : "0.9rem" , lineHeight : 1.65 } ,
250+ roadmapSection : {
251+ maxWidth : "900px" ,
252+ margin : "0 auto" ,
253+ padding : "0 1.5rem 4rem" ,
254+ } ,
255+ roadmapGrid : {
256+ display : "grid" ,
257+ gridTemplateColumns : "repeat(auto-fit, minmax(200px, 1fr))" ,
258+ gap : "1.25rem" ,
259+ position : "relative" ,
260+ } ,
261+ phaseCard : {
262+ background : "rgba(255,255,255,0.03)" ,
263+ border : "1px solid rgba(255,255,255,0.08)" ,
264+ borderRadius : "14px" ,
265+ padding : "1.5rem" ,
266+ display : "flex" ,
267+ flexDirection : "column" ,
268+ gap : "0.85rem" ,
269+ } ,
270+ phaseHeader : {
271+ display : "flex" ,
272+ flexDirection : "column" ,
273+ gap : "0.35rem" ,
274+ } ,
275+ phaseLabel : {
276+ fontSize : "0.72rem" ,
277+ letterSpacing : "0.08em" ,
278+ textTransform : "uppercase" ,
279+ color : "rgba(240,240,245,0.35)" ,
280+ fontWeight : 600 ,
281+ } ,
282+ phaseTitle : {
283+ fontSize : "1.05rem" ,
284+ fontWeight : 700 ,
285+ color : "#f0f0f5" ,
286+ letterSpacing : "-0.01em" ,
287+ } ,
288+ phaseItems : {
289+ listStyle : "none" ,
290+ margin : 0 ,
291+ padding : 0 ,
292+ display : "flex" ,
293+ flexDirection : "column" ,
294+ gap : "0.45rem" ,
295+ } ,
296+ phaseItem : {
297+ fontSize : "0.83rem" ,
298+ color : "rgba(240,240,245,0.6)" ,
299+ paddingLeft : "1.1rem" ,
300+ position : "relative" ,
301+ } ,
192302 communitySection : {
193303 maxWidth : "900px" ,
194304 margin : "0 auto" ,
@@ -290,6 +400,61 @@ export default function Page() {
290400 </ div >
291401 </ section >
292402
403+ { /* Roadmap */ }
404+ < section style = { styles . roadmapSection } >
405+ < p style = { styles . sectionLabel } > Roadmap</ p >
406+ < h2 style = { { ...styles . sectionTitle , margin : "0 0 2.5rem" } } > Building Buildtopia, phase by phase</ h2 >
407+ < div style = { styles . roadmapGrid } >
408+ { PHASES . map ( ( ph ) => {
409+ const colors = STATUS_COLORS [ ph . status ] ;
410+ return (
411+ < div
412+ key = { ph . phase }
413+ style = { {
414+ ...styles . phaseCard ,
415+ borderColor : colors . border ,
416+ background : colors . bg ,
417+ } }
418+ >
419+ < div style = { styles . phaseHeader } >
420+ < span style = { styles . phaseLabel } > { ph . phase } </ span >
421+ < span style = { styles . phaseTitle } > { ph . title } </ span >
422+ < span
423+ style = { {
424+ display : "inline-block" ,
425+ fontSize : "0.72rem" ,
426+ fontWeight : 600 ,
427+ letterSpacing : "0.04em" ,
428+ color : colors . text ,
429+ marginTop : "0.1rem" ,
430+ } }
431+ >
432+ { ph . statusLabel }
433+ </ span >
434+ </ div >
435+ < ul style = { styles . phaseItems } >
436+ { ph . items . map ( ( item ) => (
437+ < li key = { item } style = { styles . phaseItem } >
438+ < span
439+ style = { {
440+ position : "absolute" ,
441+ left : 0 ,
442+ color : colors . text ,
443+ opacity : 0.7 ,
444+ } }
445+ >
446+ ›
447+ </ span >
448+ { item }
449+ </ li >
450+ ) ) }
451+ </ ul >
452+ </ div >
453+ ) ;
454+ } ) }
455+ </ div >
456+ </ section >
457+
293458 { /* Community */ }
294459 < section style = { styles . communitySection } >
295460 < p style = { styles . sectionLabel } > Community</ p >
0 commit comments