CRISTIAN RENOSTO← All projects

Project

AnalisiLab

A domain engine for Italian university exam preparation — Calculus I and Linear Algebra, solved step by step.

Source is private — download unavailableView on GitHub

What it does

Run it locally

Solve a question from the command line

cargo run -- "calcola il limite di (sin(x)/x)"

Run the web server (default port 3000)

cargo run -- --server 3000

Documentation

A domain engine for Italian university exam preparation: Calculus I and Linear Algebra, solved step by step. Written in Rust, 2024 edition, with three dependencies and 66 unit tests.

It ships a symbolic math core — expression AST, parser, differentiation, LaTeX rendering, limits, integrals, series, Taylor expansions, differential equations — and a natural-language solver that turns a plain question into an exam-style, step-by-step answer.

Run it

cargo run -- "calcola il limite di (sin(x)/x)"

The whole interface is the command line: no flags to remember, the question is the argument.

The web server

cargo run -- --server 3000     # port configurable via PORT too
Endpoint What it does
GET /api/solve?query=... Solves a request
GET /api/exercise?topic=...&difficulty=... Generates an exercise
GET /api/chapter?topic_id=... Shows a chapter
GET /api/search?query=... Searches the knowledge base
GET /api/topics Lists the chapters
GET /api/health Health check

The web frontend is static (web/index.html): it calls the API from the same origin, so serving the folder next to the server is all the setup it needs.

Desktop (Tauri)

cargo run        # the default target is the Tauri desktop app

Known limits, stated up front

  • The repository is private: this page can describe the project, but the source is not publicly downloadable. It is available on request.
  • Everything is in Italian — comments, knowledge base, strings — because the exam papers it targets are in Italian. There is no localization layer.
  • The knowledge base (kb/) derives from course handouts and is not covered by the code license.

Full detail in the repository's docs.md.