Nano Banana Pro
Agent skill for nano-banana-pro
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Sign in to like and favorite skills
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Cronny is a web scraping and job scheduling platform for Austrian real estate websites. It's a TypeScript monorepo with a React frontend and Hono backend, using SQLite for data storage and Playwright for web scraping.
yarn dev - Run both client and server in development mode (client on :5173, server on :3000)yarn debug - Run client + server with Node.js debugger attachedyarn build - Build both packages for productionyarn start:prod - Run database migrations + start production serverpackages/server/)yarn dev - Development server with hot reload (tsx + watch)yarn migrate - Run Drizzle database migrationsyarn studio - Launch Drizzle Studio (database GUI)yarn test - Run Vitest testspackages/client/)yarn dev - Vite development server (http://localhost:5173)yarn build - TypeScript compilation + Vite production buildyarn preview - Serve production build locallyyarn lint - Run ESLint to check code qualitypackages/ ├── client/ # React frontend with Mantine UI ├── server/ # Hono backend with SQLite └── types/ # Shared TypeScript interfaces
Strategy Pattern for Web Scraping: Each website (derstandard.at, willhaben.at, immoscout24.at) has its own strategy implementation in
/packages/server/src/strategies/. All strategies implement a standardized Runner interface.
Job Scheduling System: Jobs stored in SQLite with cron expressions, executed via node-cron with dynamic strategy loading based on job configuration.
Database Schema: Core entities are Jobs, Runs, Results, Clients, and ClientJobs. Uses Drizzle ORM with SQLite.
Frontend: React 18 + TypeScript + Vite + Mantine + TanStack Router + TanStack Query Backend: Node.js 22 + Hono + Drizzle ORM + SQLite + Playwright + node-cron Testing: Vitest (server) with HTML/JS fixtures for strategy testing
packages/server/src/index.ts - Main Hono app with route setuppackages/server/src/schedule.ts - Job scheduling logicpackages/server/src/cron.ts - Cron job executionpackages/server/src/run.ts - Job execution coordinationpackages/server/src/db/schema.ts - Database schema definitionpackages/client/src/main.tsx - React rootpackages/client/src/App.tsx - Main app with auth, routing, themepackages/client/src/routes/ - File-based routing structurepackages/client/src/api/ - React Query hooks for server communicationpackages/client/src/api/client.ts - HTTP client with environment-based API URL handlingWhen adding new scrapers, create files in
packages/server/src/strategies/ implementing the Runner interface. Include corresponding test files in tests/strategies/ with fixtures in tests/fixtures/.
Use
yarn migrate to run schema changes. The database file is created at packages/server/.data/db.sqlite in development. Access Drizzle Studio with yarn studio for visual database inspection.
Server tests are in
/tests/ with strategy-specific tests using HTML/JS fixtures. Run with yarn test from server directory. Tests create a separate .data directory to avoid conflicts with development database.
The platform uses API key-based authentication for external clients and password-based auth for the web interface. Client access is managed through the ClientJobs relationship table.
Supports Slack, WhatsApp, and file-based notifications. Configuration is handled through job parameters and environment variables.
In development, the client uses
VITE_API_URL=http://localhost:3000 to connect directly to the server. Copy packages/client/.env.example to packages/client/.env.development if needed.
The client uses a centralized HTTP client (
packages/client/src/api/client.ts) that:
http://localhost:3000Project uses Node.js 22.14.0 (managed via Volta). The codebase uses ES modules throughout.
Package Manager: This project uses Yarn, not npm. Always use
yarn commands instead of npm commands.