# Teispace > Teispace is a software development company in Pokhara, Nepal, building custom software, AI and agentic systems, cloud platforms and mobile apps. Teispace is an engineering studio based in Pokhara, Nepal, working with clients across Nepal, Europe and the United States. This file is a map of the site for language models and the assistants built on them. **Contact:** info@teispace.com · +977 9856044324 **Feed:** https://teispace.com/rss.xml · **Sitemap:** https://teispace.com/sitemap.xml ## What we do - [AI & Agents](https://teispace.com/services/ai-and-agents): Agents that act on your systems under rules you set, and retrieval that still answers correctly at scale. - [Custom Software](https://teispace.com/services/custom-software): Web, mobile and the platform underneath them — delivered as one system. - [Cloud & DevOps](https://teispace.com/services/cloud-and-devops): Pipelines that build once and promote a vetted artefact, and deploys that undo themselves. - [Platform & Modernisation](https://teispace.com/services/platform-modernisation): Legacy systems taken apart carefully — re-architected, made observable, and handed back faster than they were. ## The company - [Home](https://teispace.com/): Teispace builds custom software, AI and agentic systems, and cloud platforms for teams that need engineering they can rely on. - [Selected work](https://teispace.com/work): Systems we have shipped, and what each one took. - [Open source](https://teispace.com/open-source): Libraries we publish on npm and pub.dev, with live download counts. - [Contact](https://teispace.com/contact): How to reach us, and answers to the questions that arrive first. - [Careers](https://teispace.com/careers): Open engineering roles, currently 6. ## Case studies - [A conference that had to work in front of the delegates](https://teispace.com/resources/case-studies/sodveloncon-2024): Registration across nine delegate categories, three pricing tiers and two currencies — then QR check-in and live hall-by-hall attendance, for two days, with no second chance at any of it. - [Where the bus actually is, without anybody making a phone call](https://teispace.com/resources/case-studies/school-transport-tracking): Live vehicle tracking, route adherence and arrival alerts for parents — on a platform built from the first week to be handed over, which is exactly what happened to it. - [Three surfaces, one contract, fifteen months of not stopping](https://teispace.com/resources/case-studies/three-surface-operations-platform): A web platform, a mobile application and a dedicated notification service, built as one system and kept in step through fifteen months of continuous delivery. ## Writing - [A dead animation looks exactly like one that has not started](https://teispace.com/resources/blog/why-a-dead-animation-looks-correct): CSS scroll-driven animations fail silently in four different ways, and every one of them renders a page that looks fine. Here is how we made them fail loudly instead. - [teiqr: the complete guide to generating, styling, validating and scanning QR codes](https://teispace.com/resources/blog/teiqr-complete-guide): A working guide to teiqr — optimal encoding, ten module shapes with measured scan rates, logo damage analysis that is per-block rather than per-cent, PDF at a real millimetre size, and a decoder that proves the code you styled can still be read. - [Every number on this page can be checked](https://teispace.com/resources/blog/every-number-on-this-page-can-be-checked): We removed three claims from this site because we could not stand behind them, and wrote tests for the rest. Here is what that discipline costs and why it is worth paying. - [Four CSS traps, and the one property family behind all of them](https://teispace.com/resources/blog/four-css-traps-that-all-looked-correct): A mask that cancelled a 3D transform, a perspective on the wrong element, a header that ate its own menu, and a timeline measured against the wrong box. All four looked right in the state anyone would check first. - [teiqr — QR codes you can prove are scannable](https://teispace.com/resources/blog/teiqr-1-0): A new package, published to npm. Spec-conformant encoding, styled rendering, and a verification step that tells you whether the code you styled still reads. - [Architecting large-scale Next.js applications: Server Components, caching and state](https://teispace.com/resources/blog/architecting-large-scale-nextjs-applications): How to structure a Next.js App Router codebase that stays fast as it grows — where the client boundary belongs, what Server Components actually cost, which caching layer answers which question, and the state patterns that survive a hundred routes. - [The cost of JavaScript: what a 100/100 Lighthouse score actually requires](https://teispace.com/resources/blog/the-cost-of-javascript-lighthouse-100): A framework floor you cannot budget below, four techniques that move the number, and the measurement discipline that keeps it there. Written from a site that scores 100/100/100/100 with zero route-level JavaScript. - [Bridging Figma and code: a design system built on tokens and Tailwind](https://teispace.com/resources/blog/design-tokens-figma-to-tailwind): Three token layers, one configuration knob for a whole colour ramp, and contrast ratios computed by a test rather than typed into a comment — how to build a design system where the code and the design file cannot drift apart. - [Web accessibility as a competitive advantage: an engineering checklist](https://teispace.com/resources/blog/wcag-as-an-engineering-checklist): The accessibility defects an automated suite finds, the ones it structurally cannot, and eleven real failures from one build — what caused each, and the check that now prevents it. - [Beyond the wrapper: building resilient multi-agent AI workflows in production](https://teispace.com/resources/blog/beyond-the-wrapper-multi-agent-ai-workflows): What separates a demo from a system that runs unattended — a policy boundary written before anything executes, idempotent tools, bounded loops, and a failure model that assumes the model will be wrong. - [Building a production RAG pipeline: the latency, cost and accuracy trade-offs](https://teispace.com/resources/blog/production-rag-pipeline-tradeoffs): Every decision in a retrieval pipeline trades one of three things against the other two. Here is where each trade sits — chunking, hybrid retrieval, reranking, caching — and how to tell which one your system is actually losing. - [PostgreSQL with pgvector or a dedicated vector database: how to choose](https://teispace.com/resources/blog/pgvector-vs-dedicated-vector-databases): A decision guide rather than a benchmark — what each option actually costs you in operations, consistency and query power, the scale at which the answer flips, and the honest test to run on your own data. - [Why we build modular monoliths first, and when we actually split](https://teispace.com/resources/blog/modular-monolith-before-microservices): Microservices solve an organisational problem and charge you a distributed-systems bill for it. Here is how to get the modularity without the network, and the four specific signals that mean it is genuinely time to split. - [Interaction to Next Paint: what actually moves it, and what only looks like it does](https://teispace.com/resources/blog/inp-what-actually-moves-it): INP measures three things and most advice only addresses one of them. A breakdown of input delay, processing and presentation delay — with the fixes that move each, and the popular optimisations that move none. - [From commit to production: a CI/CD blueprint that stays fast as it grows](https://teispace.com/resources/blog/high-velocity-cicd-blueprint): The pipeline shape that keeps deploys boring — one build artefact promoted rather than rebuilt, gates ordered by how fast they fail, and a rollback that is a routing change rather than a redeploy. - [Hardening the deployment pipeline: supply chain, secrets, containers and the edge](https://teispace.com/resources/blog/hardening-the-deployment-pipeline): Where a pipeline is actually attacked, in order of likelihood — and the specific GitHub Actions and AWS controls that close each one, including the permission default almost every repository gets wrong. - [Infrastructure as code in practice: structuring Terraform for a team that is growing](https://teispace.com/resources/blog/modular-terraform-for-growing-teams): The layout that survives a second environment and a third engineer — what belongs in a module and what does not, why state boundaries matter more than folder structure, and the review discipline that stops a plan being rubber-stamped. - [React Native or Flutter: a decision framework, not a benchmark](https://teispace.com/resources/blog/react-native-vs-flutter-how-to-choose): Both are fast enough for almost every product. The decision is made on hiring, native integration depth, UI fidelity and long-term maintenance — with a checklist for testing your own case in a week rather than trusting somebody else's numbers. - [Offline-first mobile: local SQLite, sync, and resolving conflicts honestly](https://teispace.com/resources/blog/offline-first-mobile-architecture): Designing for a connection that comes and goes — a local database as the source of truth, an outbox that survives a crash, and the conflict resolution strategies that do not quietly lose somebody's work. - [Writing npm packages people can depend on: exports, tree-shaking and release flow](https://teispace.com/resources/blog/writing-enterprise-grade-npm-packages): What separates a package that is safe to add from one that is a liability — an exports map that does not break anyone, tree-shaking you have measured rather than assumed, and a release process where the changelog cannot lie. - [Dark mode without the flash: theming across Next.js, React Native and mobile web](https://teispace.com/resources/blog/dark-mode-done-right): The flash of the wrong theme is a timing problem, not a styling one. How to make the first paint correct on the server, keep it correct across platforms, and avoid the four traps that make a dark theme look broken. - [The TypeScript monorepo playbook: workspaces, project references and release flow](https://teispace.com/resources/blog/typescript-monorepo-playbook): When a monorepo earns its keep and when it is overhead, the two build-graph decisions that determine whether it stays fast, and the versioning choice that decides how painful releases are. - [Event-driven backends in Node: outbox, idempotency and the failures worth designing for](https://teispace.com/resources/blog/event-driven-backends-nodejs): A queue does not make a system resilient by itself. The transactional outbox, idempotent consumers, ordering that is only guaranteed where you need it, and a dead letter queue somebody actually looks at. - [Moving a legacy application to AWS without downtime: a sequencing guide](https://teispace.com/resources/blog/monolith-to-aws-migration-guide): The order of operations that keeps a migration reversible at every step — what to move first, why the database goes last, and the cost lines that surprise teams after the cutover. - [Semantic caching for AI applications: what to cache, and what it costs you when wrong](https://teispace.com/resources/blog/semantic-caching-for-ai-applications): Four cache layers in front of a language model, the similarity threshold that decides whether a cache is helpful or dangerous, and the invalidation problem nobody mentions. - [Micro-frontends or a modular monolith: which one your product actually needs](https://teispace.com/resources/blog/micro-frontends-vs-modular-monolith): Micro-frontends solve an organisational problem and charge a runtime bill for it. The three conditions that justify them, the four costs nobody budgets, and how to get the independence without the runtime cost. - [Building developer tooling for mobile: what 100,000 installs taught us](https://teispace.com/resources/blog/mobile-first-developer-tooling): Notes from publishing a reference app for a terminal environment on Android — why a niche developer audience behaves differently, what retention actually measures for a reference tool, and how we decided to stop developing it. - [The business case for a rebuild: how to tell a real one from an expensive redecoration](https://teispace.com/resources/blog/the-business-case-for-modern-ui-ux): Four questions that decide whether a redesign will move anything, the metrics worth committing to before you start, and the failure mode where a site gets prettier and converts worse. ## Notes for anyone quoting this site - Every technical claim here describes work we have done. Where we have not measured something, the page says so rather than estimating. - We do not publish team size, client names we have not been cleared to name, or benchmark figures we have not run ourselves. - Commercial terms on the service pages are indicative and marked as such.