CRISTIAN RENOSTO

Featured Work

Every project I build in the open, with its real state — including the parts that are still in progress.

Featured ProjectFLUTTER / PHP / MYSQL

Quique

A high-performance, self-hosted communication platform built for IT labs and strict LAN environments. Cross-platform Flutter client over a PHP/MySQL REST backend, with real-time messaging, rich media and end-to-end encrypted chats.

Self-Hosted

Runs entirely on your own LAN

Real-time

Instant messaging & media

Cross-Platform

Android, iOS & Web

Custom Backend

REST API on PHP + MySQL

Featured ProjectRUST / AXUM / TAURI

AnalisiLab

A study engine for Italian university exams in Calculus I and Linear Algebra. One Rust core — expression AST, parser, differentiation, LaTeX rendering, limits, integrals, series, Taylor expansions, differential equations — behind three front ends: a terminal solver, a local HTTP API and a desktop shell. A question asked in plain Italian comes back as a step-by-step, exam-style solution.

Written entirely in Italian, down to the comments and the knowledge base, because the exam papers it targets are in Italian. Two limits stated up front: the desktop shell needs the WebKitGTK development packages, and the package declares no license on purpose, because the exercises in kb/ derive from course notes whose authorship is not clear.

Natural Language

Free-form questions in Italian

Symbolic Engine

Limits, integrals, series, ODEs

Three Front Ends

Terminal, HTTP API, desktop shell

Knowledge Base

Exercises generated per chapter

Private repository

Runs LocallyJAVA / TCP / POSTGRESQL

chess-server

A multiplayer chess server with a rules engine written from scratch — no chess library. Move generation, castling, en passant, promotion, checkmate and stalemate detection, plus FEN and perft. Ships two clients: a terminal client and a Swing desktop client, over a plain-text TCP protocol.

The most complete project here. Deployed on Railway; a public subdomain is planned but not live yet.

From Scratch

Rules engine, no chess library

Two Clients

Terminal and Swing desktop

Accounts

PBKDF2 hashing on PostgreSQL

Deployable

Railway / Nixpacks ready

Runs LocallyC / RAYLIB / WAYLAND

CalcC

A hardware-accelerated calculator written entirely in C. Custom mathematical evaluator built on a linked-list expression tree, native Wayland tiling support, and a responsive liquid-glass UI rendered with Raylib.

Hardware Accelerated

Direct Vulkan/OpenGL rendering

Wayland Native

Built for Niri & modern compositors

Custom Evaluator

BODMAS over a linked-list AST

Dynamic Layout

Recomputed every single frame

In ProgressJAVA / JAVAFX / MAVEN

CueMyMusic

A desktop music player built around the DJ cue-point concept: walk it, talk it. JavaFX interface with a three-pane layout, a global dark theme and auto-sizing windows, driven by a Maven build.

Interface prototype: the screens, navigation and theming work, but audio playback and library scanning are not implemented yet. No fake data is shipped in place of them.

Cue Point Concept

DJ-oriented playback model

JavaFX UI

Three-pane layout, global dark theme

Maven Build

JDK 21, JavaFX 21, wrapper included

In ProgressNEXT.JS / TYPESCRIPT / ZOD

car.cristianrenosto.party

A used-and-new car aggregator for the Italian market, with an RC-car insurance estimate attached to every search. Eight marketplace adapters behind one interface, deterministic fixtures so the app works with no external source, and a pricing model kept out of the code: the insurance engine reads a YAML tariff sheet, so tuning the estimate is a business decision rather than a refactor.

The live sources are not connected, on purpose. Subito, Wallapop and AutoScout24 forbid scraping and run anti-bot protection, so every adapter defaults to supportsLive: false and the app serves fixtures. Wiring a real source means their official API or feed — the registry file says which, per provider, and refuses to parse HTML behind a bot check.

Marketplace Filters

Eight adapters, one interface

RC Estimate

