Add Codespaces setup with JSON-driven content architecture and fully integrated data-driven components#8
Add Codespaces setup with JSON-driven content architecture and fully integrated data-driven components#8Copilot wants to merge 6 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…d placeholder components Co-authored-by: Prarambha369 <98906077+Prarambha369@users.noreply.github.com>
Co-authored-by: Prarambha369 <98906077+Prarambha369@users.noreply.github.com>
|
@copilot Perfect! Since you want a full React + TypeScript website ready in your Codespace, I’ve prepared all the components prewired to sampleData.ts. This uses your tech stack: React + TypeScript + Vite + Tailwind + shadcn-ui. Below is a complete folder/component structure with code for Hero, About, Schedule, Sponsors, Prizes, Judges, FAQ, Footer, all pulling data from sampleData.ts. Folder Structure src/ 1️⃣ Hero.tsx import React from "react"; const Hero: React.FC = () => { {hackathonInfo.name}{hackathonInfo.tagline} {hackathonInfo.date} • {hackathonInfo.location} Register View Winners ); }; export default Hero; 2️⃣ About.tsx import React from "react"; const About: React.FC = () => { About {hackathonInfo.name}
Participation Requirements
{participationRequirements.map((req) => ( ))} ); }; export default About; 3️⃣ Schedule.tsx import React from "react"; const schedule = [ const Schedule: React.FC = () => { Schedule
{schedule.map((item) => ( ))} ); }; export default Schedule; 4️⃣ Sponsors.tsx import React from "react"; const Sponsors: React.FC = () => { Sponsors{sponsors.map((sponsor) => ( {sponsor} ))} ); }; export default Sponsors; 5️⃣ Prizes.tsx import React from "react"; const Prizes: React.FC = () => { Prizes{prizes.map((prize) => ( {prize.title}{prize.cash && {prize.cash} }{prize.perks && {prize.perks} }{prize.winners} winner(s) ))} ); }; export default Prizes; 6️⃣ Judges.tsx import React from "react"; const Judges: React.FC = () => { Judges{judges.map((judge) => ( {judge.name} {judge.organization} ))} ); }; export default Judges; 7️⃣ FAQ.tsx import React from "react"; const FAQ: React.FC = () => { FAQ{faq.map(({ question, answer }) => ( Details{question}{answer} ))} ); }; export default FAQ; 8️⃣ Footer.tsx import React from "react"; const Footer: React.FC = () => { © 2026 HackDay Butwal. All rights reserved. ); }; export default Footer; 9️⃣ HackathonPage.tsx import React from "react"; const HackathonPage: React.FC = () => { ); }; export default HackathonPage; ✅ Usage
I can also add a “Team Gallery & Winners” section prewired to sampleData.ts so you can display all teams, repos, and winners once the Devpost results are live. Do you want me to do that next? |
Co-authored-by: Prarambha369 <98906077+Prarambha369@users.noreply.github.com>
Done! I've implemented all the components prewired to sampleData.ts. Created 9 data-driven components (HeroData, AboutData, ScheduleData, SponsorsData, PrizesData, JudgesData, FAQData, FooterData, TeamGallery) plus HackathonPage.tsx that combines them all. All components are fully typed with TypeScript, styled with Tailwind CSS, and mobile-responsive. The TeamGallery component displays all team projects with GitHub & Devpost links as requested. Commit: 165d6f8 To use: Import HackathonPage in your App.tsx or use individual components as needed. |
|
Update the website of HackDay Butwal @copilot |
…riven components Co-authored-by: Prarambha369 <98906077+Prarambha369@users.noreply.github.com>
|
Use all components you made in the website and make new updates in Web @copilot |
Co-authored-by: Prarambha369 <98906077+Prarambha369@users.noreply.github.com>
Updated! The website now integrates all the data-driven components I created:
Commit: 5689073 All components are live and working on the main site.
Done! All data-driven components are now integrated into the main website: Main site (/) now includes:
Standalone page (/hackathon) provides clean data-driven view:
Commit: 5689073 |



