Direct hire
You work with the developer who scopes, builds, and ships — not an account manager.
Independent software contractor
builds product internals — dashboards, admin, and production fixes in Vue, Nuxt, Rails & LiveView.
You hire one developer directly. Scope is agreed in writing. Payment is by Stripe invoice in USD — this website never collects card numbers.
You work with the developer who scopes, builds, and ships — not an account manager.
Deliverables and price agreed in writing before any Stripe invoice is sent.
Vue, Nuxt, Rails, or LiveView — work merged as pull requests in your codebase.
Stripe invoice in USD. Payment on Stripe’s hosted page — never on this website.
Who I work with
You are shipping an MVP or early product and need a dashboard or admin that looks and behaves like part of your app.
You run a small product yourself and need internals improved without hiring a full-time team or agency.
You have a Vue, Nuxt, or Rails codebase that needs a focused fix or small feature, not a rewrite.
You have paying users and need production issues resolved under a clear, written scope.
Work
Dashboards, admin panels, and production fixes — scoped, built, and merged in your repo.
Metrics, filters, exports, and live totals — built in Nuxt or LiveView and connected to your real data sources.
User accounts, roles, settings, and internal CRUD that matches the rest of your product instead of feeling bolted on.
Production bugs, regressions, and small features — scoped in writing, implemented in your repository, merged when approved.
Capabilities
Sortable columns, search, pagination, CSV export, loading and empty states.
Permissions, audit-friendly actions, and settings screens aligned with your product.
Line, bar, and summary metrics wired to your API, database, or LiveView streams.
Multi-step flows, validation, error handling, and autosave where appropriate.
Rails or Phoenix endpoints, background jobs, and webhooks that support the UI.
Regressions, edge cases, and performance issues — reproduced, fixed, and verified.
Deliverables
// scope: admin users module
export async function
shipDashboard
() {
const
scope =
'filters + export + roles'
;
await
invoice.send(
'stripe'
);
return
mergePR(scope);
}
Example work
Illustrative examples of work I take on — replace with your real case studies in site.config.ts when ready.
Example scope: revenue summary, cohort views, filters, and CSV export for a web app with an existing API.
Example scope: search users, view plans, apply credits, and internal notes — behind staff authentication.
Example scope: live queue, status transitions, and operator actions without full page reloads.
Example scope: checkout error, broken mobile layout, and missing validation — fixed and merged within an agreed window.
Process
Four clear steps — scope agreed, work in your repo, delivered when it’s done.
You describe the problem, repo, and constraints. We identify a slice that can ship in one engagement.
I send a written scope (email or doc). After you accept, Stripe emails an invoice with line items and due date.
I implement in your stack — Vue, Nuxt, Rails, or LiveView — with updates in your preferred channel.
Work is delivered via pull request, deploy, or handoff notes. The engagement ends when the agreed scope is complete.
Why solo
Stack
Toolbox
Version control, databases, containers, and build tooling — the infrastructure around your product. Invoicing is separate; see the billing page.
What you get
You know what will be built, what “done” means, and what you will pay — before Stripe sends an invoice.
Deliverables land where your team already works: pull requests, your CI, your deploy process.
Invoice line items describe the service period or deliverable. Questions go to one email address.
Pricing
No checkout on this site. Every engagement gets a written scope and a Stripe invoice in USD before work begins.
Quoted per engagement
For audits, spikes, or work where requirements may change. Billed in agreed time blocks with a written estimate before the first invoice.
Quoted per scope
A single dashboard, admin module, or production fix with a defined “done” state. Price and deliverables are fixed before any invoice is sent.
Monthly agreement
Reserved capacity for ongoing internals work — admin improvements, small features, and production support — invoiced monthly through Stripe.
About
Viewport Solutions is an independent software contractor. I provide custom software development services to clients who hire me directly: dashboards, admin interfaces, internal tools, and production fixes in existing codebases. Work is performed remotely on a per-project contract basis. Each engagement is quoted individually; payment is requested only through a Stripe invoice sent by email after scope is agreed in writing.
You hire one person directly — not an agency, not a marketplace, not a hosted SaaS product. Scope and price are agreed in writing before any Stripe invoice is sent. Deliverables are code and configuration in your environment, as described on the billing page and in the terms of service.
FAQ
Custom software development services only — not a hosted product, subscription plan, or digital download. Typical work includes dashboards, admin interfaces, internal tools, and production fixes inside an existing application. Each job is quoted individually based on scope.
A single independent developer operating as Viewport Solutions. You hire one person directly — not a corporation, agency, or marketplace.
Individuals and small teams who hire me directly — founders, indie builders, and operators with an existing product or codebase. I do not sell enterprise packages or resell third-party software.
Every engagement is priced after scope is understood. You receive a written description of deliverables and a Stripe invoice in USD with line items, total amount, and due date. There is no shopping cart or automatic checkout on this website.
Stripe emails an invoice with a secure payment link. You enter payment details on Stripe’s hosted page. This website does not collect or store card numbers, CVV codes, or bank details.
Unless otherwise agreed in writing, work begins after the invoice is paid or after any deposit specified on the invoice is received. The scope email or invoice states the start condition.
If you paid but work has not started, you may request a full refund within 48 hours of payment. Unused prepaid hours on retainer engagements may be refunded pro-rata. Completed work delivered per the agreed scope is not refundable. See the Refund & Cancellation Policy for full terms.
Email the address on the Contact page for billing questions, scope clarifications, or delivery concerns. Please contact me before opening a bank or card dispute so we can resolve the issue directly.
Support is provided remotely by email. Typical response time is one to two business days.
No. Payment card data is handled entirely by Stripe. I receive payment status and billing contact information needed for invoices and tax records, not full card numbers.