ai-startup-skills
AI 제품을 만드는 스타트업을 위한 7단계 에이전트 스킬: 검증 → 비즈플랜 → 정책 → 로드쇼 → 고객 확보 → 가격 책정 → 등록
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A live radar of online, globally-open AI competitions, agent challenges and hackathons — upcoming, in progress, or ended within the last 7 days.
🔗 Live site: https://nobodyme.github.io/hackathons-online/
Layout and data are deliberately separated:
| File | Role |
|---|---|
index.html | Page shell / structure |
styles.css | Design, responsive layout, light + dark themes |
app.js | Fetches competitions.json and renders cards, filters and sort live in the browser — it recomputes status and countdowns from the current date, so the page stays accurate between refreshes |
competitions.json | The only file that changes on a refresh — the competition list |
assets/fonts/ | Self-hosted Archivo (variable woff2) — no external font dependency |
.github/workflows/deploy.yml | Publishes the site to GitHub Pages on every push to main |
The visual style is Neo-brutalist: a butter-cream ground (#fff5db), chunky Archivo set
heavy, 3px black outlines with hard offset shadows, zero corner radius, and bright color-coded
status badges (orange accent, yellow = in progress, mint = upcoming). Design tokens live at the
top of styles.css — restyling is a matter of editing those variables.
Because the page renders competitions.json client-side, refreshing the data is just a matter of
overwriting that one file — the layout never has to be regenerated.
competitions.json shape{
"generated": "YYYY-MM-DD",
"items": [
{
"id": "stable-kebab-slug",
"name": "…",
"platform": "Devpost",
"url": "https://…",
"type": "agent-challenge | coding-challenge | hackathon | benchmark",
"format": "online | hybrid",
"location": "Online",
"start": "YYYY-MM-DD",
"end": "YYYY-MM-DD",
"reg": "YYYY-MM-DD",
"prize": 10000,
"prize_kind": "cash | mixed | non-cash | unknown",
"prize_note": "e.g. split across tracks",
"summary": "One sentence, ≤160 chars.",
"conf": "confirmed | approximate | unknown",
"eligibility": "Open globally, 18+",
"audience": "all | students",
"tags": ["agents", "llm"]
}
]
}
start, end and reg are all required — no date field is ever null. A competition whose
start or end date cannot be established is left out of the file entirely rather than published
with a null: an entry you cannot plan around is not worth a row.
Many competitions have no registration step separate from submission (ARC Prize, MLH Global Hack
Week, most Devpost hackathons). For those, reg carries the submission deadline, which is the
same as end. So reg == end means "no separate registration cutoff — you have until the
deadline"; reg < end means there is a real earlier cutoff to watch.
Rules the page enforces automatically:
end is more than 7 days in the past are hidden.upcoming / in-progress / completed)."students" marks competitions restricted to students/youth. These are hidden by
default (with an "N student-only hidden" note); ticking the "I'm a student" checkbox includes
them. Detection uses the explicit audience field when present, otherwise a scan of the
eligibility text — so it works whether or not the data is tagged.The content is curated by Claude on 3 day schedule, fully AI curated and pushes to this branch which then publishes the github page. Let's see how useful this experiment turns out to be.