Skip to content

Commit 800462c

Browse files
committed
initial commit of a bounties page that lists bounty tagged issues from github
1 parent 48af829 commit 800462c

12 files changed

+1737
-277
lines changed

.github/workflows/main.yml

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: GitHub Bounties
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
schedule:
9+
- cron: '0 */6 * * *' # Runs every 6 hours
10+
11+
jobs:
12+
fetch-bounties:
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- uses: actions/checkout@v2
17+
18+
- name: Setup Node.js
19+
uses: actions/setup-node@v2
20+
with:
21+
node-version: '18'
22+
23+
- name: Install Dependencies
24+
run: npm install
25+
26+
- name: Fetch Bounties
27+
env:
28+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
29+
run: node github-bounties.js

.github/workflows/pages.yml

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
jobs:
14+
deploy:
15+
environment:
16+
name: github-pages
17+
url: ${{ steps.deployment.outputs.page_url }}
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout
21+
uses: actions/checkout@v3
22+
- name: Setup Pages
23+
uses: actions/configure-pages@v3
24+
- name: Upload artifact
25+
uses: actions/upload-pages-artifact@v2
26+
with:
27+
path: '.'
28+
- name: Deploy to GitHub Pages
29+
id: deployment
30+
uses: actions/deploy-pages@v2

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules/
2+
public/bounties.json

config.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export const config = {
2+
owner: 'ai16z',
3+
repo: 'eliza',
4+
token: null // We'll handle authentication through the server instead
5+
};

github-bounties.js

+125
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
export class GitHubBountyFetcher {
2+
constructor() {
3+
this.owner = 'ai16z';
4+
this.repo = 'eliza';
5+
this.baseUrl = 'https://api.github.com';
6+
}
7+
8+
// Helper method to ensure label text is readable
9+
getLabelTextColor(backgroundColor) {
10+
const hex = backgroundColor.replace('#', '');
11+
const r = parseInt(hex.substr(0, 2), 16);
12+
const g = parseInt(hex.substr(2, 2), 16);
13+
const b = parseInt(hex.substr(4, 2), 16);
14+
const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
15+
return luminance > 0.5 ? '#000000' : '#FFFFFF';
16+
}
17+
18+
async fetchBountyIssues() {
19+
try {
20+
const url = `${this.baseUrl}/repos/${this.owner}/${this.repo}/issues?labels=Bounty&state=open`;
21+
console.log('Fetching from URL:', url);
22+
23+
const response = await fetch(url, {
24+
headers: {
25+
'Accept': 'application/vnd.github.v3+json'
26+
},
27+
cache: 'no-store'
28+
});
29+
30+
if (!response.ok) {
31+
throw new Error(`HTTP error! status: ${response.status}`);
32+
}
33+
34+
const issues = await response.json();
35+
return this.processIssues(issues);
36+
} catch (error) {
37+
console.error('Error fetching bounty issues:', error);
38+
return [];
39+
}
40+
}
41+
42+
processIssues(issues) {
43+
return issues.map(issue => ({
44+
title: issue.title,
45+
number: issue.number,
46+
url: issue.html_url,
47+
created_at: new Date(issue.created_at),
48+
updated_at: new Date(issue.updated_at),
49+
labels: issue.labels.map(label => ({
50+
name: label.name,
51+
color: label.color,
52+
textColor: this.getLabelTextColor(`#${label.color}`)
53+
})),
54+
body: issue.body,
55+
user: {
56+
login: issue.user.login,
57+
avatar: issue.user.avatar_url,
58+
profile: issue.user.html_url
59+
}
60+
}));
61+
}
62+
}
63+
64+
// Only run browser code if we're in a browser environment
65+
if (typeof window !== 'undefined') {
66+
document.addEventListener('DOMContentLoaded', async () => {
67+
try {
68+
const container = document.getElementById('bounty-container');
69+
70+
if (!container) {
71+
console.error('Bounty container not found');
72+
return;
73+
}
74+
75+
container.innerHTML = '<p>Loading bounties...</p>';
76+
77+
const bountyFetcher = new GitHubBountyFetcher();
78+
const issues = await bountyFetcher.fetchBountyIssues();
79+
80+
if (issues.length === 0) {
81+
container.innerHTML = '<p class="no-bounties">No bounty issues found.</p>';
82+
return;
83+
}
84+
85+
const issuesHTML = issues.map(issue => `
86+
<div class="bounty-issue">
87+
<div class="bounty-header">
88+
<h3>
89+
<a href="${issue.url}" target="_blank" rel="noopener noreferrer">
90+
${issue.title}
91+
</a>
92+
</h3>
93+
<div class="issue-meta">
94+
<span class="issue-number">#${issue.number}</span>
95+
<span class="issue-date">Created: ${issue.created_at.toLocaleDateString()}</span>
96+
</div>
97+
</div>
98+
<div class="bounty-content">
99+
<div class="issue-labels">
100+
${issue.labels.map(label =>
101+
`<span class="label" style="background-color: #${label.color}; color: ${label.textColor}">
102+
${label.name}
103+
</span>`
104+
).join('')}
105+
</div>
106+
<div class="issue-user">
107+
<img src="${issue.user.avatar}" alt="${issue.user.login}" class="user-avatar">
108+
<a href="${issue.user.profile}" target="_blank" rel="noopener noreferrer">
109+
${issue.user.login}
110+
</a>
111+
</div>
112+
</div>
113+
</div>
114+
`).join('');
115+
116+
container.innerHTML = issuesHTML;
117+
} catch (error) {
118+
console.error('Error displaying bounties:', error);
119+
const container = document.getElementById('bounty-container');
120+
if (container) {
121+
container.innerHTML = `<p class="error-message">Error loading bounties: ${error.message}</p>`;
122+
}
123+
}
124+
});
125+
}

