New product
From a sharp brief to a launched application, including the accounts, empty states, and release path.
Software Engineering
TypeScript platforms, Rust services, desktop and mobile apps, and bespoke SaaS — for companies that need the product and the market around it to move together.
Ink, Inc. is a Brooklyn studio. The marketing practice is still the work many clients hire first. Software engineering is the same studio building the product itself: the application, the mobile client, the desktop tool, the API other systems call.
We pick a stack because it fits the job, then we stay inside it. A web product does not become a Rust rewrite, and a phone app does not become a responsive site, unless that is the decision we wrote down with you.
Marketing — strategy, content, and campaigns — stays its own practice. See agency services.
Practices
Eight practices, one studio. Open a practice for the stack, the deliverables, and when a neighboring one is the better fit.
Choosing a surface
The practice pages go deeper. This is the short version we use in a first conversation.
| Surface | Practice | Choose it when |
|---|---|---|
| Web product | TypeScript | The product is a URL, and the team should share one language. |
| Services and cores | Rust | Speed, concurrency, or a small native core is the requirement. |
| Desktop | Tauri | People work with local files, devices, or an installer. |
| Mobile, TypeScript | Expo | Both app stores, one TypeScript codebase. |
| Mobile, native | Swift & Kotlin | The platform UI and APIs are the feature. |
| Mobile, Dart | Flutter | One drawn interface should match on every device. |
| Multi-tenant product | Bespoke SaaS | You sell accounts, roles, and plans on shared infrastructure. |
| Integrations | APIs & platforms | Other software has to call you, or your systems must sync. |
Engagements
From a sharp brief to a launched application, including the accounts, empty states, and release path.
Senior engineers inside a team you already have, working in the repository and the rituals you use.
Replace a fragile slice of the stack without pausing the business the old system still runs.
Releases, fixes, and measured changes after launch, on a cadence you can plan around.
How an engagement runs
Goals, users, constraints, and the systems that already exist. We leave with a written scope, not a slide.
Stack, boundaries, and a delivery plan. The choice of TypeScript, Rust, Tauri, Expo, native, or Flutter is made here.
Working increments in your repository, with previews you can click before a milestone is called done.
Release, watch the errors, and change what the product taught you. Care is a phase, not a leftover.
Questions
Start from the surface people use. A URL points to TypeScript. A phone points to Expo, Flutter, or native, depending on whether you want one TypeScript app, one drawn UI, or two platform clients. A desktop tool points to Tauri. A service that has to be fast or strict points to Rust. SaaS and APIs describe the shape of the product, and they usually sit on TypeScript with Rust where a worker earns it. The practice pages say when to switch.
Yes. Embedded engineering and modernization are normal engagements. We read the repository before we propose a rewrite. Replacing a working system is a decision with a cost, and we will say so.
No. New products are one of four ways we work, next to joining your team, replacing a fragile slice, and caring for something already in production.
They are separate practices that can share a client. Marketing covers strategy, content, and campaigns. Engineering builds the software. When you want one studio accountable for the product and the market around it, we plan them together instead of handing you off.
The studio is in Brooklyn. Engineering engagements are remote-friendly, with working sessions as the project needs them. The repository, previews, and issue tracker live where your team already works.
A practice, a codebase, or a rough brief is enough to start.
Tell us what you are building, what already exists, and which surface matters first. We will reply with a point of view.