Skip to content

emmanuelakwasi/gemini3

Repository files navigation

SankofaWire

Sankofa � an Akan word meaning "go back and get it" � reminds us to learn from the past to move forward. SankofaWire brings that mindset to embedded hardware: diagnose faster by building on what works and fixing what doesn't.

Embedded setup analysis for ESP32, STM32, and Arduino. One-page dashboard: upload a setup photo, describe your goal and issue, get a structured diagnosis with likely causes, fix steps, verification checklist, code snippets, and a downloadable report. Practical, confident, and grounded in real hardware.


Table of contents


What inspired this

Hardware debugging is painful. You're staring at a breadboard, serial logs, and datasheets � and progress is slow. I wanted a tool that acts like a mentor: grounded in engineering, clear about uncertainty, and focused on helping you learn faster. SankofaWire is that tool. Built from scratch during the Gemini 3 Hackathon contest period.


Gemini 3 integration

Feature Description
Multimodal input Upload a photo of your setup; the model analyzes wiring, components, and layout. Images are resized/compressed server-side for reliability.
Structured JSON output Diagnosis is returned as validated JSON � no markdown parsing, no hallucinations in the schema.
Uncertainty handling When the image is unclear or evidence is incomplete, the model populates uncertainty_zones with concrete verification steps. Confidence stays "medium" or "low" instead of pretending to be certain.
Model fallback If the configured model returns 404, the API calls ListModels and auto-selects a supported model (preferring Flash).

Run locally

1. Clone and install

git clone https://github.com/emmanuelakwasi/gemini3.git
cd gemini3
npm install

2. Environment

Copy .env.example to .env.local and set:

GEMINI_API_KEY=your_key_here
GEMINI_MODEL=

Get your API key from Google AI Studio. GEMINI_MODEL is optional; if 404, the API auto-selects from ListModels.

3. Start

npm run dev

Open http://localhost:3000.

Scripts

Command Description
npm run dev Development server
npm run build Production build
npm run start Production server
npm run lint ESLint

Judge testing instructions

Using the public URL (Demo Mode):

  1. Open the deployed app URL � no login required.
  2. Turn Demo on in the Setup card. The app loads a demo image and prefills goal and issue.
  3. Click Run Demo Analysis.
  4. Success: The Diagnosis card shows a structured result: title, summary, likely causes, fix steps, and explanations. Export the report or use Bench Replay to compare sessions.
  5. If you hit Gemini rate limits: The API tries multiple models in sequence. If all fail (429), Demo Mode returns a deterministic fallback result instead of an error. You'll see a "Demo fallback result" badge � the diagnosis content is still valid, but it was not generated by the live API. Retry later or use a deployment with a higher quota.

Third-party tools

Tool Purpose License
Next.js React framework, App Router MIT
@google/generative-ai Gemini API client Apache 2.0
sharp Image resize/compress for Gemini Apache 2.0
Zod Request/response validation MIT
Tailwind CSS Styling MIT

No other third-party AI services. Gemini is the only model backend.


Limitations

  • Image quality matters. Blurry or low-contrast photos reduce accuracy.
  • Models can hallucinate. Uncertainty zones and confidence levels are meant to keep you skeptical where evidence is thin.
  • Free-tier Gemini quotas apply. If you hit rate limits, retry later or use a paid key.
  • English only. The prompt and UI are not localized.

Roadmap

  • Support for more boards (RP2040, nRF, etc.)
  • Dark mode
  • Export to PDF

Releases

No releases published

Packages

 
 
 

Contributors