Sandesh G.C.

Full Stack Engineer, Nepal

SandeshG.C.

I build web products that hold up in production: ordering systems that take real money, platforms that carry real content, and back offices the people who own them can actually run without me.

Available for part-time & contract work

Years shipping
3+
Clients delivered for
4
Continents worked across
3

Nepal

01Selected work

Things I've shipped,
and why they work

Four client projects and one of my own. For each, the situation before the work existed, the decisions worth defending, and what came of it.

01
Year
2026
Engagement
Client work
Client location
Arlington, Washington
Role
Full stack developer

Nutty's Junkyard Grill

nuttysjunkyardgrill.com(opens in a new tab)

Online ordering and a staff back office for a roadside grill.

Problem

Every order came in over the phone, and every menu or price change had to go through a developer. There was no way to sell online, and no way for the people who actually run the kitchen to change anything themselves.

What I built

A marketing site with online ordering in front, and a staff dashboard behind it that owns the menu, add-on groups, daily specials, the live order queue and incoming job applications.

Decisions & trade-offs

  1. Settled order state from Stripe webhooks rather than the browser redirect, so a closed tab or a dropped connection can never leave a paid order unrecorded.
  2. Persisted the cart to local storage, because a half-built order is the most expensive thing a restaurant site can lose.
  3. Modelled add-ons as their own groups instead of fields on a menu item, so staff can build new combinations without a schema migration.
  4. Enforced access in Postgres with row-level security rather than in application code, so the rules still hold when a route handler is wrong.
  5. Covered pricing and cart arithmetic with Vitest, because those are the two places where a bug costs the client real money.

Outcome

Customers order and pay online, and staff run the menu and the order queue without a developer in the loop.

Next.js 16TypeScriptTailwind CSS v4shadcn/uiSupabasePostgreSQLStripeResendZustandTanStack TableVitest
02
Year
2026
Engagement
Client work
Client location
Bharatpur, Nepal
Role
Full stack developer

SprachenZentrum

spzem.com(opens in a new tab)

A German language institute and Austria nursing consultancy, online.

Problem

Students researching German courses and Austrian nursing pathways start searching months before they ever walk into a classroom. The institute needed somewhere that could carry the full course catalogue and counselling detail, publish events and articles, and actually be found for the terms those students type.

What I built

A content-led platform covering courses, counselling, events and writing, with student accounts on top.

Decisions & trade-offs

  1. Prerendered the marketing routes with incremental revalidation, so pages arrive quickly on Nepali mobile connections without the content going stale.
  2. Structured courses and counselling as data rather than as page markup, so staff can keep them current without a deploy.
  3. Built the events and blog surfaces early, since they are what makes a site findable for anything beyond its own brand name.

Outcome

Live at spzem.com, serving prospective students across Nepal.

Next.jsTypeScriptTailwind CSSVercel
03
Year
2026
Engagement
Client work
Client location
Nepal
Role
Design engineer

Indra Paneru

ipp.com.np(opens in a new tab)

A designer's portfolio, engineered to rank for his own name.

Problem

A product designer's work lived on other people's platforms, and his name, which people search in several different forms, didn't reliably lead anywhere he controlled.

What I built

A portfolio that puts case studies first, gives writing equal weight, and is built so that searching any version of his name lands on his own site.

Decisions & trade-offs

  1. Built the selected-work browser as a paged, keyboard-navigable list rather than an infinite grid, so the ordering of the work stays deliberate.
  2. Gave the writing section the same weight as the case studies, because posts are what keep a portfolio in the index between projects.
  3. Wrote structured data covering each variant of his name, because that is how people actually search for him.

Outcome

Live at ipp.com.np, and the canonical result for his name.

Next.jsTypeScriptTailwind CSSVercel
04
Year
2024
Engagement
Client work
Client location
Paris, France
Role
Frontend developer

Epona

eponaconsultant.vercel.app(opens in a new tab)

A bilingual recruitment platform for a French consultancy.

Problem

A Paris recruitment consultancy needed to speak to French and English audiences without either version feeling like a translation of the other.

What I built

A bilingual marketing platform where locale is part of the route, covering services, process, talent and client references.

Decisions & trade-offs

  1. Segmented routing by locale so each language has first-class, shareable URLs instead of a client-side language toggle.
  2. Built the interactive components on Radix primitives, so keyboard and screen-reader behaviour came from the library rather than from me.
  3. Tied motion to section entry with GSAP timelines, so it supports the reading order instead of competing with it.

Outcome

Live at eponaconsultant.vercel.app in both French and English.

Next.jsTypeScriptTailwind CSSRadix UIGSAPEmbla Carousel

Self-directed

05
Year
2026
Engagement
Self-directed
Role
Designer and engineer

sobr

Clear days, counted.

Problem

Apps in this category tend to do one of two things badly: punish a person for a single bad day by resetting everything, or quietly monetise the most sensitive data someone can log.

What I built

A private daily companion: a win/slip streak, freeze tokens that absorb a bad day without erasing progress, and a tree that reflects long-term change. Mobile-first, with a web companion view.

