Focused primitives and tools for the web.
Open-source browser primitives, React interaction libraries, runtime utilities and developer tooling.
We build small, focused software for problems that tend to be deceptively difficult.
The goal is not to create another framework or ecosystem that everything has to depend on.
Instead, each project should:
- solve one problem well;
- remain independently installable;
- have a clear ownership boundary;
- expose a deliberate API;
- work well with the surrounding ecosystem;
- document its limitations honestly;
- be useful without requiring the rest of the NIPE stack.
Build the primitive once, then stop solving the same problem everywhere else.
Accessible React bottom sheets with snap points, gesture and scroll coordination, focus management and interruption-safe motion.
Composable swipe-reveal actions for React rows with measured action regions, RTL support, keyboard interaction and optional full-swipe behavior.
Position floating React content relative to an anchor through portals, scrolling, resizing and layout changes without owning popup semantics.
Pull-to-refresh mechanics with explicit scroll ownership, resistance, thresholds and an application-controlled async lifecycle.
Drag-to-dismiss mechanics for arbitrary React content with intent detection, resistance, velocity-aware settling and composable state.
Reliable caret coordinates for inputs, textareas and editable DOM, including observation and virtual references for positioning engines.
Reactive browser geometry for React logic, including VisualViewport state, offsets, zoom, safe areas and conservative keyboard occlusion.
If CSS solves it, don't install React Viewport.
Deeply readonly, lazy and live views over owner-controlled mutable JavaScript data.
Review-first migration tooling for moving applications away from deprecated Angular Flex Layout towards regular CSS and modern styling approaches.
A self-hosted civic information layer that turns public municipal information into structured, source-backed data with time, place and provenance.
Traiskirchen, Austria is the first real-world installation.
An experimental local-first mobile web debugging environment for inspecting real devices from the desktop without depending on a cloud device platform.
A few principles show up repeatedly across our projects:
Prefer explicit ownership over hidden behavior.
Prefer composition over framework lock-in.
Prefer evidence over assumptions.
Prefer stable primitives over feature accumulation.
Prefer boring correctness over clever abstractions.
Prefer source-backed data over inferred certainty.
Prefer clear limitations over pretending every edge case is solved.
We are especially interested in the edges of the platform where otherwise simple abstractions start breaking down:
browser geometry
touch and pointer interaction
scroll coordination
DOM selection and caret behavior
runtime boundaries
migration tooling
structured data
distributed systems
developer workflows
NIPE Open Source is not intended to become a monolithic framework.
There is deliberately no required shared runtime or universal @nipe-solutions/core.
Each project owns its:
- API;
- types;
- documentation;
- release cycle;
- compatibility guarantees;
- implementation decisions.
Shared infrastructure is introduced only when real duplication justifies it.
Depending on the project, we place particular emphasis on:
- strict TypeScript;
- accessible interaction;
- browser edge cases;
- SSR behavior;
- RTL support;
- deterministic state machines;
- source and fixture-based tests;
- real-device testing;
- explicit failure semantics;
- documentation that explains both the happy path and the limits.
The easiest way to browse the collection is:
Each project has its own documentation, examples, repository and release lifecycle.
NIPE Solutions is a software engineering company focused on product development, distributed systems, data platforms, web applications and infrastructure.
Some of the tools here started as solutions to problems encountered while building production software.
Others exist simply because the abstraction we wanted did not quite exist yet.
Focused primitives and tools for the web.