Portfolio of practice · Tbilisi, Georgia

Tornike
Kalandadze

Software engineer & technical lead — client delivery since 2019.

I ship whole products — schema to pixels — and put a human gate on everything autonomous.

Tbilisi, Georgia (GMT+4) · Worldwide remote · fully flexible

One body of work — a startup, pipelines, apps, prototypes — and six ways of reading it. The lens you're holding changes the notes in the margins, never the work itself.

01 · Full-stack Whole products — schema to pixels, shipped end to end.

Descend into the work ↓

01 · Full-stack — from screen to database

See the whole product, not just the screen.

Choose what you want to inspect, then browse the projects below. You can see the screens, the code behind them, and where the data lives—all without leaving the page.

6Projects to explore
3Simple views
A→ZBuilt end to end

What do you want to see?

Pick one view. It stays selected as you browse.

User screens: Pages, mobile screens, and interactions.

How this project is built

Tap a section to see its details

Detailed view
  • /pagethe six-lens homepage + LensDial
  • /projects/[slug]pageone project, read through every lens
  • /resume/[role]pagea printable CV per lens
  • /demopagethe admin panel, public + sandboxed
  • /adminpagethe darkroom — owner-only
  • middleware.tsmiddlewaregates /admin/* wholesale — no demo exception
  • /api/trackrouteanon path + timestamp only — no cookies, no IPs, no PII
  • /api/contactrouteZod length caps
  • is_owner()functionSECURITY DEFINER — writes are owner-only
  • owner_stats()functionthe deep analytics read, owner-scoped
  • +1 more components
  • projectstablefacets + architecture jsonb — this row included
  • skillstable
  • contact_messagestable
  • site_settingstable
  • page_viewstableinsert-only — nobody can read it raw
  • +4 more components
01Project 1 of 6Flagship

web

This Site

Don’t just read the portfolio—experience the proof. One Next.js + Supabase system transforms the same work into six distinct interfaces, while a full admin panel reveals the engine behind it through a public read-only demo.

User screens · 5How it works · 6Data & storage · 9

You’re already inside it: Next.js App Router above, Supabase Postgres with RLS below, and one admin panel managing every project/skill/settings. The strata map to the repo’s real routes and tables—not a list of keywords.

Outcome

The site proves its own case: every lens is interactive, the metrics come from real anonymous logs, and the defenses run live. Even the card’s strata map directly to the repo’s routes, services, and tables.

Read the problem and approach
Problem
A portfolio that lists “full-stack, React, Postgres” proves little—everyone’s does. The goal was to make the site itself the evidence across every discipline, without maintaining six separate experiences.
Approach
One data model, six experiences: full-stack/mobile/frontend/automation/security/AI. A middleware-protected admin panel—the darkroom—manages everything and powers a public read-only demo.
Next.jsTypeScriptSupabasePostgres RLSTailwind CSSFramer Motion

How this project is built

Tap a section to see its details

Detailed view
  • /[locale]pagesKA/EN storefront + courses, lessons, profile
  • /reviewpagedaily 5-minute SM-2 review session
  • /share/[token]pagerevocable parent/teacher dashboard — no auth needed
  • /adminpageserver-gated: students, pricing, AI cost, refunds
  • syllabus pipelineserviceparse → expand → generate → review gate, abortable
  • tutor chatrouteClaude streaming, grounded per-lesson
  • sm2.tsfunctionSuperMemo-2 scheduler, from scratch
  • bog.tsserviceBank of Georgia checkout + server callback
  • security-patterns.tsmiddlewareprompt-injection filters + rate limits
  • courses / lessonstablesgenerated content, Zod-validated before insert
  • enrollmentstablesource of truth for access; refunds revoke here
  • spaced repetition queuetableper-student wrong-answer schedule
  • ai usage logtableper-call token cost
02Project 2 of 6

ai

AI Academy

A Georgian-native AI e-learning platform: upload a syllabus PDF and it becomes a full interactive course — structured lessons, quizzes, and a Socratic AI tutor that only teaches from the lesson's own material. Spaced repetition closes the retention loop; Bank of Georgia checkout sells the courses.

User screens · 4How it works · 5Data & storage · 4

Next.js 16 App Router over Supabase Postgres with RLS, 30+ route handlers, SSR auth, an enrollments table as the source of truth, and Bank of Georgia server callbacks. Prices always read from the DB, never from the client.

Outcome

A working business, not a portfolio piece: real students, real Bank of Georgia payments with reconciliation and refunds, anti-sharing IP limits on accounts, and an admin panel that knows what every AI call cost. The retention loop is measurable — SM-2 re-queues what each student got wrong and a daily five-minute review closes it.

Next.jsReactTypeScriptTailwind CSSSupabaseClaude Sonnet 4.5+3

How this project is built

Tap a section to see its details

Detailed view
  • android/ — Kotlin + Jetpack Compose appappscan, threats, bounties, mesh screens; fully functional offline
  • web/ — Next.js 16 dashboardweblanding, dashboard, scan, threats, bounties, mesh routes
  • Phantom wallet adapterwalletstake, verify, and claim from the browser
  • app/ai — on-device detection engineengineURL / message / payload pattern matching, zero cloud
  • app/mesh — Pollinet mesh managermeshBLE / Wi-Fi Direct peer relay
  • app/sync — connectivity observer + sync managerworkersettles the offline queue on-chain in one batch on reconnect
  • programs/shieldmesh — Anchor programprograminitialize_pool, stake, unstake, report_threat, verify_threat, claim_bounty
  • Room databasedboffline threat queue + local scan history
  • StakingPool / ThreatAccount / StakerAccountaccountson-chain state, Solana devnet
03Project 3 of 6

security

ShieldMesh

Offline-first decentralized threat intelligence. Every phone becomes a security node: on-device AI detects phishing and scams, alerts relay device-to-device over a BLE/Wi-Fi Direct mesh, and verified threats settle on Solana with bounties for reporters. Hackathon winner ($800).

User screens · 3How it works · 4Data & storage · 2

One system across three runtimes — Rust/Anchor on-chain, Kotlin on-device, Next.js on the web — sharing a single threat-lifecycle state model.

Outcome

Championship winner ($800 prize). Working end to end — downloadable APK, devnet-deployed program, and a dashboard anyone can open. Built solo.

KotlinJetpack ComposeRustAnchorSolanaNext.js+4

How this project is built

Tap a section to see its details

Detailed view
  • /pagelaunchpad — Launching Soon + Live pool feeds, token grid
  • /stakenomicspagecreate staking pools, locks, and vestings
  • /portfoliopageconnected-wallet tokens, stakes, locks, vestings
  • /cardpagesdetail views: stake, lock, vest, soon
  • tokano-sdk clientscontextsstaking / lock / vesting program clients, balances, token info
  • wallet adapterproviderPhantom, Trust, Ledger, WalletConnect + built-in Demo Wallet
  • demo fallbackserviceevery SDK read degrades to lib/demo.ts when the RPC fails
  • Solana mainnetchainstaking / lock / vesting programs via Anchor + SPL Token
  • Helius RPCendpointon-chain reads
  • lib/demo.tsdatasetrealistic pools, vestings, locks, balances for demo mode
04Project 4 of 6

fullstack

Tokano

Stakenomics for Solana tokens: a DeFi platform for creating and managing staking pools, token locks, and vesting schedules, built around the tokano-sdk. Real-time APY tracking, multi-wallet support, and a demo mode that keeps every view alive even when the RPC is down.

User screens · 4How it works · 3Data & storage · 3

Next.js 15 App Router + React 19 over Solana mainnet: tokano-sdk program clients (staking, lock, vesting) behind React contexts, Anchor + SPL Token underneath, Helius RPC for reads, and a demo-dataset fallback layer that keeps every route rendering when the chain is unreachable.

Outcome

The whole stakenomics lifecycle in one interface: create a pool, watch APY and stakers move in real time, lock and claim, stream vesting from secondly to yearly — across four wallet providers, in dark or light theme, and demo-proof against RPC outages.

Next.js 15React 19Tailwind CSS 4tokano-sdkSolana web3.jsAnchor+3

How this project is built

Tap a section to see its details

Detailed view
  • /pagehero, six-module curriculum bento grid, CTA band
  • /blogpagesfeatured post, card grid, full article pages
  • /contact · /login · /registerpagesvalidated contact form, split-screen auth
  • /adminpages10 sections — dashboard, courses, orders, promocodes, reviews, messages…
  • AuthContextcontextstubbed auth — loads an ADMIN user on mount
  • ui kitcomponents10 typed primitives: Button, Modal, Toast, Badge…
  • in-memory mutationsstatecreates/toggles/deletes live in useState + toasts
  • mockData.tsmodule9 interfaces — courses, orders, promocodes, reviews, articles…
  • getDemoStats()derivationdashboard KPIs computed from the records
  • utils.tshelpersformatPrice (₾), formatDate (ka locale), slugs
05Project 5 of 6

fullstack

SoftAcademy

A Georgian-language cybersecurity academy: a public marketing site that sells a live, instructor-led course, plus a complete admin panel that runs the business — courses, orders, promocodes, students, reviews, blog CMS, and an email/SMS broadcast tool. Fully in Georgian (ქართული), priced in lari (₾), mobile-first.

User screens · 4How it works · 3Data & storage · 3

Next.js 14 App Router with route groups splitting the marketing site from the admin panel; TypeScript-strict mock-data layer (nine interfaces) standing in for the database, derived dashboard stats, in-memory mutations with toasts, and a hand-built ten-primitive UI kit instead of a component library.

Outcome

The entire product is walkable in one npm install: landing, blog, contact, auth, and ten admin sections — localized in Georgian with lari pricing and date-fns ka formatting, responsive down to a mobile drawer, and useful as a stakeholder demo, a design reference, or the front-end half of a real build.

Next.js 14React 18TypeScript 5Tailwind CSS 3.4lucide-reactdate-fns (ka locale)+1

How this project is built

Tap a section to see its details

Detailed view
  • player appscreenswallet, games, village, mystery boxes, leaderboards — mobile-first, KA/EN
  • gamesscenesAir Hockey, Chicken Rush, Lucky Drop, Lucky Step, Midnight Machine — R3F + Remotion
  • merchant portalscreensQR crediting, transactions, commissions
  • admin dashboardscreensuser management, economy simulation
  • Hono APIservicecoin economy: cashback crediting, game payouts, boxes, referrals — Zod-validated
  • Socket.IOstreamvillage raids, attacks, live balances
  • authserviceTwilio Verify OTP + JWT — phone-native login
  • Turso (libSQL)storeDrizzle ORM schema + migrations
  • Vercelinfrafrontend at shansi-nine.vercel.app
06Project 6 of 6

fullstack

Shansi

A gamified cashback app for Georgia: earn cashback at partner merchants by scanning QR codes, then spend the coins across arcade games, mystery boxes, and a build-and-raid village with real-time PvP attacks. Bilingual (Georgian/English), mobile-first, live on Vercel.

User screens · 4How it works · 3Data & storage · 2

Next.js 14 + TypeScript frontend (React Three Fiber game scenes, Remotion animation) over a Hono backend with Drizzle ORM on Turso (libSQL). Socket.IO for real-time village raids and balances, Zod-validated APIs, Twilio Verify OTP + JWT auth, and three surfaces from one codebase: player app, merchant portal, admin dashboard.

Outcome

A complete two-sided product live at shansi-nine.vercel.app: five games, village building with PvP raids, mystery boxes, promotions, referrals, and leaderboards for users — QR crediting and commission tracking for merchants — economy simulation for the operator. Fully bilingual Georgian/English and mobile-first throughout.

Next.js 14TypeScriptTailwind CSSReact Three FiberRemotionHono+6

From request to release

Need someone who can see the whole system?

I work across product decisions, interfaces, APIs, data, deployment, and the tradeoffs between them.

The practice

Six lenses, one habit.

I'm Tornike — a software engineer in Tbilisi working across web, mobile, automation, security, and AI. I studied software development at IT Step Academy from 2016 to 2018 and have delivered freelance client work since 2019. Today I lead a four-person product team as lead developer and partner at AI Academy, and build Shansi as lead engineer in a product partnership.

The habit underneath is the same everywhere: type the state, log what happened, gate the side effects, and make the interface tell the truth. The lens changes; the discipline doesn't.

Spoken — Georgian (native) · English (C1) · Russian (B1/B2)

Hackathon — ShieldMesh — VibeCoding From 0 winner, $800 prize

  1. Now

    Lead developer & partner — AI Academycurrent

    Leading a four-person team building a Georgian-native AI learning platform.

  2. Now

    Lead engineer & product partner — Shansicurrent

    Publicly launched bilingual cashback and game economy; banking approval in progress.

  3. 2019

    Software engineering, freelance

    Client and company products across web, mobile, AI, education, finance, and automotive.

  4. 2022

    Defensive security practice

    Authorized labs, application security, threat modeling, forensics, and defensive tooling.

  5. 2016

    IT Step Academy

    Software-development studies through 2018; course certificates in PHP, HTML/CSS, JavaScript, databases, and C#.

Languages — measured across 37 public repos

  • TypeScript72.3%
  • Python9.6%
  • JavaScript6.0%
  • Kotlin2.8%
  • CSS2.8%
  • Java1.9%

bytes from the GitHub API, not self-rating

Toolset

Frontend
React · Next.js · Tailwind CSS
Languages
TypeScript · JavaScript · Python
Backend
Node.js · Supabase
Database
PostgreSQL · MongoDB · PostgreSQL RLS
DevOps
Docker · AWS
Mobile
React Native · Expo
Tools
Playwright · Inngest

Proof

Don't take my word for any of it.

This site audits itself — a real Lighthouse pass via Google PageSpeed, run live while you watch, no cherry-picked screenshots. Its traffic numbers are public too. Paste your own URL if you'd rather audit that.

· a full pass takes ~20s
v1 · blob
v2 · wireframe
v3 · plasma

Design iteration

The orb, three times.

The centerpiece of a React Native voice assistant, redesigned until it felt alive — an organic blob, a wireframe sphere projected by hand, then the plasma ribbon that shipped on @shopify/react-native-skia. All three run live here, re-created in canvas.

Contact

Say the word.

Hiring for a remote role, a product that needs a technical lead, a system that needs an adversarial read — or just a question about how something on this site works.

tornikekalandadze.work@gmail.com

Book a 30-min intro call →

Tbilisi, Georgia (GMT+4) · Worldwide remote · hours fully flexible

hiring?

The CV rewrites itself for the lens you're holding — open the Full-stack CV →

A human replies — usually within a day.

One side effect: a row in my inbox. Nothing else.

Now viewing through the Full-stack lens