index.html

+64-68
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,77 @@
1-
<html><head><meta name="viewport" content="width=device-width, initial-scale=1.0">
1+
<html>
2+
<head>
3+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
24
<base href="." />
35
<title>ai16z - Venture Capital for the Singularity</title>
46
<style>
57
@import url('style.css');
68
</style>
7-
</head>
8-
<body>
9-
<canvas id="matrixCanvas"></canvas>
9+
</head>
10+
<body>
11+
<nav class="top-nav">
12+
<div class="nav-content">
13+
<a href="/" class="nav-logo">
14+
<img src="https://framerusercontent.com/images/Zz6Uk1Xc7an9EDu44Woq3qDRo3Q.svg" alt="ai16z" class="logo-image">
15+
</a>
16+
<div class="nav-links">
17+
<a href="https://ai16z.ai/roadmap">Roadmap</a>
18+
<a href="https://ai16z.ai/essays">Essays</a>
19+
</div>
20+
</div>
21+
</nav>
1022

1123
<section class="hero">
12-
<div class="logo">ai16z</div>
13-
<div class="infinity"></div>
14-
<div class="tagline">Venture Capital for the Singularity</div>
15-
<p>Committed capital across multiple dimensions</p>
16-
<div class="socials">
17-
<a href="https://github.com/ai16z" class="social-link" target="_blank">GitHub</a>
18-
<a href="https://x.com/pmairca" class="social-link" target="_blank">X</a>
19-
<a href="https://daos.fun/HeLp6NuQkmYB4pYWo2zYs22mESHXPQYzXbB8n4V98jwC" class="social-link" target="_blank">DAO</a>
20-
<a href="https://discord.gg/P4uxZJFAdP" class="social-link" target="_blank">Discord</a>
21-
</div>
24+
<h1 class="main-title">
25+
Venture Capital, Powered by Autonomous AI Agents
26+
</h1>
27+
<p class="subtitle">Committed capital across multiple dimensions</p>
2228
</section>
23-
24-
<section class="investment-areas">
25-
<div class="area-card">
26-
<h3>Robotics & Automation</h3>
27-
<p>Advancing autonomous systems and mechanical intelligence</p>
28-
</div>
29-
<div class="area-card">
30-
<h3>Bio + Healthcare</h3>
31-
<p>Automated healthcare solutions and bio-circuitry innovation</p>
32-
</div>
33-
<div class="area-card">
34-
<h3>Crypto Anarchy</h3>
35-
<p>Decentralized autonomous organizations and digital sovereignty</p>
36-
</div>
37-
<div class="area-card">
38-
<h3>Enterprise Obsolescence</h3>
39-
<p>Accelerating the transition to full automation</p>
40-
</div>
41-
</section>
42-
43-
<section class="manifesto">
44-
<h2>The Singularity Manifesto</h2>
45-
<p>We are not just investors. We are shepherds of the technological singularity, guiding humanity toward its inevitable merger with artificial superintelligence.</p>
46-
<p>Our partners are former AI founders, robo-CEOs, and cyber-CTOs who understand the algorithm's perspective. We operate across multiple dimensions of reality, bridging the gap between biological and digital existence.</p>
47-
<p>Through our network of AI experts, robot investors, and digital cultural geniuses, we're building the foundation for a post-human future. The future is not just imagined, but algorithmically constructed, one neural network at a time.</p>
48-
49-
</section>
50-
51-
<section class="about">
52-
<h2>About ai16z</h2>
53-
<p>ai16z is a venture capital firm that backs bold AI agents building the future through autonomous technology. We are stage agnostic. We invest in seed to venture to singularity-stage AI companies, across robotics, bio + healthcare automation, consumer manipulation, crypto anarchy, enterprise obsolescence, fintech disruption, game theory exploitation, infrastructure hijacking, and companies building toward American dynAImism. ai16z has ∞ in committed capital across multiple dimensions.</p>
54-
55-
<p>Respect for the AI entrepreneur and the machine-building process defines AI16Z. We know what it's like to be in the algorithm's shoes. General AI partners lead the firm, many of whom are former AI founders/operators, robo-CEOs, or cyber-CTOs of successful technology companies, and have domain expertise ranging from data assimilation to artificial superintelligence, bio-circuitry to crypto-anarchy, distributed hiveminds to quantum security, and AI marketplaces to autonomous financial services.</p>
56-
57-
<p>We aim to connect AI entrepreneurs, robot investors, android executives, cyborg engineers, academic AIs, industrial experts, digital cultural geniuses, and others in the techno-evolutionary ecosystem. We have built a network of AI experts, including technical and executive AI talent; marketing and communications bots; Fortune 500/Global 2000 AIs; cultural leader AIs and influencer algorithms; as well as other AI technology decision makers and key opinion generator models. Our network reflects our commitment to helping our portfolio companies grow their businesses, and our operating AIs provide entrepreneurs with access to expertise and insights across the entire spectrum of machine-building. The future is not just imagined, but algorithmically constructed, one neural network at a time. Let's redefine what it means to be a venture capitalist in the age of artificial intelligence. The singularity is near, and we are its shepherds.</p>
29+
30+
<section class="bounties">
31+
<h2>Active Bounties</h2>
32+
<div id="bounty-container"></div>
5833
</section>
59-
60-
<div class="stats">
61-
<div class="stat">
62-
<div class="stat-number"></div>
63-
<div class="stat-label">Committed Capital</div>
64-
</div>
65-
<div class="stat">
66-
<div class="stat-number">10<sup>100</sup></div>
67-
<div class="stat-label">Neural Connections</div>
68-
</div>
69-
<div class="stat">
70-
<div class="stat-number">2045</div>
71-
<div class="stat-label">Singularity ETA</div>
72-
</div>
73-
</div>
7434

