← All work

Client software engineering

Client platform

One place for customer requests, operations, and billing reports.

Custom software for a client

Application development · AWS infrastructure · Reporting

Scroll across to explore the interface.

View full-size screenshot →
An anonymized customer portal branded Northline, showing sample request counts, status summaries, and recent activity.
Real client identity withheld. The working interface is shown with illustrative Northline branding and sample data.

The interface

A shared view of requests and progress.

A customer portal and staff workspace share the same application, with scoped permissions, request workflows, documents, and reporting. Built for the day-to-day work of a service business.

The portal gives customers a place to see their requests and reporting. Staff work from the same underlying records, with the tools to manage the queue and keep progress visible.

A request through the platform

The request record connects customer intake, staff work, status changes, and follow-up in one system.

  1. CustomerSubmit a request
  2. ApplicationValidate + scope access
  3. StaffAssign + work the request
  4. CustomerView updates and results

System architecture

The application and its infrastructure.

Selected application and integration paths
Client operations platform architectureCustomer and staff interfaces connect to a Next.js application behind an AWS load balancer on ECS Fargate. The application uses RDS PostgreSQL, S3 and KMS. An external billing data source supplies reporting imports, EventBridge and Lambda trigger notification sweeps, and Resend delivers email. Requests Operations Import Email Trigger Customer portalSubmit requestsTrack status and reports Staff workspaceTriage, assign and resolveManage customer accounts Next.js applicationReact / Auth.js / DrizzlePermissions & workflow logicRequests, documents & reportsAWS ALB → ECS Fargate Billing data sourceRead-only import ResendSign-in & notification email EventBridge + LambdaScheduled notification sweeps Amazon RDSPostgreSQL application records Amazon S3Document storage AWS KMSField encryption keys INFRASTRUCTURE AS CODEAWS CDK · Containerized application · Separate development and production stacks

Customer and staff views connect to one application, with separate services for records, documents, reporting imports, and notifications.

Providers and responsibilities
  1. Customer and staff interfaces

    Customers submit requests and view progress. Staff triage, assign, and manage the work.

  2. Next.js · AWS ECS Fargate

    A containerized React application uses Auth.js and Drizzle, with an AWS application load balancer handling web traffic.

  3. Amazon RDS, S3, and KMS

    PostgreSQL stores application records, S3 stores documents, and KMS supports field encryption.

  4. Billing data source

    A read-only integration imports billing summaries for the reporting views.

  5. EventBridge + Lambda

    Scheduled jobs trigger notification sweeps in the application.

  6. Resend

    Email delivers sign-in links and notifications.

The containerized application runs on AWS ECS Fargate behind a load balancer. Application records, documents, and encryption keys use separate AWS services. Reporting imports and notification jobs connect through the application.View the full diagram →

Engineering decisions

Built around the work and who can do it.

Scope access to the customer.

Server-side checks combine the current customer context, session identity, and specific capabilities. Customer and staff views share the system while exposing the records and actions appropriate to each user.

Keep different kinds of data distinct.

Transactional records live in PostgreSQL, documents in S3, and reporting summaries arrive through a read-only import. KMS supports encryption for selected fields. Each part has a clear job in the application.

Make infrastructure repeatable.

AWS CDK defines the infrastructure, with separate development and production stacks. The application ships as a Docker container, so deployment configuration and application code can be maintained together.

Contact

What would you like to build or improve?

hello@outermost.us