I made ollo because of the struggles I had when I started doing hardware. Ollo smoothens out that experience and helps beginners bring their hardware imaginations to life.
- 🤖 AI-Powered Project Planning - Answer dynamic, experience-adaptive questions to get tailored project guidance
- 📦 Smart Parts Recommendations - AI-powered component suggestions with categorization and sourcing
- 🎯 Context-Aware AI - Remembers your project details for personalized suggestions throughout your workflow
- 📄 Datasheets & Documentation - Automatic datasheet fetching via Nexar/Octopart integration with visual previews
- 🔄 Workflow Management - Guided stages for breadboard prototypes, PCB designs, and custom hardware builds
- ✅ Task Tracking - Stage-specific tasks and artifact suggestions to keep your project organized
- 🔍 Part Search & Selection - Search across major suppliers (Mouser, DigiKey, SparkFun, JLCPCB, LCSC, PCBway)
- 💰 Budget Tracking - Set and monitor project budgets with currency preferences
- 📝 Custom Part Lists - Add and manage your own components alongside AI suggestions
- Framework: Next.js 16 (App Router, React 19, Turbopack)
- UI/Styling: Tailwind CSS 4, Radix UI, Motion
- Authentication: Clerk
- Database: Supabase
- AI: OpenAI GPT-5 Nano, Google Gemini 2.5 Flash (via AI SDK)
- Type Safety: TypeScript 5
- Node.js 20+
- npm/yarn/pnpm/bun
- Clerk account
- Supabase project
- OpenAI API key
- Clone the repository:
git clone https://github.com/madebyshaurya/ollo.git
cd ollo- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.localFill in your credentials:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=
CLERK_WEBHOOK_SECRET=
NEXT_PUBLIC_SUPABASE_URL=
SUPABASE_SERVICE_ROLE_KEY=
OPENAI_API_KEY=
NEXT_PUBLIC_APP_URL=
NEXAR_CLIENT_ID= # Optional: Nexar/Octopart client ID for datasheet fetching
NEXAR_CLIENT_SECRET= # Optional: Nexar/Octopart client secret- Run the development server:
npm run devOpen http://localhost:3000 to see the app.
ollo/
├── app/ # Next.js app directory
│ ├── api/ # API routes
│ │ ├── ai/ # GPT-5 Nano for metadata generation
│ │ ├── intake/ # Dynamic question generation (Gemini 2.5 Flash)
│ │ ├── parts/ # Part recommendations & search
│ │ └── projects/ # Project workflow management
│ ├── dashboard/ # Dashboard pages
│ │ ├── [id]/ # Project detail & settings
│ │ └── settings/ # User preferences
│ └── page.tsx # Landing page
├── components/ # React components
│ ├── ui/ # UI primitives (Radix UI)
│ ├── dashboard/ # Dashboard-specific components
│ ├── settings/ # Settings components
│ └── datasheets/ # Datasheet viewer components
├── lib/ # Utilities & services
│ ├── actions/ # Server actions (projects, context, preferences)
│ ├── services/ # Business logic (parts, datasheets)
│ ├── workflows.ts # Workflow stage management
│ └── utils.ts # Helper functions
└── types/ # TypeScript type definitions
- Create a Project - Choose between breadboard prototype, PCB design, or custom hardware
- Answer Questions - Respond to AI-generated, experience-adaptive intake questions
- Get Recommendations - Receive AI-powered part suggestions organized by category
- Follow Workflows - Progress through stage-specific tasks and guidance
- Search & Select Parts - Search suppliers and view datasheets with visual previews
- Track Progress - Monitor budget, manage tasks, and advance through workflow stages
| Variable | Description |
|---|---|
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY |
Clerk public key for authentication |
CLERK_SECRET_KEY |
Clerk secret key |
CLERK_WEBHOOK_SECRET |
Webhook signature verification |
NEXT_PUBLIC_SUPABASE_URL |
Supabase project URL |
SUPABASE_SERVICE_ROLE_KEY |
Supabase admin key |
OPENAI_API_KEY |
OpenAI API key |
NEXT_PUBLIC_APP_URL |
Application base URL |
NEXAR_CLIENT_ID |
Optional: Nexar/Octopart client ID for automatic datasheet fetching |
NEXAR_CLIENT_SECRET |
Optional: Nexar/Octopart client secret for automatic datasheet fetching |
npm run dev # Start development server (Turbopack)
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint- Next.js 16 with App Router and React Server Components for optimal performance
- Turbopack for lightning-fast development and builds
- OpenAI GPT-5 Nano for intelligent project metadata generation
- Google Gemini 2.5 Flash for adaptive intake question generation via AI SDK
- Clerk for secure, production-ready authentication
- Supabase with JSONB fields for flexible data modeling
- Nexar/Octopart integration for automatic datasheet fetching
- Radix UI + Tailwind CSS 4 for accessible, beautiful components
- TypeScript 5 for end-to-end type safety
- Server Actions for all data mutations with built-in revalidation
- JSONB Fields for dynamic part categories and intake answers
- Workflow System with three distinct flows (breadboard, PCB, custom)
- Experience-Adaptive AI that adjusts question complexity based on user level
- Row-Level Security via Supabase with Clerk user ID filtering
- Webhook-Based Sync for user lifecycle management
This project is feature-complete and stable. For bug reports or feature suggestions, please open an issue.
This project is open source and available under the MIT License.
Built by @madebyshaurya
Made with ❤️ & 🥤
