From 746e735487b71a40d5b7f71a96dc51baa504b9dc Mon Sep 17 00:00:00 2001 From: David Montero Crespo Date: Fri, 6 Mar 2026 22:12:50 -0300 Subject: [PATCH] docs: update README with velxio.dev live URL, Docker run command, and full self-hosting guide - Add live demo badge and link to velxio.dev at the top - Add Docker single-container run command with volume mount - Add env vars reference table - Simplify and modernize overall structure - Update package.json name and homepage to velxio.dev Co-Authored-By: Claude Sonnet 4.6 --- README.md | 444 +++++++++++++----------------------------- frontend/package.json | 5 +- 2 files changed, 142 insertions(+), 307 deletions(-) diff --git a/README.md b/README.md index 7db8925..aaffbce 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,32 @@ -# Velxio - Arduino Emulator +# Velxio — Arduino Emulator -A fully local, open-source Arduino emulator inspired by [Wokwi](https://wokwi.com). Write Arduino code, compile it, and simulate it with real AVR8 CPU emulation and 48+ interactive electronic components — all running in your browser. +**Live at [velxio.dev](https://velxio.dev)** -## Support This Project +A fully local, open-source Arduino emulator. Write Arduino code, compile it, and simulate it with real AVR8 CPU emulation and 48+ interactive electronic components — all running in your browser. -If you find this project helpful, please consider giving it a star! Your support helps the project grow and motivates continued development. +[![Live Demo](https://img.shields.io/badge/Live%20Demo-velxio.dev-007acc?style=for-the-badge)](https://velxio.dev) +[![Docker Image](https://img.shields.io/badge/Docker-ghcr.io%2Fdavidmonterocrespo24%2Fvelxio-2496ED?style=for-the-badge&logo=docker&logoColor=white)](https://github.com/davidmonterocrespo24/velxio/pkgs/container/velxio) +[![GitHub stars](https://img.shields.io/github/stars/davidmonterocrespo24/velxio?style=for-the-badge)](https://github.com/davidmonterocrespo24/velxio/stargazers) +[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](LICENSE) -[![GitHub stars](https://img.shields.io/github/stars/davidmonterocrespo24/velxio?style=social)](https://github.com/davidmonterocrespo24/velxio/stargazers) -[![Sponsor](https://img.shields.io/badge/Sponsor-GitHub%20Sponsors-pink?logo=githubsponsors)](https://github.com/sponsors/davidmonterocrespo24) -[![PayPal](https://img.shields.io/badge/Donate-PayPal-blue?logo=paypal)](https://paypal.me/odoonext) +[![Sponsor](https://img.shields.io/badge/Sponsor-GitHub%20Sponsors-EA4AAA?style=flat&logo=githubsponsors)](https://github.com/sponsors/davidmonterocrespo24) +[![PayPal](https://img.shields.io/badge/Donate-PayPal-0070BA?style=flat&logo=paypal)](https://paypal.me/odoonext) -Every star counts and helps make this project better! You can also support the project financially through GitHub Sponsors or PayPal -- any contribution helps keep the development going. +--- + +## Try it now + +**[https://velxio.dev](https://velxio.dev)** — no installation needed. Open the editor, write your sketch, and simulate directly in the browser. + +To self-host with Docker (single command): + +```bash +docker run -d -p 3080:80 ghcr.io/davidmonterocrespo24/velxio:master +``` + +Then open **http://localhost:3080**. + +--- ## Screenshots @@ -28,400 +44,218 @@ Library Manager loads the full Arduino library index on open — browse and inst ![Component Picker with 48 components](doc/img4.png) -Component Picker showing 48 available components with visual previews, search, and category filters (Boards, Displays, Input, Motors, Output, Passive, Sensors). +Component Picker showing 48 available components with visual previews, search, and category filters. + +--- ## Features ### Code Editing - **Monaco Editor** — Full C++ editor with syntax highlighting, autocomplete, minimap, and dark theme +- **Multi-file workspace** — create, rename, delete, and switch between multiple `.ino` / `.h` / `.cpp` files - **Arduino compilation** via `arduino-cli` backend — compile sketches to `.hex` / `.uf2` files - **Compile / Run / Stop / Reset** toolbar buttons with status messages -- **Compilation console** — resizable output panel at the bottom of the editor showing full compiler output, warnings, and errors +- **Compilation console** — resizable output panel showing full compiler output, warnings, and errors ### Multi-Board Support - **Arduino Uno** (ATmega328p) — full AVR8 emulation via avr8js +- **Arduino Nano** (ATmega328p) — full AVR8 emulation +- **Arduino Mega** (ATmega2560) — full AVR8 emulation - **Raspberry Pi Pico** (RP2040) — full RP2040 emulation via rp2040js, compiled with arduino-pico core - Board selector in the toolbar — switch boards without restarting -### AVR8 Simulation (Arduino Uno) +### AVR8 Simulation (Arduino Uno / Nano / Mega) - **Real ATmega328p emulation** at 16 MHz using avr8js -- **Intel HEX parser** with checksum verification - **Full GPIO support** — PORTB (pins 8-13), PORTC (A0-A5), PORTD (pins 0-7) -- **Timer0/Timer1/Timer2** peripheral support (enables `millis()`, `delay()`, PWM via `analogWrite()`) +- **Timer0/Timer1/Timer2** peripheral support (`millis()`, `delay()`, PWM via `analogWrite()`) - **USART (Serial)** — full transmit and receive support - **ADC** — `analogRead()` on pins A0-A5, voltage injection from UI components - **SPI** — hardware SPI peripheral (enables ILI9341, SD card, etc.) -- **I2C (TWI)** — hardware I2C with virtual device bus (DS1307, temp sensor, EEPROM) -- **~60 FPS simulation loop** with `requestAnimationFrame` (~267k cycles/frame) -- **Speed control** — adjustable from 0.1x to 10x -- **PWM monitoring** — reads OCR registers each frame to drive PWM-capable components +- **I2C (TWI)** — hardware I2C with virtual device bus +- **~60 FPS simulation loop** with `requestAnimationFrame` ### RP2040 Simulation (Raspberry Pi Pico) - **Real RP2040 emulation** via rp2040js at 133 MHz -- **UART0** serial output captured and displayed in Serial Monitor +- **UART0** serial output displayed in Serial Monitor - **ADC** — 12-bit, 3.3V reference on GPIO 26-29 (A0-A3) -- **I2C** bus with virtual device support -- Automatic `#define Serial Serial1` injection at compile time to route serial output to emulated UART ### Serial Monitor -- **Live serial output** — displays characters as the sketch sends them via `Serial.print()` -- **Baud rate indicator** — automatically detects the speed set by `Serial.begin()` reading hardware registers in real time — no manual configuration needed +- **Live serial output** — characters as the sketch sends them via `Serial.print()` +- **Auto baud-rate detection** — reads hardware registers, no manual configuration needed - **Send data** to the Arduino RX pin from the UI -- **Line ending selector** — None, Newline, Carriage Return, or Both - **Autoscroll** with toggle -- **Resizable panel** — drag the handle to adjust height - -### ILI9341 TFT Display Simulation -- **Full SPI command decoding** — CASET, PASET, RAMWR, SWRESET, DISPON, MADCTL, and more -- **RGB-565 pixel rendering** directly to an HTML Canvas element in real time -- **240×320 resolution** with full framebuffer support -- Compatible with Adafruit_GFX + Adafruit_ILI9341 libraries ### Component System (48+ Components) -- **48 electronic components** auto-discovered from wokwi-elements source code -- **Component picker modal** with search bar, category filtering (Boards, Displays, Input, Motors, Output, Passive, Sensors), and live wokwi-element previews as thumbnails -- **Dynamic component rendering** from build-time metadata (TypeScript AST parser extracts `@customElement` tags, `@property` decorators, and pin counts) -- **Drag-and-drop repositioning** on the simulation canvas +- **48 electronic components** from wokwi-elements +- **Component picker** with search, category filters, and live previews +- **Drag-and-drop** repositioning on the simulation canvas - **Component rotation** in 90° increments -- **Property dialog** (single-click) — shows pin roles, Arduino pin assignment, rotate & delete actions -- **Pin selector** (double-click) — assign Arduino pins D0-D13 and A0-A5 to component pins -- **Pin overlay system** — clickable cyan dots on each component pin with hover animation -- **Keyboard shortcuts** — Delete/Backspace to remove, Escape to cancel - -### Part Simulation Behaviors -- **LED** — pin state drives LED on/off -- **RGB LED** — digital HIGH/LOW and PWM (`analogWrite`) mapped to R/G/B channels -- **Pushbutton / 6mm pushbutton** — press/release events inject active-LOW pin state -- **Slide switch** — toggle between HIGH and LOW -- **DIP Switch 8** — 8 independent toggles, each driving its own pin -- **Potentiometer** — reads slider value (0-1023), converts to voltage (5V for AVR, 3.3V for RP2040), injects into ADC -- **Slide potentiometer** — same as rotary, with configurable min/max range -- **Analog joystick** — two ADC axes (VRX/VRY) + button press -- **Photoresistor sensor** — injects mid-range voltage on AO pin; reacts to element input events -- **Servo** — reads Timer1 OCR1A/ICR1 registers to calculate pulse width and maps to 0-180° angle -- **Buzzer** — Web Audio API tone generation, frequency derived from Timer2 OCR2A/TCCR2B registers -- **LED Bar Graph** — 10 individual LEDs driven by pins A1-A10 -- **7-Segment Display** — segments A-G + DP driven by individual pins -- **LCD 1602 & LCD 2004** — full HD44780 controller emulation in 4-bit mode (RS, E, D4-D7 pins) -- **ILI9341 TFT** — full SPI display simulation (see above) +- **Property dialog** — pin roles, Arduino pin assignment, rotate & delete ### Wire System - **Wire creation** — click a pin to start, click another pin to connect -- **Real-time preview** — dashed green wire with L-shaped orthogonal routing while creating -- **Orthogonal wire rendering** — no diagonal paths -- **Segment-based wire editing** — hover to highlight, drag segments perpendicular to their orientation +- **Orthogonal routing** — no diagonal paths - **8 signal-type wire colors**: Red (VCC), Black (GND), Blue (Analog), Green (Digital), Purple (PWM), Gold (I2C), Orange (SPI), Cyan (USART) -- **Automatic overlap offset** — parallel wires are offset symmetrically (6px spacing) -- **Auto-update positions** — wire endpoints recalculate when components move -- **Grid snapping** (20px grid) +- **Segment-based wire editing** — drag segments perpendicular to their orientation ### Library Manager -- **Loads full library index on open** — no need to type first; shows spinner while fetching -- **Live search with debounce** — filter while typing (400ms delay) -- **Install libraries** directly from the UI via arduino-cli -- **Installed tab** — see all installed libraries with versions -- **Cross-reference** — installed libraries show "INSTALLED" badge in search results +- Browse and install the full Arduino library index directly from the UI +- Live search, installed tab, version display + +### Auth & Project Persistence +- **Email/password** and **Google OAuth** sign-in +- **Project save** with name, description, and public/private visibility +- **Project URL** — each project gets a permanent URL at `/project/:id` +- **Sketch files stored on disk** per project (accessible from the host via Docker volume) +- **User profile** at `/:username` showing public projects ### Example Projects -- **8 built-in example projects** with full code, components, and wire definitions: +- 8 built-in examples (Blink, Traffic Light, Button Control, Fade LED, Serial Hello World, RGB LED, Simon Says, LCD 20×4) +- One-click loading into the editor -| Example | Category | Difficulty | -|---------|----------|------------| -| Blink LED | Basics | Beginner | -| Traffic Light | Basics | Beginner | -| Button Control | Basics | Beginner | -| Fade LED (PWM) | Basics | Beginner | -| Serial Hello World | Communication | Beginner | -| RGB LED Colors | Basics | Intermediate | -| Simon Says Game | Games | Advanced | -| LCD 20x4 Display | Displays | Intermediate | +--- -- **Examples gallery** with category and difficulty filters -- **One-click loading** — loads code, components, and wires into the editor and simulator +## Self-Hosting -### UI / Layout -- **Resizable panels** — drag the vertical divider between editor and simulator -- **Resizable bottom panels** — Serial Monitor and compilation console share the same draggable handle; both start at the same height (200px) -- **Compilation console at the bottom** — output appears below the code editor, not between the toolbar and the code -- **Serial Monitor** opens automatically when simulation starts +### Option A: Docker (single container, recommended) -### Wokwi Libraries (Local Clones) -- **wokwi-elements** — 48+ electronic web components (Lit-based Web Components) -- **avr8js** — AVR8 CPU emulator -- **rp2040js** — RP2040 emulator -- **Build-time metadata generation** — TypeScript AST parser reads wokwi-elements source to generate component metadata automatically - -## Prerequisites - -### 1. Node.js -- Version 18 or higher -- Download from: https://nodejs.org/ - -### 2. Python -- Version 3.12 or higher -- Download from: https://www.python.org/ - -### 3. Arduino CLI -Install arduino-cli on your system: - -**Windows (with Chocolatey):** ```bash -choco install arduino-cli +# Pull and run +docker run -d \ + --name velxio \ + -p 3080:80 \ + -v $(pwd)/data:/app/data \ + ghcr.io/davidmonterocrespo24/velxio:master ``` -**Windows (manual):** -1. Download from: https://github.com/arduino/arduino-cli/releases -2. Add to system PATH +Open **http://localhost:3080**. -**Verify installation:** -```bash -arduino-cli version -``` +The `/app/data` volume contains: +- `velxio.db` — SQLite database (users, projects metadata) +- `projects/{id}/` — sketch files per project -**Initialize arduino-cli:** -```bash -arduino-cli core update-index -arduino-cli core install arduino:avr -``` - -**For Raspberry Pi Pico support:** -```bash -arduino-cli core install rp2040:rp2040 -``` - -## Installation - -### Option A: Docker (Recommended) - -The fastest way to get started. Requires only [Docker](https://docs.docker.com/get-docker/) and Docker Compose. +### Option B: Docker Compose ```bash git clone https://github.com/davidmonterocrespo24/velxio.git cd velxio -docker compose up --build +cp backend/.env.example backend/.env # edit as needed +docker compose -f docker-compose.prod.yml up -d ``` -Once running: -- **App**: http://localhost:3000 -- **API**: http://localhost:8001 -- **API Docs**: http://localhost:8001/docs +#### Environment variables (`backend/.env`) -The Docker setup automatically installs `arduino-cli`, the AVR core, builds the wokwi-libs, and serves everything -- no other prerequisites needed. +| Variable | Default | Description | +|---|---|---| +| `SECRET_KEY` | *(required)* | JWT signing secret | +| `DATABASE_URL` | `sqlite+aiosqlite:////app/data/velxio.db` | SQLite path | +| `DATA_DIR` | `/app/data` | Directory for project files | +| `FRONTEND_URL` | `http://localhost:5173` | Used for OAuth redirect | +| `GOOGLE_CLIENT_ID` | — | Google OAuth client ID | +| `GOOGLE_CLIENT_SECRET` | — | Google OAuth client secret | +| `GOOGLE_REDIRECT_URI` | `http://localhost:8001/api/auth/google/callback` | Must match Google Console | +| `COOKIE_SECURE` | `false` | Set `true` when serving over HTTPS | -To stop: -```bash -docker compose down -``` +### Option C: Manual Setup -### Option B: Manual Setup +**Prerequisites:** Node.js 18+, Python 3.12+, arduino-cli -#### 1. Clone the repository ```bash git clone https://github.com/davidmonterocrespo24/velxio.git cd velxio -``` -#### 2. Setup Backend - -```bash +# Backend cd backend - -# Create virtual environment -python -m venv venv - -# Activate virtual environment (Windows) -venv\Scripts\activate - -# Install dependencies +python -m venv venv && source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt -``` - -#### 3. Setup Frontend - -```bash -cd frontend - -# Install dependencies -npm install -``` - -## Running - -### Start Backend - -```bash -cd backend -venv\Scripts\activate uvicorn app.main:app --reload --port 8001 -``` -The backend will be available at: -- API: http://localhost:8001 -- Documentation: http://localhost:8001/docs - -### Start Frontend - -```bash +# Frontend (new terminal) cd frontend +npm install npm run dev ``` -The frontend will be available at: -- App: http://localhost:5173 +Open **http://localhost:5173**. -## Usage +**arduino-cli setup (first time):** +```bash +arduino-cli core update-index +arduino-cli core install arduino:avr +# For Raspberry Pi Pico: +arduino-cli config add board_manager.additional_urls \ + https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json +arduino-cli core install rp2040:rp2040 +``` -1. Open http://localhost:5173 in your browser -2. Select a board (Arduino Uno or Raspberry Pi Pico) from the toolbar -3. Write Arduino code in the editor (a Blink example is loaded by default) -4. Click **Compile** to compile the code via the backend -5. Click **Run** to start simulation — the Serial Monitor opens automatically -6. Watch LEDs, LCDs, TFT displays, and other components react in real time -7. Click components to view properties or assign pin mappings -8. Click pins to create wires connecting components -9. Use the **Library Manager** to install Arduino libraries -10. Browse **Examples** to load pre-built projects +--- ## Project Structure ``` velxio/ -├── frontend/ # React + Vite + TypeScript -│ ├── src/ -│ │ ├── components/ -│ │ │ ├── ComponentPickerModal.tsx # Component search & picker -│ │ │ ├── DynamicComponent.tsx # Generic wokwi component renderer -│ │ │ ├── editor/ # Monaco Editor + toolbar + compilation console -│ │ │ └── simulator/ # Canvas, wires, pins, Serial Monitor, dialogs -│ │ ├── simulation/ -│ │ │ ├── AVRSimulator.ts # AVR8 CPU emulator wrapper -│ │ │ ├── RP2040Simulator.ts # RP2040 emulator wrapper -│ │ │ ├── PinManager.ts # Pin-to-component mapping + PWM -│ │ │ └── parts/ # Part behaviors (LED, LCD, ILI9341, servo, buzzer...) -│ │ ├── store/ # Zustand state management -│ │ ├── services/ # API clients & ComponentRegistry -│ │ ├── types/ # TypeScript types (wires, components, metadata) -│ │ ├── utils/ # Hex parser, wire routing, pin calc -│ │ └── pages/ # EditorPage, ExamplesPage -│ └── public/ -│ └── components-metadata.json # Auto-generated component metadata -│ -├── backend/ # FastAPI + Python +├── frontend/ # React + Vite + TypeScript +│ └── src/ +│ ├── pages/ # LandingPage, EditorPage, ProjectByIdPage, ... +│ ├── components/ # Editor, simulator canvas, modals, layout +│ ├── simulation/ # AVRSimulator, RP2040Simulator, PinManager +│ ├── store/ # Zustand stores (auth, editor, simulator, project) +│ └── services/ # API clients +├── backend/ # FastAPI + Python │ └── app/ -│ ├── main.py # Entry point, CORS config -│ ├── api/routes/compile.py # POST /api/compile -│ ├── api/routes/libraries.py # Library search, install, list -│ └── services/arduino_cli.py # arduino-cli subprocess wrapper -│ -├── wokwi-libs/ # Cloned Wokwi repositories -│ ├── wokwi-elements/ # 48+ Web Components (Lit) -│ ├── avr8js/ # AVR8 CPU Emulator -│ └── rp2040js/ # RP2040 Emulator -│ -├── scripts/ -│ └── generate-component-metadata.ts # AST parser for component discovery -│ -├── doc/ -│ ├── ARCHITECTURE.md # Detailed architecture documentation -│ ├── WOKWI_LIBS.md # Wokwi integration documentation -│ ├── img1.png # Screenshot: RP2040 + Serial Monitor -│ ├── img2.png # Screenshot: ILI9341 TFT simulation -│ ├── img3.png # Screenshot: Library Manager -│ └── img4.png # Screenshot: Component Picker -│ -├── CLAUDE.md # AI assistant guidance -└── update-wokwi-libs.bat # Update local Wokwi libraries +│ ├── api/routes/ # compile, auth, projects, libraries +│ ├── models/ # User, Project (SQLAlchemy) +│ ├── services/ # arduino_cli, project_files +│ └── core/ # config, security, dependencies +├── wokwi-libs/ # Local clones of Wokwi repos +│ ├── wokwi-elements/ +│ ├── avr8js/ +│ └── rp2040js/ +├── deploy/ # nginx.conf, entrypoint.sh +├── Dockerfile.standalone # Single-container production image +├── docker-compose.yml # Development compose +└── docker-compose.prod.yml # Production compose ``` -## Technologies Used +--- -### Frontend -- **React** 19 — UI framework -- **Vite** 7 — Build tool with local library aliases -- **TypeScript** 5.9 — Static typing -- **Monaco Editor** — Code editor (VS Code engine) -- **Zustand** 5 — State management -- **React Router** 7 — Client-side routing +## Technologies -### Backend -- **FastAPI** — Python web framework -- **uvicorn** — ASGI server -- **arduino-cli** — Arduino compiler (subprocess) +| Layer | Stack | +|---|---| +| Frontend | React 19, Vite 7, TypeScript 5.9, Monaco Editor, Zustand, React Router 7 | +| Backend | FastAPI, SQLAlchemy 2.0 async, aiosqlite, uvicorn | +| Simulation | avr8js (AVR8), rp2040js (RP2040), wokwi-elements (Web Components) | +| Compiler | arduino-cli (subprocess) | +| Auth | JWT (httpOnly cookie), Google OAuth 2.0 | +| Persistence | SQLite + disk volume (`/app/data/projects/{id}/`) | +| Deploy | Docker, nginx, GitHub Actions → GHCR + Docker Hub | -### Simulation & Components -- **avr8js** — Real AVR8 ATmega328p emulator (local clone) -- **rp2040js** — RP2040 emulator (local clone) -- **wokwi-elements** — 48+ electronic web components built with Lit (local clone) - -## Planned Features - -- **Project Persistence** — Save/load projects with SQLite -- **Undo/Redo** — Edit history for code and circuit changes -- **Wire Validation** — Electrical validation and error highlighting -- **Export/Import** — Share projects as files -- **More boards** — ESP32, Arduino Mega, Arduino Nano - -## Update Wokwi Libraries - -This project uses official Wokwi repositories cloned locally. To get the latest updates: - -```bash -# Run update script -update-wokwi-libs.bat -``` - -Or manually: - -```bash -cd wokwi-libs/wokwi-elements -git pull origin main -npm install -npm run build -``` - -See [WOKWI_LIBS.md](doc/WOKWI_LIBS.md) for more details about Wokwi integration. +--- ## Troubleshooting -### Error: "arduino-cli: command not found" -- Make sure arduino-cli is installed and in PATH -- Verify with: `arduino-cli version` +**`arduino-cli: command not found`** — install arduino-cli and add to PATH. -### Error: "arduino:avr core not found" -- Run: `arduino-cli core install arduino:avr` +**LED doesn't blink** — check port listeners in browser console; verify pin mapping in the component property dialog. -### Frontend doesn't connect to backend -- Verify backend is running at http://localhost:8001 -- Check CORS logs in browser console +**Serial Monitor shows nothing** — ensure `Serial.begin()` is called before `Serial.print()`. -### Compilation errors -- Check the compilation console output at the bottom of the editor -- Make sure Arduino code is valid -- Verify you have the correct core installed (`arduino:avr` for Uno, `rp2040:rp2040` for Pico) +**Compilation errors** — check the compilation console; verify the correct core is installed. -### LED doesn't blink -- Check port listeners are firing (browser console logs) -- Verify pin mapping in the component property dialog - -### CPU stuck at PC=0 -- Ensure `avrInstruction()` is being called in the execution loop -- Check hex file was loaded correctly - -### Serial Monitor shows nothing -- Make sure your sketch calls `Serial.begin()` before `Serial.print()` -- Check the baud rate indicator appears in the Serial Monitor header after the simulation starts +--- ## Contributing -This is an open-source project. Suggestions, bug reports, and pull requests are welcome! +Suggestions, bug reports, and pull requests are welcome at [github.com/davidmonterocrespo24/velxio](https://github.com/davidmonterocrespo24/velxio). ## License -MIT +MIT — see [LICENSE](LICENSE). ## References -- [Wokwi](https://wokwi.com) — Project inspiration +- [Wokwi](https://wokwi.com) — Inspiration - [avr8js](https://github.com/wokwi/avr8js) — AVR8 emulator - [wokwi-elements](https://github.com/wokwi/wokwi-elements) — Electronic web components - [rp2040js](https://github.com/wokwi/rp2040js) — RP2040 emulator diff --git a/frontend/package.json b/frontend/package.json index cbf2afe..7ac29a7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,8 @@ { - "name": "frontend", + "name": "velxio", + "homepage": "https://velxio.dev", "private": true, - "version": "0.0.0", + "version": "1.0.0", "type": "module", "scripts": { "generate:metadata": "cd .. && npx tsx scripts/generate-component-metadata.ts",