| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
AI-native client-only browser platform for designing, programming, wiring, simulating, and deploying embedded systems. No backend — the browser talks to Turso (libSQL) and AI providers directly.
| Layer | Stack |
|---|---|
| App | React 19, Vite 8, TypeScript 6, TailwindCSS 4, Zustand, TanStack Query, Monaco Editor, Framer Motion |
| Data | Turso (libSQL/SQLite) over HTTP via @libsql/client + Drizzle ORM, called directly from the browser |
| Simulation | Custom C++ parser → IR → VM, netlist solver, device SDK, running in a Web Worker |
| AI | Bring-your-own-key, OpenAI-compatible providers (OpenAI, Anthropic, Gemini, OpenRouter, custom) called directly from the browser |
⚠️ Security note: Because there is no server, the Turso auth token is bundled into the client and exposed to users. Ownership is enforced at the application layer only (queries filter by userId). Use a token with minimal permissions. See spec/RFC0001 for the full tradeoff analysis.
| Landing | LED Blink | Servo Sweep |
![]() |
![]() |
![]() |
rakit-io/ ├── src/ │ ├── components/ # UI components │ ├── pages/ # Route pages (Landing, Auth, Dashboard, Editor) │ ├── lib/ │ │ ├── db/ # Drizzle schema + libSQL (Turso) browser client │ │ ├── svg/ # SVG board & component renderers │ │ ├── simulator/ # C++ parser, IR, VM, netlist, device SDK │ │ ├── stores/ # Zustand stores (auth, project, simulation, ui) │ │ ├── hooks/ # TanStack Query hooks │ │ ├── api.ts # Data + AI access layer (Turso / providers) │ │ └── types.ts │ └── workers/ # Simulation Web Worker ├── scripts/ │ ├── migrate.ts # Idempotent schema creation │ └── seed.ts # Demo user + example projects └── spec/ # Architecture RFCs
bun installcurl -sSfL https://get.tur.so/install.sh | bash
turso auth login
turso db create rakit-io-db
turso db show rakit-io-db --url # connection URL
turso db tokens create rakit-io-db # auth tokenCopy .env.example to .env and fill in your Turso credentials (and an optional default AI key):
VITE_TURSO_URL=libsql://<your-db>.turso.io
VITE_TURSO_AUTH_TOKEN=<your-token>
VITE_AI_BASE_URL=https://api.openai.com/v1
VITE_AI_API_KEY=
VITE_AI_MODEL=gpt-4o-miniexport TURSO_URL="libsql://<your-db>.turso.io"
export TURSO_AUTH_TOKEN="<your-token>"
bun run migrate # create users, sessions, projects, ai_providers
bun run seed # demo user + 8 example projectsbun dev # Vite dev server on http://localhost:5173| Field | Value |
|---|---|
| demo@rakit.io | |
| Password | demo1234 |
The demo account comes pre-seeded with example projects: LED Blink, DHT22 Weather Station, Servo Sweep, Button LED, Potentiometer, Servo Knob, BME280 Monitor, OLED Hello World.
bun dev # Start Vite dev server
bun build # Production build (tsc + vite)
bun typecheck # Typecheck
bun lint # Lint with oxlint
bun migrate # Create/ensure DB schema
bun seed # Seed demo data
bun deploy # Build and deploy to Cloudflare Pages
bun pages:dev # Build and run locally via Wrangler PagesThe build output in dist/ is a fully static SPA deployed to Cloudflare Pages via Wrangler. wrangler.toml points Pages at dist/, and public/_redirects ensures client-side routes fall back to index.html.
Set build-time environment variables in the Cloudflare Pages dashboard (Settings → Environment variables) for both Production and Preview, or pass them on deploy. These are baked into the static bundle:
VITE_TURSO_URL=libsql://<your-db>.turso.io
VITE_TURSO_AUTH_TOKEN=<your-token>
VITE_AI_BASE_URL=https://api.openai.com/v1
VITE_AI_API_KEY=
VITE_AI_MODEL=gpt-4o-miniAuthenticate once:
npx wrangler loginDeploy:
bun deploy
# or, with inline env vars for a one-off:
npx wrangler pages deploy dist --var VITE_TURSO_URL:... --var VITE_TURSO_AUTH_TOKEN:...LED, Button, Resistor, Potentiometer, DHT22, BME280, SSD1306 OLED, Servo, RGB LED, Ultrasonic, LCD 16x2, Buzzer, Relay.
MIT
| Back | FazBrowse Home | New Git URL |