Implements a structured environment for volunteer contributors with content managed via JSON files separate from React components, plus a complete set of data-driven React components powered by TypeScript that are now fully integrated into the live website.
Documentation & Onboarding
AGENTS.md- Contributor guidelines (modular components, JSON content, SVG assets)TODO.md- Volunteer task backlogROADMAP.md- Three-phase development planContent Layer
Centralized content in
content/directory:home.json- Event metadata (title, tagline, location, mission)events.json- Event status and venue detailssponsors.json- Sponsor logos and URLsteams.json- Team projects with GitHub/Devpost linksComponent Placeholders
Six components in
src/components/consuming JSON data:hero.tsx,mission.tsx- Static sectionsevents-grid.tsx,sponsors.tsx,teams.tsx- Data-driven gridsfooter.tsx- Event footerExample usage:
Data-Driven Components Architecture
Complete TypeScript-powered component system using centralized data source:
Central Data Source (
src/data/sampleData.ts):9 Data-Driven Components in
src/components/:HeroData.tsx- Hero section with event title and taglineAboutData.tsx- About section with participation requirementsScheduleData.tsx- Timeline with event scheduleSponsorsData.tsx- Responsive sponsor gridPrizesData.tsx- Prize information cardsJudgesData.tsx- Judge profilesFAQData.tsx- Collapsible FAQ sectionFooterData.tsx- Footer with social media linksTeamGallery.tsx- Team projects showcase with GitHub/Devpost linksComplete Page (
src/pages/HackathonPage.tsx):/hackathonrouteWebsite Integration
All data-driven components are now live on the main website:
Main Website (
/) - Enhanced with new sections:PrizesData- Prize tiers (NPR 25,000, 15,000, 10,000 + special awards)JudgesData- Judge profiles from sampleData.tsTeamGallery- Participant team projects with GitHub/Devpost linksStandalone Route (
/hackathon) - Clean data-driven view:Infrastructure
.devcontainer/devcontainer.json- Node 20 environment with auto-installpublic/svg/for MLH and Google Gemini logosAll components are fully typed with TypeScript, production-ready, integrated into the live website, and follow the contributor guidelines in AGENTS.md.
Original prompt
#!/bin/bash
--- HackDay Codespaces One-Shot Setup Script ---
echo "Starting HackDay Codespaces setup..."
Step 1: Create folders
mkdir -p docs content src/assets/svg src/components src/app
Step 2: Create foundational documentation files
AGENTS.md - Volunteer Instructions
cat > AGENTS.md <<EOL
Volunteer Instructions
EOL
TODO.md - Tasks for volunteers
cat > TODO.md <<EOL
EOL
ROADMAP.md - Phase-wise plan
cat > ROADMAP.md <<EOL
Phase 1
Phase 2
Phase 3
EOL
Step 3: Create JSON content files
home.json
cat > content/home.json <<EOL
{
"title": "HackDay Lumbini 2026",
"tagline": "Innovate. Build. Collaborate.",
"location": "Lumbini World School, Rupandehi District",
"mission": "Empowering students with hands-on hackathon experience in collaboration with MLH and Google Gemini HackDays Innovative."
}
EOL
events.json
cat > content/events.json <<EOL
[
{
"name": "HackDay Lumbini 2026",
"status": "Ended",
"date": "2026-01-17",
"venue": "Lumbini World School"
}
]
EOL
sponsors.json
cat > content/sponsors.json <<EOL
[
{
"name": "MLH",
"logo": "/src/assets/svg/mlh.svg",
"website": "https://mlh.io"
},
{
"name": "Google Gemini HackDays",
"logo": "/src/assets/svg/google-gemini.svg",
"website": "https://developers.google.com/gemini"
}
]
EOL
teams.json
cat > content/teams.json <<EOL
[
{
"team_name": "Team Alpha",
"github_repo": "https://github.com/Butwal-Hacks/team-alpha",
"devpost_link": "https://butwal.devpost.com/project/alpha",
"project_title": "Smart Campus App"
},
{
"team_name": "Team Beta",
"github_repo": "https://github.com/Butwal-Hacks/team-beta",
"devpost_link": "https://butwal.devpost.com/project/beta",
"project_title": "AI Attendance Tracker"
}
]
EOL
Step 4: Add placeholder SVG logos
mkdir -p src/assets/svg
cat > src/assets/svg/mlh.svg <<EOL
MLH
EOL
cat > src/assets/svg/google-gemini.svg <<EOL
Google Gemini HackDays
EOL
Step 5: Setup Codespaces dev container
mkdir -p .devcontainer
cat > .devcontainer/devcontainer.json <<EOL
{
"name": "HackDay Dev Environment",
"image": "mcr.microsoft.com/devcontainers/javascript-node:20",
"features": {
"ghcr.io/devcontainers/features/git:1": {}
},
"postCreateCommand": "npm install"
}
EOL
Step 6: Create basic React components placeholders
cat > src/components/hero.tsx <<EOL
export default function Hero() {
return (
HackDay Lumbini 2026
Innovate. Build. Collaborate.
);
}
EOL
cat > src/components/mission.tsx <<EOL
export default function Mission() {
return (
Our Mission
Empowering students with hands-on hackathon experience in collaboration with MLH and Google Gemini HackDays Innovative.
);
}
EOL
cat > src/components/events-grid.tsx <<EOL
import events from '../content/events.json';
export default function EventsGrid() {
return (
Events
{events.map((event) => (
{event.name}
{event.venue}
Status: {event.status}
Date: {event.date}
))}
);
}
EOL
cat > src/components/...
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.