library(shiny) library(bslib) ui <- page_fluid( theme = bs_theme( bootswatch = "lumen", primary = "#F76900", secondary = "#2C3E50" ), div( style = "background-color:#2C3E50; color:white; padding:30px; text-align:center;", h1("Jameson Bodenburg"), h4("Syracuse Sport Analytics | Syracuse Men's Basketball | Coastal Carolina Baseball | Hyannis Harbor Hawks"), h5("I am a Sport Analytics student at Syracuse University. Here is my portfolio of analytics presentations and apps."), br(), div( style = "margin-top:10px;", tags$a( href = "https://www.linkedin.com/in/jameson-bodenburg", target = "_blank", class = "btn btn-primary btn-sm", "LinkedIn" ), tags$a( href = "https://docs.google.com/document/d/1Vzrw7yTbaKXqmhWGwf_IJsR-AIKe_W7Ebkb-mZ0kPBE/view?usp=sharing", target = "_blank", class = "btn btn-primary btn-sm", style = "margin-left:8px;", "View Resume" ) ), br(), div( style = "display:flex; justify-content:center; align-items:center; gap:30px; flex-wrap:wrap;", tags$img(src = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Syracuse_Orange_logo.svg/1515px-Syracuse_Orange_logo.svg.png", height = "60px"), tags$img(src = "https://upload.wikimedia.org/wikipedia/commons/6/64/Hyannis_Harbor_Hawks.png", height = "60px"), tags$img(src = "https://upload.wikimedia.org/wikipedia/en/e/ef/Coastal_Carolina_Chanticleers_logo.svg", height = "60px") ) ), br(), layout_columns( col_widths = c(6, 6), card( style = "transition:0.3s; box-shadow:0 4px 12px rgba(0,0,0,0.15);", card_header(div("2025 Saberseminar Presentation", style="font-weight:bold; font-size:18px;")), card_body( p("Evaluating situational hitting"), tags$a( href = "https://docs.google.com/presentation/d/1AUCwY9W-cg03Fw_kZh9IJbBdtkOnDeiz/edit?usp=sharing", target = "_blank", class = "btn btn-primary", "View Google Slides" ) ) ), card( style = "transition:0.3s; box-shadow:0 4px 12px rgba(0,0,0,0.15);", card_header(div("2025 SABR Diamond Dollars Presentation", style="font-weight:bold; font-size:18px;")), card_body( p("Redesigning and creating pitcher relief metrics"), tags$a( href = "https://docs.google.com/presentation/d/157xClOjLZghWBXaWaFQKXDOJ0gt8ASTP/edit?usp=sharing", target = "_blank", class = "btn btn-primary", "View Google Slides" ) ) ), card( style = "transition:0.3s; box-shadow:0 4px 12px rgba(0,0,0,0.15);", card_header(div("Catcher Framing Run Value App", style="font-weight:bold; font-size:18px;")), card_body( p("Visualization of College Baseball Catcher Framing Run Value"), tags$a( href = "https://huggingface.co/spaces/jameson-bodenburg/College_Catcher_FRV", target = "_blank", class = "btn btn-primary", "View App" ) ) ), card( style = "transition:0.3s; box-shadow:0 4px 12px rgba(0,0,0,0.15);", card_header(div("NBA Draft 2025 Player Comparisons App", style = "font-weight:bold; font-size:18px;")), card_body( p("App for providing past college player comparisons for 2025 NBA Draft prospects"), tags$a( href = "https://huggingface.co/spaces/jameson-bodenburg/25_NBA_Draft_Comparisons", target = "_blank", class = "btn btn-primary", "View App" ) ) ), card( style = "transition:0.3s; box-shadow:0 4px 12px rgba(0,0,0,0.15);", card_header(div("2026 Football Analytics Blitz Presentation", style="font-weight:bold; font-size:18px;")), card_body( p("Analyzing the usage of Two-High Safety coverages and optimizing offensive strategy against it"), tags$a( href = "https://docs.google.com/presentation/d/16eqZoad4pYFo3hKpV8J5omA6w9gm2Ee2rNPbqiTFxMA/edit?usp=sharing", target = "_blank", class = "btn btn-primary", "View Google Slides" ) ) ), card( style = "transition:0.3s; box-shadow:0 4px 12px rgba(0,0,0,0.15);", card_header(div("NBA Top 100 Voting App", style="font-weight:bold; font-size:18px;")), card_body( p("App allowing the members of Syracuse Basketball Analytics Club to vote on the NBA's top 100 players"), tags$a( href = "https://huggingface.co/spaces/jameson-bodenburg/NBA_Top100", target = "_blank", class = "btn btn-primary", "View App" ) ) ) ), br(), div( style = "background-color:#f8f9fa; padding:20px; text-align:center; font-size:14px; color:#555;", p("© 2025 Jameson Bodenburg | Built with Shiny"), p("Contact: jameson.bodenburg@gmail.com | 860-247-8481") ) ) server <- function(input, output, session) {} shinyApp(ui, server)