Independent software contractor

Viewport Solutions

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.

  • ✓ One developer — direct hire
  • ✓ Stripe invoice, no card on site
  • ✓ PRs in your repo
  • Vue
  • Nuxt
  • Rails
  • LiveView
  • Ruby
  • JavaScript
  • Tailwind

app / overview

Nuxt
Dashboard

Overview

Live
Revenue$128,402+12.4%
Accounts1,248
Sessions8.4k
Nuxt dashboard
LiveView sync
Rails API

Direct hire

You work with the developer who scopes, builds, and ships — not an account manager.

Scope before payment

Deliverables and price agreed in writing before any Stripe invoice is sent.

Your repo & stack

Vue, Nuxt, Rails, or LiveView — work merged as pull requests in your codebase.

Straightforward billing

Stripe invoice in USD. Payment on Stripe’s hosted page — never on this website.

Who I work with

Built for people shipping real products.

Indie founders

You are shipping an MVP or early product and need a dashboard or admin that looks and behaves like part of your app.

Solo operators

You run a small product yourself and need internals improved without hiring a full-time team or agency.

Side projects

You have a Vue, Nuxt, or Rails codebase that needs a focused fix or small feature, not a rewrite.

Existing products

You have paying users and need production issues resolved under a clear, written scope.

Work

What Viewport ships.

Dashboards, admin panels, and production fixes — scoped, built, and merged in your repo.

Dashboards

Metrics, filters, exports, and live totals — built in Nuxt or LiveView and connected to your real data sources.

Nuxt Phoenix LiveView JavaScript

Admin

User accounts, roles, settings, and internal CRUD that matches the rest of your product instead of feeling bolted on.

Vue Rails Tailwind

Fixes

Production bugs, regressions, and small features — scoped in writing, implemented in your repository, merged when approved.

Ruby JavaScript CSS

Capabilities

Internals I build every week.

Data tables & filters

Sortable columns, search, pagination, CSV export, loading and empty states.

Role-based admin

Permissions, audit-friendly actions, and settings screens aligned with your product.

Charts & KPIs

Line, bar, and summary metrics wired to your API, database, or LiveView streams.

Forms & workflows

Multi-step flows, validation, error handling, and autosave where appropriate.

API & backend work

Rails or Phoenix endpoints, background jobs, and webhooks that support the UI.

Production fixes

Regressions, edge cases, and performance issues — reproduced, fixed, and verified.

Deliverables

What you get every engagement.

  • Written scope before any payment is requested
  • Stripe invoice with descriptive line items in USD
  • Source code delivered via your Git repository (e.g. GitHub)
  • UI that respects your existing patterns and design system
  • Automated tests updated where your project already uses them
  • Handoff notes; optional walkthrough recording when helpful
Request a quote

scope.ts

TypeScript
// scope: admin users module
export async function
 
shipDashboard
() {
  const
 scope = 
'filters + export + roles'
;
  await
 invoice.send(
'stripe'
);
  return
 mergePR(scope);
}
Written scopeStripe invoicePR in your repo

Example work

Typical project scopes.

Illustrative examples of work I take on — replace with your real case studies in site.config.ts when ready.

Example scopeNuxt · Charts

Subscription analytics dashboard

Example scope: revenue summary, cohort views, filters, and CSV export for a web app with an existing API.

Nuxt JavaScript Tailwind
Example scopeRails · Vue

Customer admin module

Example scope: search users, view plans, apply credits, and internal notes — behind staff authentication.

Rails Vue Tailwind
Example scopePhoenix LiveView

Live operations panel

Example scope: live queue, status transitions, and operator actions without full page reloads.

LiveView Ruby
Example scopeBug fix · Ship

Production fix sprint

Example scope: checkout error, broken mobile layout, and missing validation — fixed and merged within an agreed window.

Ruby JavaScript

Process

From brief to shipped.

Four clear steps — scope agreed, work in your repo, delivered when it’s done.

01

Brief

You describe the problem, repo, and constraints. We identify a slice that can ship in one engagement.

02

Scope & invoice

I send a written scope (email or doc). After you accept, Stripe emails an invoice with line items and due date.

03

Build

I implement in your stack — Vue, Nuxt, Rails, or LiveView — with updates in your preferred channel.

04

Ship

Work is delivered via pull request, deploy, or handoff notes. The engagement ends when the agreed scope is complete.

Why solo

Direct hire vs. agency overhead.

Work with Viewport

  • You communicate directly with the person writing code
  • Written scope and price before any Stripe invoice
  • Work happens in your repository and stack
  • No sales team, account managers, or handoffs
  • Billing is a single Stripe invoice per agreed scope

Typical agency

  • Initial contact may not be the person doing the work
  • Scope and cost often shift after engagement starts
  • Work may happen in a separate codebase or slow PR cycle
  • Multiple contacts and slower turnaround
  • Change orders and opaque hourly billing are common

Stack

Your repo. My weekly tools.

VueInterfaces & components
NuxtApp shells & dashboards
RailsAPIs, models, jobs
LiveViewRealtime UI
RubyBackend logic
JavaScriptCharts & editors
TailwindLayout & polish

Toolbox

Tools in the workflow.

Version control, databases, containers, and build tooling — the infrastructure around your product. Invoicing is separate; see the billing page.

GitHub
Git
PostgreSQL
Docker
Vite
Redis

What you get

Every engagement is structured the same way.

Clear scope before payment

You know what will be built, what “done” means, and what you will pay — before Stripe sends an invoice.

Work in your repo

Deliverables land where your team already works: pull requests, your CI, your deploy process.

Supportable billing

Invoice line items describe the service period or deliverable. Questions go to one email address.

Pricing

Quoted per project. Invoiced through Stripe.

No checkout on this site. Every engagement gets a written scope and a Stripe invoice in USD before work begins.

Hourly / discovery

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.

  • Written estimate before work
  • Invoice per agreed block
  • Suitable for unclear scope

Monthly retainer

Monthly agreement

Reserved capacity for ongoing internals work — admin improvements, small features, and production support — invoiced monthly through Stripe.

  • Reserved hours per month
  • Priority response
  • Recurring Stripe invoice

Get started

Tell me what you need built.

Project type, budget, timeline — pick from the form and I’ll reply with a scope.

Open contact form

About

Who you're hiring.

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

Questions clients and Stripe reviewers ask.

What exactly do you sell on this website?

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.

Who is the service provider?

A single independent developer operating as Viewport Solutions. You hire one person directly — not a corporation, agency, or marketplace.

Who do you work with?

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.

How is pricing determined?

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.

How do I pay?

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.

When does work start?

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.

What is your refund policy?

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.

How do I get support or dispute a charge?

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.

Where is customer service located?

Support is provided remotely by email. Typical response time is one to two business days.

Do you store my payment information?

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.

Billing

Viewport Solutions invoices through Stripe.

contact@viewportsolutions.com

Available for new projectsReply within 1–2 business days