Skip to content

Releases: AndreaBozzo/Ceres

v0.1.1

28 Dec 16:42

Choose a tag to compare

Re-release because ceres-cli apparently is already taken on Crates.io (naming conflict).
CLI package is now named ceres-search.


What's New in v0.1.1

Changed

  • Renamed CLI crate from ceres-cli to ceres-search (name conflict on crates.io)

What Was in v0.1.0 (re-ported)

Note: v0.1.0 was delisted due to the ceres-cli ( doesn't belong or connected in any way to this project ) naming conflict on Crates.io. Those features are now included here.

Added

  • Multi-portal batch harvesting via portals.toml configuration file
  • Delta harvesting with content hash tracking for incremental updates
  • Migration tracking to prevent re-execution of applied migrations
  • Structured error handling for Gemini API with detailed error information
  • GeminiErrorKind enum for type-safe error classification (Authentication, RateLimit, QuotaExceeded, ServerError, NetworkError, Unknown)
  • GeminiErrorDetails struct with error kind, message, and HTTP status code
  • classify_gemini_error() helper function for centralized error classification
  • Sync service layer for cleaner code organization
  • Improved test coverage for sync and config modules

Changed

  • Refactored Gemini error handling to use structured types instead of strings
  • Replaced AppError::GeminiError(String) with AppError::GeminiError(GeminiErrorDetails)
  • Extracted sync logic into dedicated service layer
  • Updated Gemini API request to include API key in headers
  • Replaced string parsing in user_message() with pattern matching
  • Updated is_retryable() to intelligently handle different Gemini error types

Fixed

  • Gemini API key now passed in headers per Google API documentation

Full Changelog: v0.0.1...v0.1.1

Ceres v0.0.1 - Initial Release

02 Dec 18:00

Choose a tag to compare

🌾 Ceres v0.0.1

Semantic search engine for open data portals

Features

  • CKAN Harvester — Fetch datasets from any CKAN-compatible portal with concurrent processing
  • Semantic Search — Find datasets by meaning using Google Gemini embeddings (text-embedding-004)
  • Multi-format Export — Export to JSON, JSON Lines, or CSV
  • Database Statistics — Monitor indexed datasets and portals

Tech Stack

Component Technology
Language Rust 1.85+ (async with Tokio)
Database PostgreSQL 16+ with pgvector
Embeddings Google Gemini text-embedding-004 (768 dims)
Portal Protocol CKAN API v3

Quick Start

# Start PostgreSQL with pgvector
docker-compose up -d

# Run migrations
psql $DATABASE_URL -f migrations/202511290001_init.sql

# Configure
cp .env.example .env
# Add your GEMINI_API_KEY

# Build & run
cargo build --release
./target/release/ceres harvest https://dati.comune.milano.it
./target/release/ceres search "trasporto pubblico"

Requirements

  • Rust 1.85+
  • Docker & Docker Compose
  • Google Gemini API key (get one free)

Full Changelog to come soon.

First release! 🎉