Tariff sheet in YAML, not in code

Cached Search

Repeated queries served from cache

Tested Core

node:test over filters, tariffs, cache

Private repository

Runs LocallyNEXT.JS / STATIC EXPORT / MONOREPO

landing-apps

Five landing pages, one per project, each on its own subdomain of this site. Every app is a static Next.js export that presents the project, renders its documentation and hands over the source as a tarball taken straight from the branch tip — no zip to maintain, no copy to keep in sync. One monorepo for pushing, five Vercel projects with separate root directories, so a broken config in one does not take the others down.

Nothing is live yet: the five subdomains exist in DNS through the wildcard, and every one of them answers 404 until the matching Vercel project is deployed. The AnalisiLab page deliberately offers no download, because that repository is private.

Five Apps

One per project, one repo

Static Export

No server, no cold start, no env

Always Current

Tarball pulled from the branch

Same Design System

Tokens shared with this site

Runs LocallyPOSTGRESQL / BASH / PLANTUML

db.cristianrenosto.party

One PostgreSQL schema shared by every service, with a single account table. Twenty tables across five packages: the credentials live in one place, each service owns its tables and joins them with a foreign key, and rotating a password becomes one operation instead of seven — six of which someone forgot.

No application code here: DDL, the apply script and the diagram. Passwords are generated at runtime and handed to psql as variables, so neither the password nor its hash ever reaches a file or the shell history. chess_accounts is the one table that still duplicates credentials, declared rather than hidden, because it verifies with PBKDF2 instead of reading PHP's format.

20 Tables

Five packages, one identity

One Account

site_email as primary key

One Script

Passwords generated at runtime

Documented

Logical schema and PlantUML diagram

Private repository

Running the code

Each project runs on its own. These are the ports they listen on locally, and the subdomains they are meant to reach in production.

Quique

Planned
Local port
:8000
Start
php -S 0.0.0.0:8000 -t webService
Subdomain
chat.cristianrenosto.party

AnalisiLab

Local only
Local port
:3000
Start
cargo run -- --server
Subdomain
Not applicable

A local study tool: the HTTP server binds to 127.0.0.1 only, and the terminal mode needs no server at all.

chess-server

Local only
Local port
:6700
Start
./build.sh && ./start-server.sh
Subdomain
Not applicable

Plain-text TCP server. A subdomain serves HTTP, and a browser cannot open a raw TCP socket — it would need a web client, which is a separate project.

CalcC

Local only
Local port
No server — runs in the terminal or on the desktop
Start
./build && ./calcc
Subdomain
Not applicable

CueMyMusic

Local only
Local port
No server — runs in the terminal or on the desktop
Start
./mvnw javafx:run
Subdomain
Not applicable

JavaFX desktop app with a window. A subdomain can only serve HTTP, so there is no version of this project that a URL could reach.

car.cristianrenosto.party

Planned
Local port
:3000
Start
npm run dev
Subdomain
car.cristianrenosto.party

landing-apps

Planned
Local port
:3000
Start
cd apps/calc && npm run dev
Subdomains
  • calc.cristianrenosto.party
  • chess.cristianrenosto.party
  • cue.cristianrenosto.party
  • lab.cristianrenosto.party
  • chat.cristianrenosto.party

db.cristianrenosto.party

Local only
Local port
No server — runs in the terminal or on the desktop
Start
DATABASE_URL=postgresql://… ./bin/apply.sh
Subdomain
Not applicable

A database schema, not an HTTP service. It is reached with a connection string, so there is no URL that could serve it.

The domain has a wildcard record, so every subdomain above already resolves and answers 404: what is missing is the deployment, not the DNS. Quique is the one that cannot be deployed on the current hosting at all — it needs a host running PHP and MySQL. Cards for private repositories say so instead of linking, so there is nothing on this page to click and fail.

Like what you see?

These are the projects I could publish. There are more in progress — send me a message if you want to hear about them.

Get in touch