Decisions & trade-offs

  1. Made freeze tokens a first-class rule instead of an all-or-nothing streak, because resetting to zero punishes exactly the moment a person most needs to come back.
  2. Isolated the streak, freeze and growth rules as pure functions in a shared package under 71 tests. The mechanic is the product, so it cannot be approximately right.
  3. Guarded every table with row-level security and shipped a real account purge, because this is the most sensitive data any app of mine will hold.
  4. Ran one domain package across Expo and web through Turborepo, so the rules can never drift between platforms.

Outcome

Domain logic passing 71 tests, running on iOS, Android and web from a single codebase.

Expo RouterReact NativeTypeScriptTurborepoSupabaseDrizzle ORMPostgreSQL

02About

An engineer who ships,
then hands over

Portrait of Sandesh G.C.
Based in
Nepal
Working since
2023
Education
B.E. Computer Engineering

I'm a full stack engineer in Nepal. For the past 3 years I've worked remotely for BlueStone Africa, a South African startup, building end-to-end features for their fixed asset management platform, on React and Express, with REST APIs documented properly and state that behaves.

Alongside that I take on client work directly. That has meant an ordering system for a restaurant in Washington State, a bilingual recruitment platform for a consultancy in Paris, and a language institute and a designer's portfolio here in Nepal. Small teams, real budgets, and owners who need the thing to keep working after I've gone.

I studied Computer Engineering at IOE Paschimanchal Campus, Tribhuvan University. I've contributed to Hacktoberfest three years running, and my team came second at Leapfrog Revampathon rebuilding a Nepali news portal.

The database is the last line

Access rules belong in Postgres, not only in a route handler. Application code is where mistakes happen; row-level security is what makes those mistakes survivable.

Hand it over properly

Migrations, documented APIs and a README that assumes nothing. A client should be able to hire someone else next year without starting again.

Test the part that costs money

Not coverage for its own sake. Pricing, cart arithmetic, streak rules: the logic where a quiet bug becomes an invoice.

Boring where it counts

Interesting architecture is a cost the client pays after I've moved on. I spend novelty on the interface, not on the infrastructure.

03Capabilities

The tools, and what for

A stack is only interesting in context. Here is what I reach for, and why each of these earns its place.

01

Languages

TypeScript everywhere it can go. SQL because an ORM is a convenience, not an excuse not to read the query.

  • TypeScript
  • JavaScript
  • Python
  • SQL
  • HTML
  • CSS

02

Frontend

React for the work, Radix and Mantine for the accessibility I would otherwise get wrong by hand.

  • React
  • Next.js
  • React Native / Expo
  • Redux Toolkit
  • Tailwind CSS
  • Mantine UI
  • Radix UI
  • Zustand

03

Backend & data

Postgres by default, and row-level security so the rules live next to the data rather than in a route handler.

  • Node.js
  • Express
  • PostgreSQL
  • MongoDB
  • MySQL
  • Supabase
  • Drizzle ORM
  • REST APIs

04

Platform & tooling

Enough platform work to ship and hand over: containers, pipelines, payments, and tests where they pay for themselves.

  • Docker
  • CI/CD
  • Vercel
  • Git
  • GitLab
  • Postman
  • Stripe
  • Vitest

04Experience

Where the hours have gone

August 2023 to Present

South Africa (Remote)

Full Stack Engineer

BlueStone Africa

Building end-to-end features for a Fixed Asset Management platform at an early-stage South African startup, working remotely from Nepal across a seven-hour time difference.

  • Build end-to-end features for the Fixed Asset Management platform on React and Express
  • Implement RESTful APIs and document them in Postman so the contract is legible to everyone touching it
  • Compose responsive interfaces with Mantine UI and manage application state with Redux Toolkit
  • Build React frontends for crypto wallet products against Express and Django backends, debugging across the full stack
  • Work asynchronously in a small startup team, which puts the weight on written specs and reviewable pull requests
ReactExpressNode.jsRedux ToolkitMantine UIMongoDBPostman

2023 to Present

Remote

Freelance Full Stack Developer

Independent (Upwork & direct clients)

Delivering production web products end to end for clients in the US, France and Nepal: scoping, building, shipping and handing over.

  • Own projects from first conversation through to deployment and handover
  • Ship commerce, booking and content platforms on Next.js, Postgres and Stripe
  • Write the documentation and migrations that let a client's next developer pick the work up
  • Work directly with non-technical owners, which means translating business rules into software without a product manager in between
Next.jsTypeScriptPostgreSQLSupabaseStripeTailwind CSS

Education

B.E. Computer Engineering
Tribhuvan University, IOE Paschimanchal Campus
2019 to 2024, Pokhara, Nepal
Data structures and algorithms, databases, artificial intelligence, software engineering, C and C++.
Higher Secondary (+2 Science)
Horizon Gautam Buddha School
2017 to 2019, Tilottama, Nepal

Recognition

Runner-up, Leapfrog Revampathon
2022
Rebuilt a Nepali news portal with a team, competing on design and user experience.
Hacktoberfest
2022 to 2024
Contributed to open-source projects three years running.

05Contact

Tell me what you're
trying to build

Part-time and contract engagements are my focus right now, and I'm open to the right full-time role.

Or email gcsandesh01@gmail.com

Elsewhere

Available for part-time & contract work. Typically replying within a day, Kathmandu time.