-
Notifications
You must be signed in to change notification settings - Fork 87
Base MiniKit Docs Revamp #200
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
--- | ||
name: MiniApp Featuring Request | ||
about: Request review and featuring for your MiniApp | ||
title: "[Featuring] <App Name>" | ||
labels: ["featuring"] | ||
assignees: [] | ||
--- | ||
|
||
## App Information | ||
|
||
- Name: | ||
- Category: | ||
- Manifest URL: | ||
- Live URL: | ||
|
||
## Quality Validation | ||
|
||
- [ ] Quality Bar checklist completed | ||
- [ ] Performance budgets met | ||
- [ ] Copy lint (no banned terms in UI) | ||
- [ ] Assets validated against caps | ||
|
||
## Materials | ||
|
||
- Loom walkthrough (≤2 min): | ||
- Lighthouse report (mobile webview): | ||
|
||
## Notes | ||
|
||
Additional context or requests |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,20 @@ | ||||||||||||||||||||
name: MiniKit Doctor | ||||||||||||||||||||
on: | ||||||||||||||||||||
pull_request: | ||||||||||||||||||||
paths: | ||||||||||||||||||||
- "docs/**" | ||||||||||||||||||||
- "tools/minikit-cli/**" | ||||||||||||||||||||
- "minikit.config.json" | ||||||||||||||||||||
|
||||||||||||||||||||
jobs: | ||||||||||||||||||||
doctor: | ||||||||||||||||||||
runs-on: ubuntu-latest | ||||||||||||||||||||
steps: | ||||||||||||||||||||
- uses: actions/checkout@v4 | ||||||||||||||||||||
- uses: actions/setup-node@v4 | ||||||||||||||||||||
with: | ||||||||||||||||||||
node-version: "18" | ||||||||||||||||||||
- name: Install CLI deps | ||||||||||||||||||||
run: npm ci --prefix tools/minikit-cli || npm install --prefix tools/minikit-cli | ||||||||||||||||||||
- name: Run doctor (Base App only) | ||||||||||||||||||||
run: node tools/minikit-cli/bin/mini-kit.mjs doctor docs/base-app | ||||||||||||||||||||
Comment on lines
+11
to
+20
Check warningCode scanning / CodeQL Workflow does not contain permissions Medium
Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
Copilot AutofixAI 12 days ago To fix the problem, add a
Suggested changeset
1
.github/workflows/mini-kit.yml
Copilot is powered by AI and may make mistakes. Always verify output.
Positive FeedbackNegative Feedback
Refresh and try again.
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
# Base MiniKit Docs Revamp — Tasks | ||
|
||
## Phase 1 (Foundations) | ||
|
||
- [x] Restructure IA to 5 pillars in `docs/docs.json` | ||
- [x] Quality Bar checklist (`docs/base-app/quality/checklist.mdx`) | ||
- [x] Design & UX principles (`docs/base-app/design/principles.mdx`) | ||
- [x] Performance budgets (`docs/base-app/performance/budgets.mdx`) | ||
- [x] Asset specifications (`docs/base-app/performance/asset-specifications.mdx`) | ||
- [x] Language & Tone guidelines (`docs/base-app/guides/language-tone.mdx`) | ||
- [x] Authentication (guest-first) (`docs/base-app/guides/authentication.mdx`) | ||
- [x] Manifest documentation update (unified byte caps) (`docs/base-app/miniapps/manifest.mdx`) | ||
|
||
## Phase 2 (Patterns and Tooling) | ||
|
||
- [x] UI Patterns page (`docs/base-app/design/ui-patterns.mdx`) | ||
- [x] Error Handling + Taxonomy (`docs/base-app/guides/error-handling.mdx`) | ||
- [~] Figma UI Kit page stub (`docs/base-app/design/figma-ui-kit.mdx`) — needs link + assets | ||
- [x] CLI: mini-kit (lint-copy, validate-assets, doctor) (`tools/minikit-cli/`) | ||
- [x] Doctor command MVP | ||
- [x] Copy linter MVP (with suggestions, code-fence ignore) | ||
- [x] Enhance lint-copy: path allowlist to reduce false positives | ||
- [x] CI: GitHub Action to run `mini-kit` on PRs (scoped to docs) | ||
- [~] Update `create-base-mini-app` CLI with auth scaffolding and asset optimization — MVP scaffolder to add | ||
|
||
## Phase 3 (Templates and Growth) | ||
|
||
- [x] Growth: Event schema (`docs/base-app/growth/event-schema.mdx`) | ||
- [x] Growth: Analytics integration (`docs/base-app/growth/analytics-integration.mdx`) | ||
- [x] Distribution & categories (`docs/base-app/growth/distribution-categories.mdx`) | ||
- [ ] Templates & starters (code repos) — docs page exists (`docs/base-app/guides/templates-starters.mdx`) | ||
- [x] Scaffolds added under `starters/` (browse-first, action-gated, game-loop) | ||
- [ ] Promote to separate repos and link from docs | ||
- [ ] Example projects (3 polished references) — TODO | ||
|
||
## Phase 4 (Review & Enforcement) | ||
|
||
- [x] Submission workflow (`docs/base-app/quality/submission-workflow.mdx`) | ||
- [x] Validation guide with CI example (`docs/base-app/quality/validation.mdx`) | ||
- [ ] Quality Lead role + office hours — TODO | ||
- [~] Validation pipeline (CI in this repo using `mini-kit`) — doctor in PRs; add Lighthouse mobile harness next | ||
- [ ] Getting Featured metrics monitoring — TODO | ||
|
||
## Next suggested steps | ||
|
||
- [x] Create manifest docs page and add to nav | ||
- [x] Add linter path allowlist to skip guidance/example pages in copy lint | ||
- [x] Add GitHub Action running `mini-kit doctor` (scoped) on PRs | ||
- [x] Add GitHub Issue template: "MiniApp Featuring Request" | ||
- [ ] Link real Figma UI Kit URL and assets | ||
|
||
## Reconciled original items | ||
|
||
- [x] Update manifest docs with unified asset specs and byte caps | ||
- [x] Create UI Patterns page with copy‑paste components and examples | ||
- [x] Write Error Taxonomy & Reliability guide | ||
- [~] Design and publish Figma Base Mini‑kit UI library (docs stub exists) | ||
- [~] Update `create-base-mini-app` CLI with auth scaffolding and asset optimization (add MVP) | ||
- [x] Create `mini-kit doctor` CLI command for validation and quality checks | ||
- [x] Build copy linter tool to scan for banned terms and jargon | ||
- [ ] Create three official starter templates (browse‑first, action‑gated, game‑loop) | ||
- [ ] Build three polished reference apps with end‑to‑end walkthroughs | ||
- [x] Write Growth & Analytics pillar (event schema and integrations) | ||
- [x] Update Distribution & Categories with examples and tag guidance | ||
- [x] Create Getting Featured submission workflow + GitHub issue template | ||
- [ ] Establish Mini‑app Quality Lead role and office hours schedule | ||
- [~] Set up automated validation pipeline for submissions and featuring (PR doctor done; add Lighthouse) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"folders": [ | ||
{ | ||
"path": "." | ||
} | ||
] | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
--- | ||
title: "Accessibility" | ||
description: "Make MiniApps usable by everyone: safe areas, contrast, motion, and semantics" | ||
--- | ||
|
||
# Accessibility | ||
|
||
Design for everyone. Follow these requirements to pass the Quality Bar and deliver inclusive experiences. | ||
|
||
## Safe areas and touch targets | ||
|
||
- Use `env(safe-area-inset-*)` for padding | ||
- Minimum touch target: 44×44 px | ||
- Avoid placing controls near home indicator edges | ||
|
||
```css | ||
.app { | ||
padding: env(safe-area-inset-top) env(safe-area-inset-right) env( | ||
safe-area-inset-bottom | ||
) env(safe-area-inset-left); | ||
} | ||
.button { | ||
min-height: 44px; | ||
min-width: 44px; | ||
} | ||
``` | ||
|
||
## Color and contrast | ||
|
||
- Meet WCAG AA contrast (≥ 4.5:1 for body text) | ||
- Do not convey meaning by color alone; pair with icons/labels | ||
- Provide light/dark themes and preserve contrast in both | ||
|
||
## Typography | ||
|
||
- Base size ≥ 16px; avoid ultra‑light weights | ||
- Maintain readable line length (45–75 characters) | ||
- Respect user font size settings when possible | ||
|
||
## Motion and reduced motion | ||
|
||
- Keep transitions 200–300ms; no gratuitous motion | ||
- Respect `prefers-reduced-motion` | ||
|
||
```css | ||
@media (prefers-reduced-motion: reduce) { | ||
*, | ||
*::before, | ||
*::after { | ||
animation-duration: 0.01ms !important; | ||
transition-duration: 0.01ms !important; | ||
} | ||
} | ||
``` | ||
|
||
## Semantics and roles | ||
|
||
- Use semantic HTML (`button`, `nav`, `main`, `h1`–`h3`) | ||
- Provide `aria-label` for icon‑only buttons | ||
- Ensure focus outlines are visible and not removed | ||
|
||
```tsx | ||
<button aria-label="Close dialog"> | ||
<Icon name="close" /> | ||
</button> | ||
``` | ||
|
||
## Keyboard and focus management | ||
|
||
- Trap focus within modals; return focus to trigger on close | ||
- Visible focus state for all interactive elements | ||
- Order focus logically (DOM order matches visual order) | ||
|
||
## Error messaging | ||
|
||
- Use clear language; describe cause and next step | ||
- Link errors to fields via `aria-describedby` | ||
- Do not rely solely on color to indicate errors | ||
|
||
## Media and images | ||
|
||
- Provide `alt` text for informative images | ||
- Mark decorative images with empty `alt=""` | ||
- Caption essential videos; provide transcripts when applicable | ||
|
||
## Accessibility checklist | ||
|
||
- [ ] Touch targets ≥ 44px; safe areas respected | ||
- [ ] Contrast ≥ 4.5:1; legible in light and dark | ||
- [ ] Reduced motion honored; no blocking animations | ||
- [ ] Semantic elements and ARIA where needed | ||
- [ ] Focus visible and managed in modals | ||
- [ ] Clear, actionable error messages | ||
- [ ] Images have appropriate alt text | ||
|
||
Resources: WCAG 2.2 AA, Apple HIG Accessibility |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
--- | ||
title: "Figma UI Kit" | ||
description: "Official Base MiniApp components and tokens for fast, consistent design" | ||
--- | ||
|
||
# Figma UI Kit | ||
|
||
Design MiniApps faster with the official Base UI Kit for Figma. Components mirror Base App styles and include responsive variants. | ||
|
||
## Contents | ||
|
||
- Core components: buttons, inputs, cards, sheets, modals, toasts | ||
- Layout primitives: grids, safe‑area frames, navigation bars | ||
- Tokens: color, typography, spacing, radius, elevation | ||
- Templates: first‑run, list/detail, empty, error, auth prompt | ||
|
||
## Download | ||
|
||
- Public link: [Figma Base MiniApp UI Kit](https://www.figma.com/file/PLACEHOLDER/Base-MiniApp-UI-Kit?node-id=0%3A1) | ||
- Duplicate to your workspace; keep tokens intact | ||
|
||
## Using tokens | ||
|
||
- Colors and type are provided as styles; do not detach | ||
- Map design tokens to CSS variables shown in Design Principles | ||
- Light and dark modes included via color styles | ||
|
||
## Contribution | ||
|
||
- Suggest improvements via GitHub issues in `docs` repo | ||
- Include screenshots and rationale | ||
|
||
## Versioning | ||
|
||
- Kit versions follow SemVer (e.g., 1.0.0) | ||
- Breaking visual changes increment major version | ||
|
||
## Best practices | ||
|
||
- Start from templates; avoid reinventing common patterns | ||
- Keep touch targets ≥ 44px | ||
- Use safe‑area frames when composing screens |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
suggestion: Could we scale this PR back to just the docs update for now? There's a lot going on in this action and I don't think it's currently running, so it's also hard to verify.
I'd also ask that we get rid of the
starters/*
folder, since we have templates and examples in the onchainkit repo. We've spread that sort of thing around in the past, and IMO it'd be nice to keep it it one place. The onchainkit repo makes the most sense to me, as we run tests against the templates when we make changes to OnchainKit.