Skip to content
View gianpaj's full-sized avatar
πŸ‡ΊπŸ‡¦
πŸ‡ΊπŸ‡¦

Block or report gianpaj

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
gianpaj/README.md

Ciao, mi chiamo Gianfranco πŸ‘‹

Tinkerer ✦ Software Developer ✦ Dog father 🐢

  • β˜€οΈ I'm living in sunny Madrid, Spain 🌞
  • Tech Stack: TypeScript | Node.js | PostgreSQL | MongoDB | Next.js | React | Python | Vercel | Generative AI (text and voice) | LiveKit
  • Blog:
  • Socials:
  • ⚑ Fun fact:
    • My first computer was a Compaq Presario in 1995 in Ecuador – I was 8 years old. It came with Windows 3.1, but you could install Windows '95. I was amazed by the possibilities of computers and the internet (dial-up). I still cherish those memories πŸ•ΉοΈπŸ˜Š

Businesses

  • ☎️ HolaBrisa - a thoughtful text and voice AI receptionist that gives every hotel guest an immediate, personal welcome.
  • πŸŽ™οΈ SexyVoice.ai (repo) - Text to Speech and Voice cloning platform. Perfect for content creators, developers, and storytellers

Onova πŸ‡ΊπŸ‡¦

Onova Android app home feed, October 2018

Onova.co was a mobile marketplace for second-hand and sustainable clothing, "Instagram with a buy button". Alex and I first built Givebox, an app for giving things away in your local area, working remotely from Ireland and Poland. Clothing turned out to be the largest category, so we moved to Lviv, Ukraine, and went full-time on Onova. The company ran until September 2019.

Young people in Ukraine bought clothes in thrift stores and resold them on social media, a market full of scammers, with no payments, reviews or search. On Onova, buyers followed shops to build a personal feed. Sellers announced a drop, a batch of items going on sale at a set date and time. Buyers subscribed, got a notification when it opened and competed to buy. Payments went through UAPay and were held in escrow until the buyer collected the package from Nova Poshta, and Onova took a small fee from each completed order. Drop was a spin-off app built from the same codebase.

I wrote almost all of the code: about 4,500 commits between 2017 and 2020. The iOS and Android apps were one React Native codebase that built both Onova and Drop. The web apps used React and TypeScript. A set of small Node.js services ran on a single AWS Lightsail instance under pm2 and shared one MongoDB database:

  • server.data: the Express REST API behind the apps and web apps, covering the order flow, feed, search and drops, with about 400 tests
  • server.push: push notifications through Firebase Cloud Messaging
  • server.chat: order updates posted into buyer–seller chats on Pusher ChatKit, later Sendbird
  • Agenda: a MongoDB-backed job scheduler for order deadlines and notifications
  • Forest Admin: the back office
  • An Instagram importer: sellers linked their account, and a Google AutoML image classifier picked out posts showing items for sale and turned them into listings on their Onova shop
Details

flowchart LR
  subgraph lightsail["AWS Lightsail instance"]
    webapp(["webapp<br/>:3000"])
    data(["server.data<br/>:4040"])
    agenda{"Agenda job scheduler"}
    push(["server.push"])
    chatPoll(["server.chat<br/>push notif. polling"])
    chatAuth(["server.chat<br/>Pusher auth REST API<br/>:8142"])
    mongo[("MongoDB")]
  end

fcm["Firebase Cloud Messaging"]
chatkit["Pusher ChatKit"]
backup[("MongoDB cloud backup")]

webapp --> data
data <--> mongo
data <--> agenda
agenda <--> mongo
agenda <--> push
agenda <--> chatPoll
push --> mongo
push --> fcm
chatPoll --> chatkit
chatAuth <--> chatkit
mongo --> backup
Loading

Side projects πŸ‘¨β€πŸ’»

  • πŸ”₯ Walnut.tv (repo) - Discover trending videos from Reddit and curated YouTube channels
  • πŸ“ž agentcaller.io (repo) - AgentCaller.io lets your AI agent (e.g. OpenClaw) call businesses β€” booking a restaurant, etc.
  • 🎯 3dvibegame.com (repo) - 3d multiplayer game where you can create any 3d object, move around and manipulate objects with text. My first game
  • ⚽️ football_analysis_yolo - A Machine Learning project using YOLO and OpenCV to automate soccer match analysis, player tracking, and performance insights from live or pre-recorded video footage.

Pinned Loading

  1. confetti-labs/confetti-labs.com confetti-labs/confetti-labs.com Public

    HTML

  2. sexyvoice sexyvoice Public

    Voice Cloning, Voice Call, and Text-to-Speech platform. Perfect for content creators, developers, and storytellers πŸ˜‰

    TypeScript 23 5

  3. gian.cool gian.cool Public

    Personal Website and Blog

    TypeScript 3

  4. walnut.tv walnut.tv Public

    πŸ”₯ Discover trending videos from Reddit and curated YouTube channels – Soon using Next.js. See `dev` branch

    JavaScript 15 8