| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| <title>Google Summer of Code β Hugging Science</title> |
| <link rel="preconnect" href="https://fonts.googleapis.com" /> |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> |
| <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Source+Code+Pro:wght@400;500&display=swap" rel="stylesheet" /> |
| <style> |
| *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } |
| |
| :root { |
| |
| --color-bg: #F9FAFB; |
| --color-surface: #FFFFFF; |
| --color-ink: #1F2937; |
| --color-ink-secondary: #4B5563; |
| --color-ink-muted: #6B7280; |
| --color-accent: #FF9D00; |
| --color-accent-soft: #FFF7E6; |
| --color-accent-hover: #E68A00; |
| --color-yellow: #FFD21E; |
| --color-yellow-soft: #FFFBEB; |
| --color-green: #10B981; |
| --color-green-soft: #D1FAE5; |
| --color-blue: #3B82F6; |
| --color-blue-soft: #DBEAFE; |
| --color-purple: #8B5CF6; |
| --color-purple-soft: #EDE9FE; |
| --color-border: #E5E7EB; |
| --color-border-strong: #D1D5DB; |
| --font-display: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; |
| --font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; |
| --font-mono: 'Source Code Pro', 'Fira Code', monospace; |
| --radius-sm: 8px; |
| --radius-md: 12px; |
| --radius-lg: 16px; |
| --shadow-sm: 0 1px 2px rgba(0,0,0,0.05); |
| --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.06); |
| --shadow-lg: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -2px rgba(0,0,0,0.05); |
| } |
| |
| html { scroll-behavior: smooth; } |
| |
| body { |
| font-family: var(--font-body); |
| background: var(--color-bg); |
| color: var(--color-ink); |
| line-height: 1.65; |
| font-size: 16px; |
| -webkit-font-smoothing: antialiased; |
| } |
| |
| |
| |
| .hero { |
| max-width: 1080px; |
| margin: 0 auto; |
| padding: 72px 32px 48px; |
| text-align: center; |
| animation: fadeUp 0.6s ease-out both; |
| } |
| |
| @keyframes fadeUp { |
| from { opacity: 0; transform: translateY(16px); } |
| to { opacity: 1; transform: translateY(0); } |
| } |
| |
| .hero-badge { |
| display: inline-flex; |
| align-items: center; |
| gap: 10px; |
| padding: 8px 18px 8px 10px; |
| background: linear-gradient(135deg, var(--color-yellow-soft) 0%, var(--color-accent-soft) 100%); |
| border: 1px solid rgba(255, 157, 0, 0.2); |
| color: var(--color-ink); |
| border-radius: 100px; |
| font-size: 0.9rem; |
| font-weight: 600; |
| letter-spacing: 0.01em; |
| margin-bottom: 24px; |
| } |
| |
| .hero-badge img { |
| flex-shrink: 0; |
| } |
| |
| .hero h1 { |
| font-family: var(--font-display); |
| font-size: clamp(2.25rem, 5vw, 3rem); |
| line-height: 1.2; |
| letter-spacing: -0.025em; |
| font-weight: 700; |
| color: var(--color-ink); |
| margin-bottom: 16px; |
| } |
| |
| |
| .hero-subtitle { |
| font-size: 1.15rem; |
| color: var(--color-ink-secondary); |
| max-width: 600px; |
| margin: 0 auto 32px; |
| line-height: 1.7; |
| } |
| |
| .hero-meta { |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| gap: 24px; |
| flex-wrap: wrap; |
| } |
| |
| .hero-meta-item { |
| display: flex; |
| align-items: center; |
| gap: 8px; |
| font-size: 0.875rem; |
| color: var(--color-ink-muted); |
| } |
| |
| .hero-meta-item svg { |
| flex-shrink: 0; |
| color: var(--color-accent); |
| } |
| |
| |
| .tabs-container { |
| max-width: 1080px; |
| margin: 0 auto; |
| padding: 0 32px; |
| } |
| |
| .tab-bar { |
| display: flex; |
| gap: 0; |
| border-bottom: 2px solid var(--color-border); |
| margin-bottom: 40px; |
| animation: fadeUp 0.6s 0.15s ease-out both; |
| } |
| |
| .tab-btn { |
| position: relative; |
| background: none; |
| border: none; |
| font-family: var(--font-body); |
| font-size: 1rem; |
| font-weight: 600; |
| color: var(--color-ink-muted); |
| padding: 14px 24px; |
| cursor: pointer; |
| transition: color 0.25s; |
| white-space: nowrap; |
| } |
| |
| .tab-btn:hover { color: var(--color-ink-secondary); } |
| |
| .tab-btn.active { color: var(--color-accent); } |
| |
| .tab-btn::after { |
| content: ''; |
| position: absolute; |
| bottom: -2px; |
| left: 0; |
| right: 0; |
| height: 2px; |
| background: var(--color-accent); |
| transform: scaleX(0); |
| transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); |
| } |
| |
| .tab-btn.active::after { transform: scaleX(1); } |
| |
| .tab-panel { |
| display: none; |
| animation: fadeUp 0.4s ease-out both; |
| } |
| |
| .tab-panel.active { display: block; } |
| |
| |
| .content-grid { |
| display: grid; |
| gap: 24px; |
| padding-bottom: 80px; |
| } |
| |
| .card { |
| background: var(--color-surface); |
| border: 1px solid var(--color-border); |
| border-radius: var(--radius-lg); |
| padding: 28px; |
| transition: box-shadow 0.2s, border-color 0.2s, transform 0.2s; |
| } |
| |
| .card:hover { |
| box-shadow: var(--shadow-md); |
| border-color: var(--color-border-strong); |
| transform: translateY(-2px); |
| } |
| |
| .card-icon { |
| width: 40px; |
| height: 40px; |
| border-radius: var(--radius-md); |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| margin-bottom: 16px; |
| font-size: 1.125rem; |
| } |
| |
| .card-icon.orange { background: var(--color-accent-soft); color: var(--color-accent); } |
| .card-icon.green { background: var(--color-green-soft); color: var(--color-green); } |
| .card-icon.blue { background: var(--color-blue-soft); color: var(--color-blue); } |
| .card-icon.yellow { background: var(--color-yellow-soft); color: #B45309; } |
| .card-icon.purple { background: var(--color-purple-soft); color: var(--color-purple); } |
| |
| .card h3 { |
| font-family: var(--font-display); |
| font-size: 1.125rem; |
| font-weight: 600; |
| margin-bottom: 10px; |
| letter-spacing: -0.01em; |
| } |
| |
| .card p { |
| color: var(--color-ink-secondary); |
| line-height: 1.7; |
| font-size: 0.95rem; |
| } |
| |
| .card ul { |
| margin-top: 16px; |
| padding-left: 0; |
| list-style: none; |
| } |
| |
| .card ul li { |
| position: relative; |
| padding-left: 24px; |
| color: var(--color-ink-secondary); |
| font-size: 0.95rem; |
| line-height: 1.7; |
| margin-bottom: 8px; |
| } |
| |
| .card ul li::before { |
| content: ''; |
| position: absolute; |
| left: 0; |
| top: 10px; |
| width: 6px; |
| height: 6px; |
| border-radius: 50%; |
| background: linear-gradient(135deg, var(--color-accent), var(--color-yellow)); |
| } |
| |
| |
| .guidance-grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); |
| gap: 24px; |
| } |
| |
| .guidance-grid .card.full-width { |
| grid-column: 1 / -1; |
| } |
| |
| |
| .steps { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); |
| gap: 16px; |
| margin-top: 20px; |
| } |
| |
| .step { |
| text-align: center; |
| padding: 20px 16px; |
| border-radius: var(--radius-md); |
| background: var(--color-bg); |
| border: 1px solid var(--color-border); |
| } |
| |
| .step-number { |
| font-family: var(--font-display); |
| font-size: 1.5rem; |
| font-weight: 700; |
| background: linear-gradient(135deg, var(--color-accent), var(--color-yellow)); |
| -webkit-background-clip: text; |
| -webkit-text-fill-color: transparent; |
| background-clip: text; |
| margin-bottom: 8px; |
| } |
| |
| .step-label { |
| font-size: 0.875rem; |
| font-weight: 600; |
| color: var(--color-ink); |
| margin-bottom: 4px; |
| } |
| |
| .step-desc { |
| font-size: 0.8125rem; |
| color: var(--color-ink-muted); |
| line-height: 1.5; |
| } |
| |
| |
| .ideas-header { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| margin-bottom: 24px; |
| flex-wrap: wrap; |
| gap: 16px; |
| } |
| |
| .ideas-header h2 { |
| font-family: var(--font-display); |
| font-size: 1.25rem; |
| font-weight: 600; |
| } |
| |
| .filter-bar { |
| display: flex; |
| gap: 8px; |
| flex-wrap: wrap; |
| } |
| |
| .filter-btn { |
| background: var(--color-surface); |
| border: 1px solid var(--color-border); |
| font-family: var(--font-body); |
| font-size: 0.8125rem; |
| font-weight: 600; |
| padding: 6px 16px; |
| border-radius: 100px; |
| cursor: pointer; |
| color: var(--color-ink-secondary); |
| transition: all 0.2s; |
| } |
| |
| .filter-btn:hover { |
| border-color: var(--color-border-strong); |
| color: var(--color-ink); |
| } |
| |
| .filter-btn.active { |
| background: linear-gradient(135deg, var(--color-accent), var(--color-yellow)); |
| color: #fff; |
| border-color: transparent; |
| } |
| |
| .idea-card { |
| background: var(--color-surface); |
| border: 1px solid var(--color-border); |
| border-radius: var(--radius-lg); |
| padding: 24px; |
| margin-bottom: 16px; |
| transition: box-shadow 0.2s, border-color 0.2s, transform 0.2s; |
| } |
| |
| .idea-card:hover { |
| box-shadow: var(--shadow-md); |
| border-color: var(--color-border-strong); |
| transform: translateY(-2px); |
| } |
| |
| .idea-card-header { |
| display: flex; |
| align-items: flex-start; |
| justify-content: space-between; |
| gap: 16px; |
| margin-bottom: 12px; |
| } |
| |
| .idea-card h3 { |
| font-family: var(--font-display); |
| font-size: 1.0625rem; |
| font-weight: 600; |
| letter-spacing: -0.01em; |
| } |
| |
| .idea-badges { |
| display: flex; |
| gap: 6px; |
| flex-shrink: 0; |
| flex-wrap: wrap; |
| } |
| |
| .badge { |
| display: inline-block; |
| font-size: 0.6875rem; |
| font-weight: 500; |
| letter-spacing: 0.02em; |
| text-transform: uppercase; |
| padding: 4px 10px; |
| border-radius: 6px; |
| } |
| |
| .badge-sm { background: var(--color-green-soft); color: var(--color-green); } |
| .badge-md { background: var(--color-blue-soft); color: var(--color-blue); } |
| .badge-lg { background: var(--color-accent-soft); color: var(--color-accent); } |
| .badge-ai { background: var(--color-purple-soft); color: var(--color-purple); } |
| |
| .idea-card p { |
| color: var(--color-ink-secondary); |
| font-size: 0.95rem; |
| line-height: 1.7; |
| margin-bottom: 16px; |
| } |
| |
| .idea-meta { |
| display: flex; |
| gap: 20px; |
| flex-wrap: wrap; |
| font-size: 0.8125rem; |
| color: var(--color-ink-muted); |
| } |
| |
| .idea-meta-item { |
| display: flex; |
| align-items: center; |
| gap: 6px; |
| } |
| |
| .idea-meta-item strong { |
| color: var(--color-ink-secondary); |
| font-weight: 600; |
| } |
| |
| .idea-skills { |
| display: flex; |
| gap: 6px; |
| flex-wrap: wrap; |
| margin-top: 4px; |
| } |
| |
| .skill-tag { |
| font-family: var(--font-mono); |
| font-size: 0.6875rem; |
| padding: 3px 8px; |
| background: var(--color-bg); |
| border: 1px solid var(--color-border); |
| border-radius: 6px; |
| color: var(--color-ink-secondary); |
| } |
| |
| |
| .site-footer { |
| border-top: 1px solid var(--color-border); |
| padding: 32px; |
| text-align: center; |
| font-size: 0.8125rem; |
| color: var(--color-ink-muted); |
| margin-top: 40px; |
| } |
| |
| .site-footer a { |
| color: var(--color-accent); |
| text-decoration: none; |
| } |
| |
| .site-footer a:hover { text-decoration: underline; } |
| |
| |
| @media (max-width: 640px) { |
| .hero { padding: 48px 16px 32px; } |
| .tabs-container { padding: 0 16px; } |
| .tab-btn { padding: 12px 16px; font-size: 0.9rem; } |
| .card { padding: 24px; } |
| .idea-card { padding: 20px; } |
| .idea-card-header { flex-direction: column; } |
| .guidance-grid { grid-template-columns: 1fr; } |
| .steps { grid-template-columns: 1fr 1fr; } |
| } |
| </style> |
| </head> |
| <body> |
|
|
| |
| <section class="hero"> |
| <div class="hero-badge"> |
| <img src="assets/HuggyLab.png" alt="Huggy Lab" width="24" height="24" style="border-radius: 4px;" /> |
| Hugging Science |
| </div> |
| <h1>Google Summer of Code 2026</h1> |
| <p class="hero-subtitle"> |
| Welcome to Hugging Science β part of the Hugging Face ecosystem dedicated to ML for science. |
| Join our community building tools that enable more people to work on interesting scientific problems. |
| </p> |
| <div class="hero-meta"> |
| <div class="hero-meta-item"> |
| <svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="10" height="9" rx="1"/><path d="M3 7h10M6 2v3M10 2v3"/></svg> |
| Applications open March 2026 |
| </div> |
| <div class="hero-meta-item"> |
| <svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="8" cy="8" r="6"/><path d="M8 5v3l2 2"/></svg> |
| 12+ week coding period |
| </div> |
| <div class="hero-meta-item"> |
| <svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8 2L10 6H14L11 9L12 13L8 10.5L4 13L5 9L2 6H6Z"/></svg> |
| Stipend provided |
| </div> |
| </div> |
| </section> |
|
|
| |
| <div class="tabs-container"> |
| <div class="tab-bar" role="tablist"> |
| <button class="tab-btn active" role="tab" aria-selected="true" data-tab="guidance"> |
| π Contributor Guidance |
| </button> |
| <button class="tab-btn" role="tab" aria-selected="false" data-tab="ideas"> |
| π‘ Ideas List |
| </button> |
| </div> |
|
|
| |
| |
| |
| <div id="panel-guidance" class="tab-panel active" role="tabpanel"> |
| <div class="content-grid"> |
|
|
| |
| <div class="card full-width" style="grid-column: 1 / -1;"> |
| <div class="card-icon orange"> |
| <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12l4 4L19 4"/></svg> |
| </div> |
| <h3>How to Apply</h3> |
| <p>Follow these steps to submit a strong application. Start early β the more you engage with our community before applying, the better your chances.</p> |
| <div class="steps"> |
| <div class="step"> |
| <div class="step-number">01</div> |
| <div class="step-label">Explore</div> |
| <div class="step-desc">Read through our Ideas List and find a project that excites you.</div> |
| </div> |
| <div class="step"> |
| <div class="step-number">02</div> |
| <div class="step-label">Engage</div> |
| <div class="step-desc">Join our community channels, introduce yourself, and start a conversation with mentors.</div> |
| </div> |
| <div class="step"> |
| <div class="step-number">03</div> |
| <div class="step-label">Contribute</div> |
| <div class="step-desc">Make a small contribution β fix a bug, improve docs, or submit a small feature.</div> |
| </div> |
| <div class="step"> |
| <div class="step-number">04</div> |
| <div class="step-label">Propose</div> |
| <div class="step-desc">Write and submit your proposal on the GSoC website before the deadline.</div> |
| </div> |
| </div> |
| </div> |
|
|
| <div class="guidance-grid"> |
| |
| <div class="card"> |
| <div class="card-icon green"> |
| <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h14v14H4z"/><path d="M8 8h6M8 11h4"/></svg> |
| </div> |
| <h3>Application Requirements</h3> |
| <p>Please include the following in your application:</p> |
| <ul> |
| <li>A brief CV</li> |
| <li>What interests you most about this project?</li> |
| <li>What do you think will be challenging about this project?</li> |
| <li>What experience can you rely on to address these challenges?</li> |
| <li>As mentors, how can we get the best out of you?</li> |
| <li>Are you studying or working on anything else during the program?</li> |
| <li>What techniques and tools do you use to stay organized?</li> |
| </ul> |
| </div> |
|
|
| |
| <div class="card"> |
| <div class="card-icon orange"> |
| <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="M11 7v4l3 3"/></svg> |
| </div> |
| <h3>Project Plan & Timeline</h3> |
| <p>Your proposal must include a well-defined schedule:</p> |
| <ul> |
| <li>Select a project from the ideas page, or propose your own (discuss with mentors first)</li> |
| <li>Include a detailed weekly schedule with clear milestones and deliverables</li> |
| <li>For your own ideas: include outline, goals, and weekly schedule</li> |
| <li>List any other commitments during the GSoC period (exams, classes, holidays, jobs, weddings, etc.)</li> |
| <li>We can work around a lot of things β it helps to know in advance!</li> |
| </ul> |
| </div> |
|
|
| |
| <div class="card"> |
| <div class="card-icon blue"> |
| <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="8" r="4"/><path d="M3 20c0-4 4-7 8-7s8 3 8 7"/></svg> |
| </div> |
| <h3>Join Our Community</h3> |
| <p>Become a member of an awesome community working on ML for science!</p> |
| <ul> |
| <li>Join the <strong><a href="https://huggingface.co/hugging-science" target="_blank" rel="noopener">Hugging Science organization</a></strong> on Hugging Face</li> |
| <li>Connect with us on <strong><a href="https://discord.com/invite/VYkdEVjJ5J" target="_blank" rel="noopener">Discord</a></strong></li> |
| <li>Read the contributor docs and developer guides</li> |
| <li>Ask thoughtful questions β show that you've done your homework first</li> |
| <li>Be respectful of mentors' time β they're volunteers</li> |
| <li>Participate in discussions, code reviews, and community calls</li> |
| </ul> |
| </div> |
|
|
| |
| <div class="card"> |
| <div class="card-icon green"> |
| <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12l4 4L19 4"/></svg> |
| </div> |
| <h3>Eligibility & Expectations</h3> |
| <p>Make sure you meet the requirements and understand what's expected.</p> |
| <ul> |
| <li>You must be 18 years or older at time of registration</li> |
| <li>Open to students and beginners to open source</li> |
| <li>Commit to 12+ weeks of active development (175 or 350 hours)</li> |
| <li>Regular check-ins with your mentor (at least weekly)</li> |
| <li>Participate in midterm and final evaluations</li> |
| <li>All code must be open source under the project's license</li> |
| </ul> |
| </div> |
|
|
| |
| <div class="card"> |
| <div class="card-icon green"> |
| <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 2l3 6h6l-5 4 2 6-6-4-6 4 2-6-5-4h6z"/></svg> |
| </div> |
| <h3>DOs and DON'Ts</h3> |
| <p>Keep these in mind throughout the application process.</p> |
| <ul> |
| <li><strong>Do</strong> start engaging with the community early</li> |
| <li><strong>Do</strong> make small contributions before applying</li> |
| <li><strong>Do</strong> ask mentors for feedback on your draft proposal</li> |
| <li><strong>Don't</strong> submit a proposal without talking to us first</li> |
| <li><strong>Don't</strong> use AI to write your proposal β we can tell</li> |
| <li><strong>Don't</strong> apply to more than 2β3 orgs without genuine interest</li> |
| </ul> |
| </div> |
| </div> |
|
|
| </div> |
| </div> |
|
|
| |
| |
| |
| <div id="panel-ideas" class="tab-panel" role="tabpanel"> |
| <div class="content-grid"> |
|
|
| <div class="ideas-header"> |
| <h2>Project Ideas for GSoC 2026</h2> |
| <div class="filter-bar"> |
| <button class="filter-btn active" data-filter="all">All</button> |
| <button class="filter-btn" data-filter="md">Medium</button> |
| <button class="filter-btn" data-filter="lg">Large</button> |
| </div> |
| </div> |
|
|
| <p style="color: var(--color-ink-secondary); margin-bottom: 16px; font-size: 0.95rem;"> |
| These are suggested project ideas. You're welcome to propose your own idea β just discuss it with a mentor first! |
| </p> |
|
|
| |
| <div class="idea-card" data-size="lg"> |
| <div class="idea-card-header"> |
| <h3>Unified MLIP Library</h3> |
| <div class="idea-badges"> |
| <span class="badge badge-lg">Large β 350 hrs</span> |
| <span class="badge badge-ai">AI/ML</span> |
| </div> |
| </div> |
| <p> |
| It would be great to access MLIPs (Machine Learning Interatomic Potentials) directly from Hugging Face. |
| This project involves creating a common Python object to describe Systems, with two main possibilities being |
| <code>torchsim.SimState</code> or <code>ase.Atoms</code>. |
| </p> |
| <div class="idea-meta"> |
| <div class="idea-meta-item"><strong>Mentors:</strong> Thomas Loux (Altrove), Georgia Channing (Hugging Face)</div> |
| <div class="idea-meta-item"><strong>Difficulty:</strong> Intermediate</div> |
| <div class="idea-meta-item"> |
| <strong>Skills:</strong> |
| <div class="idea-skills"> |
| <span class="skill-tag">Python</span> |
| <span class="skill-tag">PyTorch</span> |
| <span class="skill-tag">ASE</span> |
| <span class="skill-tag">molecular simulation</span> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div class="idea-card" data-size="lg"> |
| <div class="idea-card-header"> |
| <h3>Building Protein Generation Pipelines</h3> |
| <div class="idea-badges"> |
| <span class="badge badge-lg">Large β 350 hrs</span> |
| <span class="badge badge-ai">AI/ML</span> |
| </div> |
| </div> |
| <p> |
| Most protein generation pipelines are built with a sequence of diffuser, folder, and then scorer. |
| We want those to be plug and play β making it easy to swap components and build custom pipelines |
| for protein design workflows. |
| </p> |
| <div class="idea-meta"> |
| <div class="idea-meta-item"><strong>Mentor:</strong> Georgia Channing (Hugging Face)</div> |
| <div class="idea-meta-item"><strong>Difficulty:</strong> Advanced</div> |
| <div class="idea-meta-item"> |
| <strong>Skills:</strong> |
| <div class="idea-skills"> |
| <span class="skill-tag">Python</span> |
| <span class="skill-tag">diffusion models</span> |
| <span class="skill-tag">protein folding</span> |
| <span class="skill-tag">pipelines</span> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div class="idea-card" data-size="md"> |
| <div class="idea-card-header"> |
| <h3>Supporting Scientific Data Types</h3> |
| <div class="idea-badges"> |
| <span class="badge badge-md">Medium β 175 hrs</span> |
| </div> |
| </div> |
| <p> |
| We want to be able to load FASTA, FASTQ, mmCIF, and HDF5 files quickly for machine learning. |
| We've recently added some of this functionality, but there is so much more to be done and |
| documentation is needed for all of it. |
| </p> |
| <div class="idea-meta"> |
| <div class="idea-meta-item"><strong>Mentor:</strong> Georgia Channing (Hugging Face)</div> |
| <div class="idea-meta-item"><strong>Difficulty:</strong> Beginner-friendly</div> |
| <div class="idea-meta-item"> |
| <strong>Skills:</strong> |
| <div class="idea-skills"> |
| <span class="skill-tag">Python</span> |
| <span class="skill-tag">data formats</span> |
| <span class="skill-tag">documentation</span> |
| <span class="skill-tag">bioinformatics</span> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| </div> |
| </div> |
| </div> |
|
|
| |
| <footer class="site-footer"> |
| <p> |
| Built with βοΈ for <a href="https://summerofcode.withgoogle.com/" target="_blank" rel="noopener">Google Summer of Code 2026</a> by <a href="https://huggingface.co/hugging-science" target="_blank" rel="noopener">Hugging Science</a>. |
| Questions? Reach out on <a href="https://discord.com/invite/VYkdEVjJ5J" target="_blank" rel="noopener">Discord</a>. |
| </p> |
| </footer> |
|
|
| <script> |
| |
| const tabBtns = document.querySelectorAll('.tab-btn'); |
| const panels = document.querySelectorAll('.tab-panel'); |
| |
| tabBtns.forEach(btn => { |
| btn.addEventListener('click', () => { |
| tabBtns.forEach(b => { b.classList.remove('active'); b.setAttribute('aria-selected', 'false'); }); |
| panels.forEach(p => p.classList.remove('active')); |
| btn.classList.add('active'); |
| btn.setAttribute('aria-selected', 'true'); |
| document.getElementById('panel-' + btn.dataset.tab).classList.add('active'); |
| }); |
| }); |
| |
| |
| const filterBtns = document.querySelectorAll('.filter-btn'); |
| const ideaCards = document.querySelectorAll('.idea-card'); |
| |
| filterBtns.forEach(btn => { |
| btn.addEventListener('click', () => { |
| filterBtns.forEach(b => b.classList.remove('active')); |
| btn.classList.add('active'); |
| const filter = btn.dataset.filter; |
| ideaCards.forEach(card => { |
| if (filter === 'all' || card.dataset.size === filter) { |
| card.style.display = ''; |
| } else { |
| card.style.display = 'none'; |
| } |
| }); |
| }); |
| }); |
| |
| |
| const observer = new IntersectionObserver((entries) => { |
| entries.forEach((entry, i) => { |
| if (entry.isIntersecting) { |
| entry.target.style.animationDelay = `${i * 0.06}s`; |
| entry.target.classList.add('animate-in'); |
| observer.unobserve(entry.target); |
| } |
| }); |
| }, { threshold: 0.1 }); |
| |
| document.querySelectorAll('.card, .idea-card').forEach(el => { |
| el.style.opacity = '0'; |
| el.style.transform = 'translateY(12px)'; |
| el.style.transition = 'opacity 0.5s ease, transform 0.5s ease'; |
| observer.observe(el); |
| }); |
| |
| document.querySelectorAll('.card, .idea-card').forEach(el => { |
| el.classList.add('animate-in'); |
| el.style.opacity = ''; |
| el.style.transform = ''; |
| }); |
| </script> |
| </body> |
| </html> |
|
|