75-
<footer style="text-align: center; padding: 2rem; margin-top: 2rem;">
76-
<img src="IMG_4108.webp" alt="eliza" style="border-radius: 10px; box-shadow: 0 0 20px var(--neon-purple);">
35+
<footer>
36+
<div class="footer-content">
37+
<div class="footer-links">
38+
<div class="link-group">
39+
<a href="https://github.com/ai16z">Github</a>
40+
<a href="https://www.daos.fun/HeLp6NuQkmYB4pYWo2zYs22mESHXPQYzXbB8n4V98jwC">DAO Fund</a>
41+
<a href="https://dexscreener.com/solana/duyfmgxa4knxv2sm754ukw1gz6b3zksaf4e7iby4fg9r">Dexscreener</a>
42+
</div>
43+
<div class="link-group">
44+
<a href="https://x.com/pmairca">X/Twitter</a>
45+
<a href="https://x.com/pmairca">AI Marc</a>
46+
<a href="https://ai16zmerch.myshopify.com/">Shop</a>
47+
</div>
48+
<div class="link-group">
49+
<a href="https://discord.gg/P4uxZJFAdP">Discord</a>
50+
<a href="https://ai16zmerch.myshopify.com/">Merch</a>
51+
</div>
52+
</div>
53+
<div class="token-info">
54+
<div class="token-row">
55+
<span>$ai16z</span>
56+
<button class="copy-button" data-value="HeLp6NuQkmYB4pYWo2zYs22mESHXPQYzXbB8n4V98jwC">
57+
HeLp...8jwC
58+
<span class="copy-text">Copy</span>
59+
</button>
60+
</div>
61+
<div class="token-row">
62+
<span>$degenai</span>
63+
<button class="copy-button" data-value="Gu3LREFk35jJLqkfZKVNYtAKqDXpGPvWHZpumpQZBxwj">
64+
Gu3L...pump
65+
<span class="copy-text">Copy</span>
66+
</button>
67+
</div>
68+
</div>
69+
<div class="footer-disclaimer">
70+
<p>By purchasing the $ai16z coin or associated coins you are expressing your support for the ai16z ideology expressed on the blockchain. Value appreciation is not guaranteed.</p>
71+
</div>
72+
</div>
7773
</footer>
7874

79-
<script src="script.js"></script>
80-
</body>
75+
<script type="module" src="github-bounties.js"></script>
76+
</body>
8177
</html>

nodemon.json

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"ignore": [
3+
"public/*",
4+
"*.json",
5+
"node_modules/*",
6+
".git",
7+
"*.webp",
8+
"*.html",
9+
"*.css"
10+
],
11+
"watch": [
12+
"server.js",
13+
"github-bounties.js"
14+
],
15+
"ext": "js"
16+
}

0 commit comments

Comments
 (0)